[FELIX-4515] BundleRevision for system extension has no capabilities

This commit should address the issue.
Also added a unit test.


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1594257 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java b/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
index 6d0e694..8c8c548 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
@@ -28,6 +28,7 @@
 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 @@
         // 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();
diff --git a/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java b/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java
index 8cc34e6..ecb3941 100644
--- a/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java
+++ b/framework/src/test/java/org/apache/felix/framework/RequirementsCapabilitiesTest.java
@@ -192,6 +192,30 @@
         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);