diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java')
-rw-r--r-- | sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java | 17 |
1 files changed, 16 insertions, 1 deletions
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 eec4ff1734..d40c37e4be 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 @@ -28,6 +28,7 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.Collection; import java.util.Collections; +import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -106,6 +107,11 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer { } return (javaClass != null && serviceType.isAssignableFrom(javaClass)); } + + @Override + public Enumeration<URL> getResources(String name) throws IOException { + return Collections.enumeration(ContextClassLoaderServiceDiscoverer.this.getResources(name)); + } } private WeakReference<ClassLoader> classLoaderReference; @@ -155,7 +161,16 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer { // http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/XPathFactory.html boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName); - String name = "META-INF/services/" + serviceName; + + String name = serviceName; + if (serviceName.startsWith("/")) { + // If the service name starts with /, treat it as the entry name + name = serviceName.substring(1); + } else { + // Use JDK SPI pattern + name = "META-INF/services/" + serviceName; + } + boolean debug = logger.isLoggable(Level.FINE); try { for (final URL url : getResources(name)) { |