static void createParentDirectories(final File target, String[] path, int depth, final PatchingTaskContext context) throws IOException { if (depth > 0) { final File parent = target.getParentFile(); if (! parent.exists()) { createParentDirectories(parent, path, depth - 1, context); } if(! parent.mkdir() && ! parent.isDirectory()) { throw PatchLogger.ROOT_LOGGER.cannotCreateDirectory(target.getAbsolutePath()); } // TODO record changes // final String[] newPath = Arrays.copyOf(path, depth - 1); // final MiscContentItem item = new MiscContentItem(parent.getName(), newPath, NO_CONTENT); // context.recordChange(new ContentModification(item, NO_CONTENT, ModificationType.ADD), new ContentModification(item, NO_CONTENT, ModificationType.REMOVE)); } }
static void createParentDirectories(final File target, String[] path, int depth, final PatchingTaskContext context) throws IOException { if (depth > 0) { final File parent = target.getParentFile(); if (! parent.exists()) { createParentDirectories(parent, path, depth - 1, context); } if(! parent.mkdir() && ! parent.isDirectory()) { throw PatchLogger.ROOT_LOGGER.cannotCreateDirectory(target.getAbsolutePath()); } // TODO record changes // final String[] newPath = Arrays.copyOf(path, depth - 1); // final MiscContentItem item = new MiscContentItem(parent.getName(), newPath, NO_CONTENT); // context.recordChange(new ContentModification(item, NO_CONTENT, ModificationType.ADD), new ContentModification(item, NO_CONTENT, ModificationType.REMOVE)); } }
@Override byte[] apply(PatchingTaskContext context, PatchContentLoader loader) throws IOException { final MiscContentItem item = contentItem; if(item.isDirectory()) { if(! target.mkdirs() && ! target.isDirectory()) { throw PatchLogger.ROOT_LOGGER.cannotCreateDirectory(target.getAbsolutePath()); } return NO_CONTENT; } else { if (!target.exists()) { createParentDirectories(target, item.getPath(), item.getPath().length, context); } final InputStream is = loader.openContentStream(item); try { // Replace the file return copy(is, target); } finally { safeClose(is); } } }
@Override byte[] apply(PatchingTaskContext context, PatchContentLoader loader) throws IOException { final MiscContentItem item = contentItem; if(item.isDirectory()) { if(! target.mkdirs() && ! target.isDirectory()) { throw PatchLogger.ROOT_LOGGER.cannotCreateDirectory(target.getAbsolutePath()); } return NO_CONTENT; } else { if (!target.exists()) { createParentDirectories(target, item.getPath(), item.getPath().length, context); } final InputStream is = loader.openContentStream(item); try { // Replace the file return copy(is, target); } finally { safeClose(is); } } }