/** * Equivalent to {@link #getAllContentFrom(InputStream) getAllContentFrom(new * FileInputStream(file))}; * * @param file the file to read * @return the whole content of the file in a single String. * @throws IOException If an I/O exception occurs */ public static byte[] getAllContentFrom(final File file) throws IOException { try (InputStream in = new FileInputStream(file)) { return getAllContentFrom(in); } }
/** * Read the contents of the given file. * * @param file the file to read */ public static String read(final File file) throws IOException { try (FileInputStream fileInputStream = new FileInputStream(file)) { return read(fileInputStream); } }
private void zipBarFolder(final File businessArchiveFile, final File folder) throws IOException { // create a ZipOutputStream to zip the data to if (businessArchiveFile.exists()) { throw new IOException("The destination file already exists " + businessArchiveFile.getAbsolutePath()); } final FileOutputStream fileOutput = new FileOutputStream(businessArchiveFile); try (ZipOutputStream zos = new ZipOutputStream(fileOutput)) { IOUtil.zipDir(folder.getAbsolutePath(), zos, folder.getAbsolutePath()); } finally { fileOutput.close(); } }
public static byte[] generateJar(final Class<?>... classes) throws IOException { return generateJar(getResources(classes)); }
public static boolean deleteDir(final File dir, final int attempts, final long sleepTime) throws IOException { if (dir != null) { boolean result = true; if (!dir.exists()) { return true; //already deleted } if (!dir.isDirectory()) { throw new IOException("Unable to delete directory: " + dir + ", it is not a directory"); } for (final File file : dir.listFiles()) { if (file.isDirectory()) { result &= deleteDir(file, attempts, sleepTime); } else { result &= deleteFile(file, attempts, sleepTime); } } return result && deleteFile(dir, attempts, sleepTime); } return false; }
String fieldName = item.getFieldName(); if (fieldName.startsWith(BINARY_PARAMETER)) { binaryParameters.add(IOUtil.getAllContentFrom(stream)); } else { String read = IOUtil.read(stream); parameters.put(fieldName, read);
@Override public void saveToBarFolder(final BusinessArchive businessArchive, final File barFolder) throws IOException { final File externalResourceFolder = new File(barFolder, EXTERNAL_RESOURCE_FOLDER); externalResourceFolder.mkdir(); final int beginIndex = EXTERNAL_RESOURCE_FOLDER.length(); final Map<String, byte[]> resources = businessArchive.getResources("^" + EXTERNAL_RESOURCE_FOLDER + "/.*$"); for (final Entry<String, byte[]> entry : resources.entrySet()) { final File fullPathFile = new File(externalResourceFolder, entry.getKey().substring(beginIndex)); fullPathFile.getParentFile().mkdirs(); IOUtil.write(fullPathFile, entry.getValue()); } }
@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); }
/** * Create a structured zip archive recursively. * The string must be OS specific String to represent path. * */ public static void zipDir(final String dir2zip, final ZipOutputStream zos, final String root) throws IOException { final File zipDir = new File(dir2zip); final byte[] readBuffer = new byte[BUFFER_SIZE]; for (final String pathName : zipDir.list()) { final File file = new File(zipDir, pathName); final String path = file.getPath(); if (file.isDirectory()) { zipDir(path, zos, root); continue; } try { final ZipEntry anEntry = new ZipEntry(path.substring(root.length() + 1, path.length()).replace(String.valueOf(File.separatorChar), "/")); zos.putNextEntry(anEntry); copyFileToZip(zos, readBuffer, file); zos.flush(); } finally { zos.closeEntry(); } } }
protected BusinessArchive readBusinessArchive(final InputStream inputStream, List<BusinessArchiveContribution> contributions) throws IOException, InvalidBusinessArchiveFormatException { File barFolder = File.createTempFile("tempBarFolder", null); barFolder.delete(); barFolder.mkdir(); try { IOUtil.unzipToFolder(inputStream, barFolder); return getBusinessArchive(barFolder, contributions); } catch (final InvalidBusinessArchiveFormatException e) { throw e; } catch (final Exception e) { throw new InvalidBusinessArchiveFormatException("Invalid format, can't read the BAR file", e); } finally { IOUtil.deleteDir(barFolder); } }
public static File createTempDirectory(final URI directoryPath) { final File tmpDir = new File(directoryPath); tmpDir.setReadable(true); tmpDir.setWritable(true); mkdirs(tmpDir); try { // to initialize internal class FilenameUtils. Otherwise it cannot load the class as the shutdown is in progress: FileUtils.isSymlink(tmpDir); } catch (IOException ignored) { } try { Runtime.getRuntime().addShutdownHook(new Thread(() -> { try { final boolean deleted = deleteDir(tmpDir); if (!deleted) { System.err.println( "Unable to delete directory: " + tmpDir + ". Trying with an alternative force delete."); FileUtils.forceDelete(tmpDir); } } catch (final IOException e) { throw new BonitaRuntimeException(e); } })); } catch (IllegalStateException ignored) { // happen in case of hook already registered and when shutting down } return tmpDir; }
public void createAsTemporaryFolder() { org.bonitasoft.engine.io.IOUtil.createTempDirectory(this.folder.toURI()); } }
public static boolean deleteDir(final File dir) throws IOException { return deleteDir(dir, 1, 0); }
public void serializeProcessDefinition(final File barFolder, final DesignProcessDefinition processDefinition) throws IOException { try { IOUtil.writeContentToFile(convertProcessToXml(processDefinition), new File(barFolder, PROCESS_DEFINITION_XML)); final String infos = generateInfosFromDefinition(processDefinition); IOUtil.writeContentToFile(getProcessInfos(infos), new File(barFolder, PROCESS_INFOS_FILE)); } catch (final FileNotFoundException e) { throw new IOException(e); } }
public static BarResource generateJarAndBuildBarResource(final Class<?> clazz, final String name) throws IOException { final byte[] data = IOUtil.generateJar(clazz); return new BarResource(name, data); }
String fieldName = item.getFieldName(); if (fieldName.startsWith(BINARY_PARAMETER)) { binaryParameters.add(IOUtil.getAllContentFrom(stream)); } else { String read = IOUtil.read(stream); parameters.put(fieldName, read);
@Override public void saveToBarFolder(final BusinessArchive businessArchive, final File barFolder) throws IOException { final File externalResourceFolder = new File(barFolder, EXTERNAL_RESOURCE_FOLDER); externalResourceFolder.mkdir(); final int beginIndex = EXTERNAL_RESOURCE_FOLDER.length(); final Map<String, byte[]> resources = businessArchive.getResources("^" + EXTERNAL_RESOURCE_FOLDER + "/.*$"); for (final Entry<String, byte[]> entry : resources.entrySet()) { final File fullPathFile = new File(externalResourceFolder, entry.getKey().substring(beginIndex)); fullPathFile.getParentFile().mkdirs(); IOUtil.write(fullPathFile, entry.getValue()); } }
@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); }
/** * Create a structured zip archive recursively. * The string must be OS specific String to represent path. * */ public static void zipDir(final String dir2zip, final ZipOutputStream zos, final String root) throws IOException { final File zipDir = new File(dir2zip); final byte[] readBuffer = new byte[BUFFER_SIZE]; for (final String pathName : zipDir.list()) { final File file = new File(zipDir, pathName); final String path = file.getPath(); if (file.isDirectory()) { zipDir(path, zos, root); continue; } try { final ZipEntry anEntry = new ZipEntry(path.substring(root.length() + 1, path.length()).replace(String.valueOf(File.separatorChar), "/")); zos.putNextEntry(anEntry); copyFileToZip(zos, readBuffer, file); zos.flush(); } finally { zos.closeEntry(); } } }
public static byte[] generateJar(final Class<?>... classes) throws IOException { return generateJar(getResources(classes)); }