diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/extensibility/src/main/java/org')
3 files changed, 14 insertions, 6 deletions
diff --git a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java index 3ffe893553..57ef069e4f 100644 --- a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java +++ b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java @@ -50,7 +50,7 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry { this.discovery = ServiceDiscovery.getInstance(); } - protected DefaultExtensionPointRegistry(ServiceDiscovery discovery) { + public DefaultExtensionPointRegistry(ServiceDiscovery discovery) { this.discovery = discovery; } diff --git a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java index 4e997f4f8b..eec4ff1734 100644 --- a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java +++ b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java @@ -115,17 +115,25 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer { this.classLoaderReference = new WeakReference<ClassLoader>(classLoader); } + public ContextClassLoaderServiceDiscoverer(ClassLoader classLoader) { + if (classLoader == null) { + classLoader = Thread.currentThread().getContextClassLoader(); + } + this.classLoaderReference = new WeakReference<ClassLoader>(classLoader); + } + public ClassLoader getContextClassLoader() { //return classLoaderReference.get(); return Thread.currentThread().getContextClassLoader(); } - private List<URL> getResources(final String name) throws IOException { + private Collection<URL> getResources(final String name) throws IOException { try { - return AccessController.doPrivileged(new PrivilegedExceptionAction<List<URL>>() { - public List<URL> run() throws IOException { + return AccessController.doPrivileged(new PrivilegedExceptionAction<Collection<URL>>() { + public Collection<URL> run() throws IOException { List<URL> urls = Collections.list(classLoaderReference.get().getResources(name)); - return urls; + // Eliminate the duplicate URLs (which can be found from child/parent classloaders) + return new HashSet<URL>(urls); } }); } catch (PrivilegedActionException e) { diff --git a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java index 00a037b4ed..204d17195b 100644 --- a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java +++ b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java @@ -83,7 +83,7 @@ public final class ServiceDiscovery implements ServiceDiscoverer { } } catch (Throwable e) { } - discoverer = new ContextClassLoaderServiceDiscoverer(); + discoverer = new ContextClassLoaderServiceDiscoverer(getClass().getClassLoader()); return discoverer; } |