/** * Write the {@link BusinessArchive} to the folder given in parameter * <p> * the written business archive the uncompressed version of {@link #writeBusinessArchiveToFile(BusinessArchive, File)} * * @param businessArchive * the {@link BusinessArchive} to write * @param folderPath * the folder into the business archive must be written * @throws IOException */ public static void writeBusinessArchiveToFolder(final BusinessArchive businessArchive, final File folderPath) throws IOException { INSTANCE.writeBusinessArchiveToFolder(businessArchive, folderPath, contributions); }
/** * Write the {@link BusinessArchive} to the folder given in parameter * <p> * the written business archive the uncompressed version of {@link #writeBusinessArchiveToFile(BusinessArchive, File)} * * @param businessArchive * the {@link BusinessArchive} to write * @param folderPath * the folder into the business archive must be written * @throws IOException */ public static void writeBusinessArchiveToFolder(final BusinessArchive businessArchive, final File folderPath) throws IOException { INSTANCE.writeBusinessArchiveToFolder(businessArchive, folderPath, contributions); }
protected void writeBusinessArchiveToFile(final BusinessArchive businessArchive, final File businessArchiveFile, List<BusinessArchiveContribution> contributions) throws IOException { final File tempFile = File.createTempFile("tempBarFolder", null); tempFile.delete(); tempFile.mkdir(); try { writeBusinessArchiveToFolder(businessArchive, tempFile); zipBarFolder(businessArchiveFile, tempFile); } finally { IOUtil.deleteDir(tempFile); } }
protected void writeBusinessArchiveToFile(final BusinessArchive businessArchive, final File businessArchiveFile, List<BusinessArchiveContribution> contributions) throws IOException { final File tempFile = File.createTempFile("tempBarFolder", null); tempFile.delete(); tempFile.mkdir(); try { writeBusinessArchiveToFolder(businessArchive, tempFile); zipBarFolder(businessArchiveFile, tempFile); } finally { IOUtil.deleteDir(tempFile); } }
@Test(expected = InvalidBusinessArchiveFormatException.class) public void readInvalidBusinessArchive() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); final File file = getFile(ProcessDefinitionBARContribution.PROCESS_DEFINITION_XML); file.delete(); file.createNewFile(); final FileWriter fileWriter = new FileWriter(file); fileWriter.write("test"); fileWriter.flush(); fileWriter.close(); BusinessArchiveFactory.readBusinessArchive(tempFolder); }
@Test public void createBusinessArchiveFolder() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); assertTrue(tempFolder.exists()); assertTrue(tempFolder.isDirectory()); final File file = getFile(ProcessDefinitionBARContribution.PROCESS_DEFINITION_XML); assertTrue(file.exists()); assertFalse(file.isDirectory()); }
@Test public void createBusinessArchiveFileFromFolder() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); BusinessArchiveFactory.businessArchiveFolderToFile(barFile, tempFolder.getAbsolutePath()); assertTrue(barFile.exists()); final InputStream inputStream = new FileInputStream(barFile); final BusinessArchive businessArchive2; try { businessArchive2 = BusinessArchiveFactory.readBusinessArchive(inputStream); } finally { inputStream.close(); } final ProcessDefinition result = businessArchive2.getProcessDefinition(); assertEquals(process, result); }
@Test(expected = InvalidBusinessArchiveFormatException.class) public void barWithNoHashIsRejected() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyBOSProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); final File infoFile = getFile(ProcessDefinitionBARContribution.PROCESS_INFOS_FILE); infoFile.delete(); BusinessArchiveFactory.readBusinessArchive(tempFolder); }
@Test public void createBusinessArchiveFromFile() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); BusinessArchiveFactory.businessArchiveFolderToFile(barFile, tempFolder.getAbsolutePath()); assertTrue(barFile.exists()); final BusinessArchive businessArchive2 = BusinessArchiveFactory.readBusinessArchive(barFile); final ProcessDefinition result = businessArchive2.getProcessDefinition(); assertEquals(process, result); }
@Test(expected = InvalidBusinessArchiveFormatException.class) public void invalidBOSHashIsRejected() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyBOSProcess", "1.0"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); final File infoFile = getFile(ProcessDefinitionBARContribution.PROCESS_INFOS_FILE); IOUtil.writeContentToFile("bad process infos", infoFile); BusinessArchiveFactory.readBusinessArchive(tempFolder); }
@Test(expected = InvalidBusinessArchiveFormatException.class) public void readInvalidProcessFromBusinessArchive() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); processDefinitionBuilder.addActor("Truck Driver").addDescription("A man that is driving bigs trucks"); processDefinitionBuilder.addStartEvent("start1"); processDefinitionBuilder.addAutomaticTask("auto1").addConnector("conn1", "connId1", "1.0.0", ConnectorEvent.ON_FINISH); processDefinitionBuilder.addUserTask("user1", "Truck Driver").addConnector("conn2", "connId2", "1.0.0", ConnectorEvent.ON_ENTER); processDefinitionBuilder.addGateway("gate1", GatewayType.INCLUSIVE).addDefaultTransition("user1"); processDefinitionBuilder.addEndEvent("end1"); processDefinitionBuilder.addTransition("start1", "auto1"); processDefinitionBuilder.addTransition("auto1", "user1"); processDefinitionBuilder.addTransition("user1", "gate1"); processDefinitionBuilder.addTransition("user1", "end1"); processDefinitionBuilder.addConnector("conn3", "connId3", "1.0.0", ConnectorEvent.ON_FINISH); processDefinitionBuilder.addParameter("myParam", String.class.getName()).addDescription("an important parameter"); final DesignProcessDefinition process = processDefinitionBuilder.done(); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(process).done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); final File file = getFile(ProcessDefinitionBARContribution.PROCESS_DEFINITION_XML); String fileContent = IOUtil.read(file); fileContent = fileContent.replace("<tns:processDefinition", "<tns:pro_cessDefinition"); fileContent = fileContent.replace("</tns:processDefinition", "</tns:pro_cessDefinition"); file.delete(); file.createNewFile(); IOUtil.writeContentToFile(fileContent, file); BusinessArchiveFactory.readBusinessArchive(tempFolder); }
@Test(expected = InvalidBusinessArchiveFormatException.class) public void readInvalidXMLProcessFromBusinessArchive() throws Exception { final ProcessDefinitionBuilder processDefinitionBuilder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0"); processDefinitionBuilder.addActor("Truck Driver").addDescription("A man that is driving bigs trucks"); processDefinitionBuilder.addStartEvent("start1"); processDefinitionBuilder.addAutomaticTask("auto1").addConnector("conn1", "connId1", "1.0.0", ConnectorEvent.ON_FINISH); processDefinitionBuilder.addUserTask("user1", "Truck Driver").addConnector("conn2", "connId2", "1.0.0", ConnectorEvent.ON_ENTER); processDefinitionBuilder.addGateway("gate1", GatewayType.INCLUSIVE).addDefaultTransition("user1"); processDefinitionBuilder.addEndEvent("end1"); processDefinitionBuilder.addTransition("start1", "auto1"); processDefinitionBuilder.addTransition("auto1", "user1"); processDefinitionBuilder.addTransition("user1", "gate1"); processDefinitionBuilder.addTransition("user1", "end1"); processDefinitionBuilder.addConnector("conn3", "connId3", "1.0.0", ConnectorEvent.ON_FINISH); processDefinitionBuilder.addParameter("myParam", String.class.getName()).addDescription("an important parameter"); final BusinessArchive businessArchive = new BusinessArchiveBuilder().createNewBusinessArchive().setProcessDefinition(processDefinitionBuilder.done()) .done(); BusinessArchiveFactory.writeBusinessArchiveToFolder(businessArchive, tempFolder); final File file = getFile(ProcessDefinitionBARContribution.PROCESS_DEFINITION_XML); String fileContent = IOUtil.read(file); fileContent = fileContent.replace("<tns:processDefinition", "<tns:pro_typo_cessDefinition"); file.delete(); file.createNewFile(); IOUtil.writeContentToFile(fileContent, file); BusinessArchiveFactory.readBusinessArchive(tempFolder); }