From 0c1527f0415fb7d6c06b0ad2a1d4ce73cd728852 Mon Sep 17 00:00:00 2001 From: rfeng Date: Wed, 27 Jan 2010 04:33:47 +0000 Subject: Fix multiple concurrency related issues git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@903542 13f79535-47bb-0310-9956-ffa450edef68 --- .../equinox/EquinoxServiceDiscoverer.java | 39 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org') diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java index 31a3ae3b9c..56b889b607 100644 --- a/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java +++ b/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java @@ -79,6 +79,26 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { } return scaVersion; } + + /* + private Map bundles = new ConcurrentHashMap(); + + public Object addingBundle(Bundle bundle, BundleEvent event) { + if (isProviderBundle(bundle)) { + bundles.put(bundle, bundle); + System.out.println("Bundle added: " + toString(bundle)); + return bundle; + } + return null; + } + + public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) { + } + + public void removedBundle(Bundle bundle, BundleEvent event, Object object) { + bundles.remove(object); + } + */ public static class ServiceDeclarationImpl implements ServiceDeclaration { private Bundle bundle; @@ -211,6 +231,17 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { } return true; } + + protected Collection getBundles() { + // return bundles.keySet(); + Set set = new HashSet(); + for (Bundle b : context.getBundles()) { + if (isProviderBundle(b)) { + set.add(b); + } + } + return set; + } public Collection getServiceDeclarations(String serviceName) throws IOException { boolean debug = logger.isLoggable(Level.FINE); @@ -222,10 +253,10 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { Set visited = new HashSet(); //System.out.println(">>>> getServiceDeclarations()"); - for (Bundle bundle : context.getBundles()) { - if (!isProviderBundle(bundle)) { - continue; - } + for (Bundle bundle : getBundles()) { +// if (!isProviderBundle(bundle)) { +// continue; +// } Enumeration urls = null; try { // Use getResources to find resources on the classpath of the bundle -- cgit v1.2.3