Author: davidb Date: Tue May 13 15:57:21 2014 New Revision: 1594257 URL: http://svn.apache.org/r1594257 Log: [FELIX-4515] BundleRevision for system extension has no capabilities
This commit should address the issue. Also added a unit test. Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java felix/trunk/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java?rev=1594257&r1=1594256&r2=1594257&view=diff ============================================================================== --- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java (original) +++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java Tue May 13 15:57:21 2014 @@ -28,6 +28,7 @@ import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Map; + import org.apache.felix.framework.cache.Content; import org.apache.felix.framework.util.FelixConstants; import org.apache.felix.framework.util.SecureAction; @@ -126,7 +127,7 @@ public class BundleRevisionImpl implemen // system bundle directly later on. m_manifestVersion = mp.getManifestVersion(); m_version = mp.getBundleVersion(); - m_declaredCaps = mp.isExtension() ? Collections.EMPTY_LIST : mp.getCapabilities(); + m_declaredCaps = mp.getCapabilities(); m_declaredReqs = mp.getRequirements(); m_declaredNativeLibs = mp.getLibraries(); m_declaredActivationPolicy = mp.getActivationPolicy(); Modified: felix/trunk/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java?rev=1594257&r1=1594256&r2=1594257&view=diff ============================================================================== --- felix/trunk/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java (original) +++ felix/trunk/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java Tue May 13 15:57:21 2014 @@ -192,6 +192,30 @@ public class RequirementsCapabilitiesTes assertCapsEquals(expectedFWCap, bwpCaps2.get(0)); } + public void testIdentityCapabilityFrameworkExtension() throws Exception + { + String femf = "Bundle-SymbolicName: fram.ext\n" + + "Bundle-Version: 1.2.3.test\n" + + "Fragment-Host: system.bundle; extension:=framework\n" + + "Bundle-ManifestVersion: 2\n" + + "Export-Package: org.foo.bar;version=\"2.0.0\"\n"; + File feFile = createBundle(femf); + + Bundle fe = felix.getBundleContext().installBundle(feFile.toURI().toASCIIString()); + + BundleRevision fbr = fe.adapt(BundleRevision.class); + + List<Capability> feCaps = fbr.getCapabilities("osgi.identity"); + assertEquals(1, feCaps.size()); + Map<String, Object> expectedFEAttrs = new HashMap<String, Object>(); + expectedFEAttrs.put("osgi.identity", "fram.ext"); + expectedFEAttrs.put("type", "osgi.fragment"); + expectedFEAttrs.put("version", Version.parseVersion("1.2.3.test")); + Capability expectedFICap = new TestCapability("osgi.identity", + expectedFEAttrs, Collections.<String, String>emptyMap()); + assertCapsEquals(expectedFICap, feCaps.get(0)); + } + private File createBundle(String manifest) throws IOException { File f = File.createTempFile("felix-bundle", ".jar", tempDir);