summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-01-21 21:21:33 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-01-21 21:21:33 +0000
commit0269f4bdcdd988aa67b911a3b1f3b3874da18304 (patch)
tree9735e804be42b24b2ea4a39b6208e1ba350514ef /sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
parent6aa79f55e6049ad708bcab52915149db3bc3351f (diff)
Exclude service listeners from system bundles
Use the Deployer to load client contribution for dynamic nodes git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@901857 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java')
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
index 31f4f4c0b3..33faa77c84 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
@@ -195,7 +195,11 @@ public class TopologyManagerImpl implements ListenerHook, RemoteServiceAdminList
Collection<ListenerInfo> listenerInfos = (Collection<ListenerInfo>)listeners;
boolean changed = false;
for (ListenerInfo l : listenerInfos) {
- if (!l.isRemoved() && l.getBundleContext() != context) {
+ if (l.getBundleContext().getBundle().getBundleId() == 0L || l.getBundleContext() == context) {
+ // Ignore system and tuscany bundle
+ continue;
+ }
+ if (!l.isRemoved()) {
String key = l.getFilter();
if (key == null) {
// key = "";
@@ -357,6 +361,19 @@ public class TopologyManagerImpl implements ListenerHook, RemoteServiceAdminList
// Get a listener
ListenerInfo listener = listeners.iterator().next();
Bundle bundle = listener.getBundleContext().getBundle();
+ if (bundle.getBundleId() == 0L) {
+ // Skip system bundles
+ continue;
+ }
+ try {
+ Filter filter = listener.getBundleContext().createFilter(matchedFilter);
+ if (!filter.match(new Hashtable<String, Object>(endpoint.getProperties()))) {
+ continue;
+ }
+ } catch (InvalidSyntaxException ex) {
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ continue;
+ }
Map<String, Object> props = new HashMap<String, Object>(endpoint.getProperties());
props.put(Bundle.class.getName(), bundle);