[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);