/** * Constructs a new module with the specified id, location and * container. * @param id the new module id * @param location the new module location * @param container the container for the new module * @param settings the persisted settings. May be {@code null} if there are no settings. * @param startlevel the persisted start level or initial start level. */ public Module(Long id, String location, ModuleContainer container, EnumSet<Settings> settings, int startlevel) { this.id = id; this.location = location; this.revisions = new ModuleRevisions(this, container); this.settings = settings == null ? EnumSet.noneOf(Settings.class) : EnumSet.copyOf(settings); this.startlevel = startlevel; }
@Override public Bundle getBundle() { return revisions.getBundle(); }
boolean isCurrent() { return !revisions.isUninstalled() && this.equals(revisions.getCurrentRevision()); }
ModuleRevisions uninstalling = module.getRevisions(); uninstalling.uninstall(); moduleSettings.remove(module.getId()); List<ModuleRevision> revisions = uninstalling.getModuleRevisions(); for (ModuleRevision revision : revisions) { module.getRevisions().removeRevision(revision); removeCapabilities(revision);
Module module = iTriggers.next(); boolean first = true; for (ModuleRevision revision : module.getRevisions().getModuleRevisions()) { ModuleWiring removedWiring = wiringCopy.remove(revision); if (removedWiring != null) { if (!first || revision.getRevisions().isUninstalled()) { toRemoveRevisions.add(revision); removed.getRevisions().removeRevision(removed); moduleDatabase.removeCapabilities(removed);
revisions.addRevision(revision); module.getContainer().getAdaptor().associateRevision(revision, revisionInfo); revisions.removeRevision(revision); throw e;
private void invalidate0(boolean releaseLoader) { ModuleLoader current; synchronized (monitor) { this.isValid = false; current = loader; if (releaseLoader) { loader = null; } } revision.getRevisions().getContainer().getAdaptor().invalidateWiring(this, current); }
Set<Module> getRefreshClosure(Collection<Module> initial, Map<ModuleRevision, ModuleWiring> wiringCopy) { Set<Module> refreshClosure = new HashSet<Module>(); if (initial == null) { initial = new HashSet<Module>(); Collection<ModuleRevision> removalPending = moduleDatabase.getRemovalPending(); for (ModuleRevision revision : removalPending) { initial.add(revision.getRevisions().getModule()); } } for (Module module : initial) addDependents(module, wiringCopy, refreshClosure); return refreshClosure; }
private ModuleWiring getWiring(Bundle bundle) { Module module = StartLevelImpl.getModule(bundle); if (module == null) { return null; } List<ModuleRevision> revisions = module.getRevisions().getModuleRevisions(); if (revisions.isEmpty()) { return null; } return revisions.get(0).getWiring(); }
public int getBundleType(Bundle bundle) { Module module = StartLevelImpl.getModule(bundle); if (module == null) { return 0; } List<BundleRevision> revisions = module.getRevisions().getRevisions(); if (revisions.isEmpty()) { return 0; } return (revisions.get(0).getTypes() & BundleRevision.TYPE_FRAGMENT) != 0 ? PackageAdmin.BUNDLE_TYPE_FRAGMENT : 0; }
/** * Returns the current {@link ModuleRevision revision} associated with this module. * If the module is uninstalled then the last current revision is returned. * @return the current {@link ModuleRevision revision} associated with this module. */ public final ModuleRevision getCurrentRevision() { return revisions.getCurrentRevision(); }
/** * Updates the specified module with anew revision using the specified builder. * <p> * A write operation protected by the {@link #writeLock() write} lock. * @param module the module for which the revision provides an update for * @param builder the builder to use to create the new revision * @param revisionInfo the revision info for the new revision, may be {@code null}. */ final void update(Module module, ModuleRevisionBuilder builder, Object revisionInfo) { writeLock(); try { ModuleRevision oldRevision = module.getCurrentRevision(); ModuleRevision newRevision = builder.addRevision(module, revisionInfo); addCapabilities(newRevision); // if the old revision does not have a wiring it can safely be removed ModuleWiring oldWiring = wirings.get(oldRevision); if (oldWiring == null) { module.getRevisions().removeRevision(oldRevision); removeCapabilities(oldRevision); } // attempt to clean up removal pendings cleanupRemovalPending(); long currentTime = System.currentTimeMillis(); module.setlastModified(currentTime); setSystemLastModified(currentTime); incrementTimestamps(true); } finally { writeUnlock(); } }
ModuleRevisions uninstalling = module.getRevisions(); uninstalling.uninstall(); moduleSettings.remove(module.getId()); List<ModuleRevision> revisions = uninstalling.getModuleRevisions(); for (ModuleRevision revision : revisions) { module.getRevisions().removeRevision(revision); removeCapabilities(revision);
Module module = iTriggers.next(); boolean first = true; for (ModuleRevision revision : module.getRevisions().getModuleRevisions()) { ModuleWiring removedWiring = wiringCopy.remove(revision); if (removedWiring != null) { if (!first || revision.getRevisions().isUninstalled()) { toRemoveRevisions.add(revision); removed.getRevisions().removeRevision(removed); moduleDatabase.removeCapabilities(removed);
revisions.addRevision(revision); module.getContainer().getAdaptor().associateRevision(revision, revisionInfo); revisions.removeRevision(revision); throw e;
private void persistStopOptions(StopOptions... options) { if (StopOptions.TRANSIENT.isContained(options)) return; settings.clear(); revisions.getContainer().moduleDatabase.persistSettings(settings, this); }
@Override public void loadFragments(Collection<ModuleRevision> fragments) { Module systemModule = getWiring().getRevision().getRevisions().getModule(); for (ModuleRevision fragment : fragments) { try { this.getGeneration().getBundleInfo().getStorage().getExtensionInstaller().addExtensionContent(fragment, getWiring().getRevision().getRevisions().getModule()); } catch (BundleException e) { systemModule.getContainer().getAdaptor().publishContainerEvent(ContainerEvent.ERROR, systemModule, e); } } } }
private ModuleWiring getWiring(Bundle bundle) { Module module = StartLevelImpl.getModule(bundle); if (module == null) { return null; } List<ModuleRevision> revisions = module.getRevisions().getModuleRevisions(); if (revisions.isEmpty()) { return null; } return revisions.get(0).getWiring(); }
public int getBundleType(Bundle bundle) { Module module = StartLevelImpl.getModule(bundle); if (module == null) { return 0; } List<BundleRevision> revisions = module.getRevisions().getRevisions(); if (revisions.isEmpty()) { return 0; } return (revisions.get(0).getTypes() & BundleRevision.TYPE_FRAGMENT) != 0 ? PackageAdmin.BUNDLE_TYPE_FRAGMENT : 0; }
/** * Returns the current {@link ModuleRevision revision} associated with this module. * If the module is uninstalled then the last current revision is returned. * @return the current {@link ModuleRevision revision} associated with this module. */ public final ModuleRevision getCurrentRevision() { return revisions.getCurrentRevision(); }