diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-01-21 21:21:33 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-01-21 21:21:33 +0000 |
commit | 0269f4bdcdd988aa67b911a3b1f3b3874da18304 (patch) | |
tree | 9735e804be42b24b2ea4a39b6208e1ba350514ef /sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java | |
parent | 6aa79f55e6049ad708bcab52915149db3bc3351f (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.java | 19 |
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); |