diff options
author | Anjum Fatima | 2020-02-14 18:14:41 +0000 |
---|---|---|
committer | Anjum Fatima | 2020-02-14 19:26:16 +0000 |
commit | c917784259f19ed00c164f3a3cc7919faaf6c296 (patch) | |
tree | 21875dc8d66cf7e478e540135d03f1451e78b91f | |
parent | 2cf35ecfe61ac1df4e9f1003cf862c023ce24366 (diff) | |
download | rt.equinox.framework-c917784259f19ed00c164f3a3cc7919faaf6c296.tar.gz rt.equinox.framework-c917784259f19ed00c164f3a3cc7919faaf6c296.tar.xz rt.equinox.framework-c917784259f19ed00c164f3a3cc7919faaf6c296.zip |
Bug 559829 - [OSGi R8] connect tags for osgi.connect must propagate to
other BSN capabilities
Change-Id: I9e18599cf4add93626e98d4cce6241cf9258619f
Signed-off-by: Anjum Fatima <anjum.eclipse@gmail.com>
2 files changed, 23 insertions, 9 deletions
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ConnectTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ConnectTests.java index 2e40f4715..277f2123e 100644 --- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ConnectTests.java +++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ConnectTests.java @@ -65,6 +65,8 @@ import org.osgi.framework.connect.ConnectFrameworkFactory; import org.osgi.framework.connect.ConnectModule; import org.osgi.framework.connect.ModuleConnector; import org.osgi.framework.launch.Framework; +import org.osgi.framework.namespace.BundleNamespace; +import org.osgi.framework.namespace.HostNamespace; import org.osgi.framework.namespace.IdentityNamespace; import org.osgi.framework.wiring.BundleCapability; import org.osgi.framework.wiring.BundleRevision; @@ -492,12 +494,19 @@ public class ConnectTests extends AbstractBundleTests { } private static void checkConnectTag(Bundle b) { - List<String> tags = (List<String>) b.adapt(BundleRevision.class) // - .getCapabilities(IdentityNamespace.IDENTITY_NAMESPACE).stream().findFirst() // - .get().getAttributes().get(IdentityNamespace.CAPABILITY_TAGS_ATTRIBUTE); - assertNotNull("No tags found.", tags); - assertEquals("Wrong number of tags.", 1, tags.size()); - assertTrue("Connect tag not found.", tags.contains(ConnectContent.TAG_OSGI_CONNECT)); + final List<String> namespaces = new ArrayList<>(Arrays.asList(BundleNamespace.BUNDLE_NAMESPACE, HostNamespace.HOST_NAMESPACE, IdentityNamespace.IDENTITY_NAMESPACE)); + + b.adapt(BundleRevision.class).getCapabilities(null) + .stream() + .filter(c -> namespaces.contains(c.getNamespace())) + .forEach(c -> { + List<String> tags = (List<String>) c.getAttributes().get(IdentityNamespace.CAPABILITY_TAGS_ATTRIBUTE); + assertNotNull("No tags found.", tags); + assertEquals("Wrong number of tags.", 1, tags.size()); + assertTrue("Connect tag not found.", tags.contains(ConnectContent.TAG_OSGI_CONNECT)); + namespaces.remove(c.getNamespace()); + }); + assertTrue("Connect tag namespaces were not removed completely. Found " + namespaces, namespaces.isEmpty()); } private static void checkConnectTags(Framework f, List<String> locations) { diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/connect/ConnectHookConfigurator.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/connect/ConnectHookConfigurator.java index ee1ffba02..bc457ed67 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/connect/ConnectHookConfigurator.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/connect/ConnectHookConfigurator.java @@ -22,6 +22,7 @@ import java.io.InputStream; import java.net.URLConnection; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import org.eclipse.osgi.container.Module; @@ -46,9 +47,13 @@ import org.osgi.framework.BundleException; import org.osgi.framework.connect.ConnectContent; import org.osgi.framework.connect.ConnectModule; import org.osgi.framework.connect.ModuleConnector; +import org.osgi.framework.namespace.BundleNamespace; +import org.osgi.framework.namespace.HostNamespace; import org.osgi.framework.namespace.IdentityNamespace; public class ConnectHookConfigurator implements HookConfigurator { + static final Collection<String> CONNECT_TAG_NAMESPACES = new ArrayList<>(Arrays.asList( + BundleNamespace.BUNDLE_NAMESPACE, HostNamespace.HOST_NAMESPACE, IdentityNamespace.IDENTITY_NAMESPACE)); @Override public void addHooks(final HookRegistry hookRegistry) { @@ -86,9 +91,9 @@ public class ConnectHookConfigurator implements HookConfigurator { if (m != null) { builder.getCapabilities() .stream() // - .filter(i -> IdentityNamespace.IDENTITY_NAMESPACE.equals(i.getNamespace())) // - .findFirst().ifPresent((i) -> { - i.getAttributes().compute(IdentityNamespace.CAPABILITY_TAGS_ATTRIBUTE, (k, v) -> { + .filter(c -> CONNECT_TAG_NAMESPACES.contains(c.getNamespace())) // + .forEach((c) -> { + c.getAttributes().compute(IdentityNamespace.CAPABILITY_TAGS_ATTRIBUTE, (k, v) -> { if (v == null) { return Collections.singletonList(ConnectContent.TAG_OSGI_CONNECT); } |