/** * Get a misc file. * * @param root the root * @param item the misc content item * @return the misc file */ static File getTargetFile(final File root, final MiscContentItem item) { return PatchContentLoader.getMiscPath(root, item); }
public static File getModulePath(File root, ModuleItem item) { return getModulePath(root, item.getName(), item.getSlot()); }
@Override public PatchContentLoader getLoader(final String patchId) { final File root = new File(workDir, patchId); return PatchContentLoader.create(root); }
@Override File getTargetFile(ContentItem item) throws IOException { return elementLoader.getFile(item); } };
@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 File getTargetFile(ContentItem item) throws IOException { return targetLoader.getFile(item); } };
@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); } } }
void reenableBaseModule(final ModuleItem item) throws IOException { if(modulesToReenable.isEmpty()) { modulesToReenable = new ArrayList<File>(); } final File modulePath = PatchContentLoader.getModulePath(getDirectoryStructure().getModuleRoot(), item.getName(), ((ModuleItem)item).getSlot()); final List<File> files = listFiles(modulePath); if (files != null && files.size() > 0) { for (final File file : files) { modulesToReenable.add(file); } } }
/** * Get a misc file. * * @param root the root * @param item the misc content item * @return the misc file */ static File getTargetFile(final File root, final MiscContentItem item) { return PatchContentLoader.getMiscPath(root, item); }
@Override public PatchContentLoader getLoader(final String patchId) { final File root = new File(workDir, patchId); return PatchContentLoader.create(root); }
/** * Open a new content stream. * * @param item the content item * @return the content stream */ InputStream openContentStream(final ContentItem item) throws IOException { final File file = getFile(item); if (file == null) { throw new IllegalStateException(); } return new FileInputStream(file); }
void disableBaseModule(final ModuleItem item) throws IOException { if(modulesToDisable.isEmpty()) { modulesToDisable = new ArrayList<File>(); } final File modulePath = PatchContentLoader.getModulePath(getDirectoryStructure().getModuleRoot(), item.getName(), ((ModuleItem)item).getSlot()); final List<File> files = listFiles(modulePath); if (files != null && files.size() > 0) { for (final File file : files) { modulesToDisable.add(file); } } }
@Override File getSourceFile(ContentItem item) throws IOException { if (item.getContentType() == ContentType.MISC) { return PatchContentLoader.getMiscPath(distributionRoot, (MiscContentItem) item); } throw processingError("invalid content item for identity %s", item); }
public static PatchContentLoader create(final File root) { final File miscRoot = new File(root, PatchContentLoader.MISC); final File bundlesRoot = new File(root, PatchContentLoader.BUNDLES); final File modulesRoot = new File(root, PatchContentLoader.MODULES); return PatchContentLoader.create(miscRoot, bundlesRoot, modulesRoot); }
/** * Open a new content stream. * * @param item the content item * @return the content stream */ InputStream openContentStream(final ContentItem item) throws IOException { final File file = getFile(item); if (file == null) { throw new IllegalStateException(); } return new FileInputStream(file); }
void reenableBaseModule(final ModuleItem item) throws IOException { if(modulesToReenable.isEmpty()) { modulesToReenable = new ArrayList<File>(); } final File modulePath = PatchContentLoader.getModulePath(getDirectoryStructure().getModuleRoot(), item.getName(), ((ModuleItem)item).getSlot()); final List<File> files = listFiles(modulePath); if (files != null && files.size() > 0) { for (final File file : files) { modulesToReenable.add(file); } } }
static void assertMisc(final File root, final ModificationType modification, final MiscContentItem item) { final File file = PatchContentLoader.getMiscPath(root, item); Assert.assertTrue(item.getRelativePath(), file.exists() == (modification != ModificationType.REMOVE)); }
public static PatchContentLoader create(final File root) { final File miscRoot = new File(root, PatchContentLoader.MISC); final File bundlesRoot = new File(root, PatchContentLoader.BUNDLES); final File modulesRoot = new File(root, PatchContentLoader.MODULES); return PatchContentLoader.create(miscRoot, bundlesRoot, modulesRoot); }
@Override byte[] apply(PatchingTaskContext context, PatchContentLoader loader) throws IOException { // Copy the new module resources to the patching directory final File targetDir = context.getTargetFile(contentItem); final File sourceDir = loader.getFile(contentItem); if(sourceDir.exists()) { // Recursively copy module contents (incl. native libs) IoUtils.copyFile(sourceDir, targetDir); } else { // ADD an absent module // this situation happens when merging ADD and REMOVE modifications // which results in an ADD of an absent module if(!targetDir.exists() && ! targetDir.mkdirs()) { throw PatchLogger.ROOT_LOGGER.cannotCreateDirectory(targetDir.getAbsolutePath()); } final Path moduleXml = targetDir.toPath().resolve(MODULE_XML); final ByteArrayInputStream is = new ByteArrayInputStream(PatchUtils.getAbsentModuleContent(contentItem)); Files.copy(is, moduleXml, StandardCopyOption.REPLACE_EXISTING); } // return contentItem.getContentHash(); return HashUtils.hashFile(targetDir); }
public static File getModulePath(File root, ModuleItem item) { return getModulePath(root, item.getName(), item.getSlot()); }