diff options
author | Thomas Watson | 2012-08-22 18:22:57 +0000 |
---|---|---|
committer | Thomas Watson | 2012-08-22 18:22:57 +0000 |
commit | 0d4319a354000da4229b1a7ddf69194bc445efb1 (patch) | |
tree | 8743126a7c1fb64cfe1ece27967b8f2b6295141a /bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java | |
parent | e64e2ec5281717bf7b6874a34efa3f43d3a02c36 (diff) | |
download | rt.equinox.framework-0d4319a354000da4229b1a7ddf69194bc445efb1.tar.gz rt.equinox.framework-0d4319a354000da4229b1a7ddf69194bc445efb1.tar.xz rt.equinox.framework-0d4319a354000da4229b1a7ddf69194bc445efb1.zip |
Move p2 hack to ModuleDatabase
Diffstat (limited to 'bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java')
-rw-r--r-- | bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java index 4153e7daf..4ce570d06 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java @@ -20,6 +20,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import org.eclipse.osgi.container.Module.Settings; import org.eclipse.osgi.container.Module.State; +import org.eclipse.osgi.container.ModuleRevisionBuilder.GenericInfo; +import org.eclipse.osgi.container.namespaces.EquinoxModuleDataNamespace; import org.eclipse.osgi.framework.util.ObjectPool; import org.eclipse.osgi.internal.container.Capabilities; import org.eclipse.osgi.internal.container.ComputeNodeOrder; @@ -252,7 +254,8 @@ public class ModuleDatabase { try { int startlevel = Constants.SYSTEM_BUNDLE_LOCATION.equals(location) ? 0 : getInitialModuleStartLevel(); long id = Constants.SYSTEM_BUNDLE_LOCATION.equals(location) ? 0 : getNextIdAndIncrement(); - Module module = load(location, builder, revisionInfo, id, null, startlevel); + EnumSet<Settings> settings = getActivationPolicySettings(builder); + Module module = load(location, builder, revisionInfo, id, settings, startlevel); module.setlastModified(System.currentTimeMillis()); incrementTimestamps(true); return module; @@ -261,6 +264,22 @@ public class ModuleDatabase { } } + private EnumSet<Settings> getActivationPolicySettings(ModuleRevisionBuilder builder) { + for (GenericInfo info : builder.getCapabilities()) { + if (EquinoxModuleDataNamespace.MODULE_DATA_NAMESPACE.equals(info.getNamespace())) { + if (EquinoxModuleDataNamespace.CAPABILITY_ACTIVATION_POLICY_LAZY.equals(info.getAttributes().get(EquinoxModuleDataNamespace.CAPABILITY_ACTIVATION_POLICY))) { + // TODO hack until p2 is fixed (bug 177641) + EnumSet<Settings> settings = EnumSet.noneOf(Settings.class); + settings.add(Settings.USE_ACTIVATION_POLICY); + settings.add(Settings.AUTO_START); + return settings; + } + return null; + } + } + return null; + } + final Module load(String location, ModuleRevisionBuilder builder, Object revisionInfo, long id, EnumSet<Settings> settings, int startlevel) { // sanity check checkWrite(); |