Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2012-08-22 18:22:57 +0000
committerThomas Watson2012-08-22 18:22:57 +0000
commit0d4319a354000da4229b1a7ddf69194bc445efb1 (patch)
tree8743126a7c1fb64cfe1ece27967b8f2b6295141a /bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java
parente64e2ec5281717bf7b6874a34efa3f43d3a02c36 (diff)
downloadrt.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.java21
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();

Back to the top