summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java
diff options
context:
space:
mode:
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.java17
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)) {