patch2Elements.put(e.getProvider().getName(), e); final File e1Dir = new File(patch1Dir, e1.getId()); final PatchElement e2 = patch2Elements.remove(e1.getProvider().getName()); if (e2 == null) { if (e1Dir.exists()) { IoUtils.copyFile(e1Dir, new File(mergedDir, e1.getId())); final ContentModifications cp2Mods = new ContentModifications(e2.getModifications()); for (ContentModification cp1Mod : e1.getModifications()) { final ContentModification cp2Mod = cp2Mods.remove(cp1Mod.getItem()); if (cp2Mod == null) { copyModificationContent(patch1Dir, e1.getId(), mergedDir, e2.getId(), cp1Mod); } else { copyModificationContent(patch2Dir, e2.getId(), mergedDir, e2.getId(), cp2Mod); copyModificationContent(patch2Dir, e2.getId(), mergedDir, e2.getId(), cp2Mod); final File e2Dir = new File(patch2Dir, e2.getId()); if (e2Dir.exists()) { IoUtils.copyFile(e2Dir, new File(mergedDir, e2.getId()));
for(PatchElement e : metadata.getElements()) { final ModelNode element = new ModelNode(); element.get(Constants.PATCH_ID).set(e.getId()); element.get(Constants.TYPE).set(e.getProvider().isAddOn() ? Constants.ADD_ON : Constants.LAYER); element.get(Constants.NAME).set(e.getProvider().getName()); element.get(Constants.DESCRIPTION).set(e.getDescription()); list.add(element);
private Map<String,String> loadLayerPatches(boolean addons) { Map<String,String> result = Collections.emptyMap(); final Patch patch = getMetadata(); if(patch != null) { result = new HashMap<String, String>(); for (PatchElement e : patch.getElements()) { if (e.getProvider().isAddOn() == addons) { result.put(e.getProvider().getName(), e.getId()); } } } return result; }
/** * Copy a patch element * * @param entry the patch entry * @param patchId the patch id for the element * @param modifications the element modifications * @return the new patch element */ protected static PatchElement createPatchElement(final PatchEntry entry, String patchId, final List<ContentModification> modifications) { final PatchElement patchElement = entry.element; final PatchElementImpl element = new PatchElementImpl(patchId); element.setProvider(patchElement.getProvider()); // Add all the rollback actions element.getModifications().addAll(modifications); element.setDescription(patchElement.getDescription()); return element; }
final Map<String, PatchElement> cp2AddonElements = new HashMap<String, PatchElement>(); for (PatchElement pe : cp2.getElements()) { final PatchElementProvider provider = pe.getProvider(); assertUpgrade(provider.getPatchType()); if (provider.isAddOn()) { final PatchElementProvider provider = cp1El.getProvider(); assertUpgrade(provider.getPatchType()); final PatchElement cp2El; builder.addElement(cp1El); } else { final PatchElementBuilder elementBuilder = builder.upgradeElement(cp2El.getId(), provider.getName(), provider.isAddOn()).setDescription(cp2El.getDescription()); mergeModifications(elementBuilder, cp1El.getModifications(), cp2El.getModifications(), cp1, cp2);
for (final PatchElement element : patch.getElements()) { final PatchElementProvider provider = element.getProvider(); final String name = provider.getName(); final boolean addOn = provider.isAddOn(); final Patch original = loadPatchInformation(entry.getPatchId(), installedImage); for (final PatchElement originalElement : original.getElements()) { if (name.equals(originalElement.getProvider().getName()) && addOn == originalElement.getProvider().isAddOn()) { PatchingTasks.addMissingModifications(target, originalElement.getModifications(), ContentItemFilter.ALL_BUT_MISC);
@Override public PatchElement createElement(PatchType patchType) { final PatchType type = element.getProvider().getPatchType(); if (type == null) { if (patchType == PatchType.CUMULATIVE) { ((PatchElementProviderImpl)element.getProvider()).upgrade(); } else { ((PatchElementProviderImpl)element.getProvider()).oneOffPatch(); } } else if (patchType != PatchBuilder.this.patchType) { throw PatchLogger.ROOT_LOGGER.patchTypesDontMatch(); } return element; } });
public PatchBuilder addElement(final PatchElement element) { addElement(element.getId(), new PatchElementHolder() { @Override public PatchElement createElement(PatchType patchType) { final PatchType type = element.getProvider().getPatchType(); if (type == null) { if (patchType == PatchType.CUMULATIVE) { ((PatchElementProviderImpl)element.getProvider()).upgrade(); } else { ((PatchElementProviderImpl)element.getProvider()).oneOffPatch(); } } else if (patchType != PatchBuilder.this.patchType) { throw PatchLogger.ROOT_LOGGER.patchTypesDontMatch(); } return element; } }); return this; }
final Map<String, PatchElement> cp2AddonElements = new HashMap<String, PatchElement>(); for (PatchElement pe : cp2.getElements()) { final PatchElementProvider provider = pe.getProvider(); assertUpgrade(provider.getPatchType()); if (provider.isAddOn()) { final PatchElementProvider provider = cp1El.getProvider(); assertUpgrade(provider.getPatchType()); final PatchElement cp2El; builder.addElement(cp1El); } else { final PatchElementBuilder elementBuilder = builder.upgradeElement(cp2El.getId(), provider.getName(), provider.isAddOn()).setDescription(cp2El.getDescription()); mergeModifications(elementBuilder, cp1El.getModifications(), cp2El.getModifications(), cp1, cp2);
private Map<String,String> loadLayerPatches(boolean addons) { Map<String,String> result = Collections.emptyMap(); final Patch patch = getMetadata(); if(patch != null) { result = new HashMap<String, String>(); for (PatchElement e : patch.getElements()) { if (e.getProvider().isAddOn() == addons) { result.put(e.getProvider().getName(), e.getId()); } } } return result; }
for (final PatchElement element : patch.getElements()) { final PatchElementProvider provider = element.getProvider(); final String name = provider.getName(); final boolean addOn = provider.isAddOn(); final Patch original = loadPatchInformation(entry.getPatchId(), installedImage); for (final PatchElement originalElement : original.getElements()) { if (name.equals(originalElement.getProvider().getName()) && addOn == originalElement.getProvider().isAddOn()) { PatchingTasks.addMissingModifications(target, originalElement.getModifications(), ContentItemFilter.ALL_BUT_MISC);
@Override public PatchElement createElement(PatchType patchType) { final PatchType type = element.getProvider().getPatchType(); if (type == null) { if (patchType == PatchType.CUMULATIVE) { ((PatchElementProviderImpl)element.getProvider()).upgrade(); } else { ((PatchElementProviderImpl)element.getProvider()).oneOffPatch(); } } else if (patchType != PatchBuilder.this.patchType) { throw PatchLogger.ROOT_LOGGER.patchTypesDontMatch(); } return element; } });
public PatchBuilder addElement(final PatchElement element) { addElement(element.getId(), new PatchElementHolder() { @Override public PatchElement createElement(PatchType patchType) { final PatchType type = element.getProvider().getPatchType(); if (type == null) { if (patchType == PatchType.CUMULATIVE) { ((PatchElementProviderImpl)element.getProvider()).upgrade(); } else { ((PatchElementProviderImpl)element.getProvider()).oneOffPatch(); } } else if (patchType != PatchBuilder.this.patchType) { throw PatchLogger.ROOT_LOGGER.patchTypesDontMatch(); } return element; } }); return this; }
/** * Copy a patch element * * @param entry the patch entry * @param patchId the patch id for the element * @param modifications the element modifications * @return the new patch element */ protected static PatchElement createPatchElement(final PatchEntry entry, String patchId, final List<ContentModification> modifications) { final PatchElement patchElement = entry.element; final PatchElementImpl element = new PatchElementImpl(patchId); element.setProvider(patchElement.getProvider()); // Add all the rollback actions element.getModifications().addAll(modifications); element.setDescription(patchElement.getDescription()); return element; }
patch2Elements.put(e.getProvider().getName(), e); final File e1Dir = new File(patch1Dir, e1.getId()); final PatchElement e2 = patch2Elements.remove(e1.getProvider().getName()); if (e2 == null) { if (e1Dir.exists()) { IoUtils.copyFile(e1Dir, new File(mergedDir, e1.getId())); final ContentModifications cp2Mods = new ContentModifications(e2.getModifications()); for (ContentModification cp1Mod : e1.getModifications()) { final ContentModification cp2Mod = cp2Mods.remove(cp1Mod.getItem()); if (cp2Mod == null) { copyModificationContent(patch1Dir, e1.getId(), mergedDir, e2.getId(), cp1Mod); } else { copyModificationContent(patch2Dir, e2.getId(), mergedDir, e2.getId(), cp2Mod); copyModificationContent(patch2Dir, e2.getId(), mergedDir, e2.getId(), cp2Mod); final File e2Dir = new File(patch2Dir, e2.getId()); if (e2Dir.exists()) { IoUtils.copyFile(e2Dir, new File(mergedDir, e2.getId()));
writer.writeAttribute(Attribute.ID.name, element.getId()); if(element.getDescription() != null) { writer.writeStartElement(Element.DESCRIPTION.name); writer.writeCharacters(element.getDescription()); final PatchElementProvider provider = element.getProvider(); assert provider != null; writeContentModifications(writer, element.getModifications());
for(PatchElement e : metadata.getElements()) { final ModelNode element = new ModelNode(); element.get(Constants.PATCH_ID).set(e.getId()); element.get(Constants.TYPE).set(e.getProvider().isAddOn() ? Constants.ADD_ON : Constants.LAYER); element.get(Constants.NAME).set(e.getProvider().getName()); element.get(Constants.DESCRIPTION).set(e.getDescription()); list.add(element);
/** * Create a patch element for the rollback patch. * * @param entry the entry * @return the new patch element */ protected static PatchElement createRollbackElement(final PatchEntry entry) { final PatchElement patchElement = entry.element; final String patchId; final Patch.PatchType patchType = patchElement.getProvider().getPatchType(); if (patchType == Patch.PatchType.CUMULATIVE) { patchId = entry.getCumulativePatchID(); } else { patchId = patchElement.getId(); } return createPatchElement(entry, patchId, entry.rollbackActions); }
@Override File getSourceFile(ContentItem item) throws IOException { if (item.getContentType() == ContentType.BUNDLE) { final File root = new File(bundles, base); final File layer = new File(root, element.getProvider().getName()); return PatchContentLoader.getModulePath(layer, (ModuleItem) item); } else if (item.getContentType() == ContentType.MODULE) { final File root = new File(modules, base); final File layer = new File(root, element.getProvider().getName()); return PatchContentLoader.getModulePath(layer, (ModuleItem) item); } throw processingError("invalid content item for patch-element %s", item); }
/** * Create a patch representing what we actually processed. This may contain some fixed content hashes for removed * modules. * * @param original the original * @return the processed patch */ protected Patch createProcessedPatch(final Patch original) { // Process elements final List<PatchElement> elements = new ArrayList<PatchElement>(); // Process layers for (final PatchEntry entry : getLayers()) { final PatchElement element = createPatchElement(entry, entry.element.getId(), entry.modifications); elements.add(element); } // Process add-ons for (final PatchEntry entry : getAddOns()) { final PatchElement element = createPatchElement(entry, entry.element.getId(), entry.modifications); elements.add(element); } // Swap the patch element modifications, keep the identity ones since we don't need to fix the misc modifications return new PatchImpl(original.getPatchId(), original.getDescription(), original.getLink(), original.getIdentity(), elements, identityEntry.modifications); }