You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2011/08/15 16:14:16 UTC

svn commit: r1157856 - /felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java

Author: rickhall
Date: Mon Aug 15 14:14:16 2011
New Revision: 1157856

URL: http://svn.apache.org/viewvc?rev=1157856&view=rev
Log:
Inject wiring into extension bundles so their dependency information
is insectable like normal bundles. (FELIX-2467)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=1157856&r1=1157855&r2=1157856&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java Mon Aug 15 14:14:16 2011
@@ -45,6 +45,7 @@ import org.apache.felix.framework.util.m
 import org.apache.felix.framework.cache.Content;
 import org.apache.felix.framework.util.manifestparser.R4Library;
 import org.apache.felix.framework.wiring.BundleCapabilityImpl;
+import org.apache.felix.framework.wiring.BundleWireImpl;
 import org.osgi.framework.AdminPermission;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
@@ -53,7 +54,9 @@ import org.osgi.framework.BundleExceptio
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
 import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 
 /**
@@ -380,6 +383,21 @@ class ExtensionManager extends URLStream
             throw ex;
         }
 
+        BundleRevisionImpl bri = (BundleRevisionImpl) bundle.adapt(BundleRevision.class);
+        List<BundleRequirement> reqs = bri.getDeclaredRequirements(BundleRevision.HOST_NAMESPACE);
+        List<BundleCapability> caps = getCapabilities(BundleRevision.HOST_NAMESPACE);
+        BundleWire bw = new BundleWireImpl(bri, reqs.get(0), m_systemBundleRevision, caps.get(0));
+        bri.resolve(
+            new BundleWiringImpl(
+                m_logger,
+                m_configMap,
+                null,
+                bri,
+                null,
+                Collections.singletonList(bw),
+                Collections.EMPTY_MAP,
+                Collections.EMPTY_MAP));
+        felix.getDependencies().addDependent(bw);
         felix.setBundleStateAndNotify(bundle, Bundle.RESOLVED);
     }