Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnjum Fatima2020-02-14 18:14:41 +0000
committerAnjum Fatima2020-02-14 19:26:16 +0000
commitc917784259f19ed00c164f3a3cc7919faaf6c296 (patch)
tree21875dc8d66cf7e478e540135d03f1451e78b91f
parent2cf35ecfe61ac1df4e9f1003cf862c023ce24366 (diff)
downloadrt.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>
-rw-r--r--bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ConnectTests.java21
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/connect/ConnectHookConfigurator.java11
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);
}

Back to the top