summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/extensibility-equinox
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-09-08 05:55:44 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-09-08 05:55:44 +0000
commita738b52d8257db36862548b699f81292d9ea0a0d (patch)
tree5e9f658e6d34758c47525a18861e25306ad5f405 /sca-java-2.x/trunk/modules/extensibility-equinox
parenteb7dc287d00e10e561043e859924ebc656235f83 (diff)
Tidy up binding.rest osgi enablement
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@993613 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/extensibility-equinox')
-rw-r--r--sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java31
-rw-r--r--sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java6
2 files changed, 25 insertions, 12 deletions
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 2503c0606e..97b4a7696b 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
@@ -95,7 +95,6 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
-
public static class ServiceDeclarationImpl implements ServiceDeclaration {
private Bundle bundle;
private URL url;
@@ -167,6 +166,11 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
return (javaClass != null && serviceType.isAssignableFrom(javaClass));
}
+ @Override
+ public Enumeration<URL> getResources(final String name) throws IOException {
+ return (Enumeration<URL>) bundle.getResources(name);
+ }
+
}
/**
@@ -201,7 +205,6 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
-
public ServiceDeclaration getServiceDeclaration(String name) throws IOException {
Collection<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (declarations.isEmpty()) {
@@ -256,15 +259,22 @@ public class EquinoxServiceDiscoverer 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);
- boolean isTuscanyService = serviceName.startsWith("org.apache.tuscany.sca.") ||
- serviceName.startsWith("META-INF/services/org.apache.tuscany.sca.");
+ boolean isTuscanyService = serviceName.startsWith("org.apache.tuscany.sca.");
+
+ if (serviceName.startsWith("/")) {
+ // If the service name starts with /, treat it as the entry name
+ serviceName = serviceName.substring(1);
+ } else {
+ // Use JDK SPI pattern
+ serviceName = "META-INF/services/" + serviceName;
+ }
Set<URL> visited = new HashSet<URL>();
//System.out.println(">>>> getServiceDeclarations()");
for (Bundle bundle : getBundles(isTuscanyService)) {
-// if (!isProviderBundle(bundle)) {
-// continue;
-// }
+ // if (!isProviderBundle(bundle)) {
+ // continue;
+ // }
Enumeration<URL> urls = null;
try {
// Use getResources to find resources on the classpath of the bundle
@@ -291,10 +301,6 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
logger.log(Level.SEVERE, e.getMessage(), e);
}
if (urls == null) {
- if(! serviceName.startsWith("META-INF/services/")) {
- return getServiceDeclarations("META-INF/services/" + serviceName);
- }
-
continue;
}
while (urls.hasMoreElements()) {
@@ -311,7 +317,8 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
try {
for (Map<String, String> attributes : ServiceDeclarationParser.load(url, isPropertyFile)) {
String className = attributes.get("class");
- ServiceDeclarationImpl descriptor = new ServiceDeclarationImpl(bundle, url, className, attributes);
+ ServiceDeclarationImpl descriptor =
+ new ServiceDeclarationImpl(bundle, url, className, attributes);
descriptors.add(descriptor);
}
} catch (IOException e) {
diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
index 0b0e46fd15..72c25427d6 100644
--- a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
+++ b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
@@ -111,6 +111,12 @@ public class EquinoxServiceDiscovererTestCase {
descriptors = discoverer.getServiceDeclarations("notthere");
Assert.assertEquals(0, descriptors.size());
}
+
+ @Test
+ public void testDiscoverResources() throws IOException {
+ Collection<ServiceDeclaration> descriptors = discoverer.getServiceDeclarations("/META-INF/services/test.TestService");
+ Assert.assertEquals(2, descriptors.size());
+ }
@Test
public void testDiscoveryFirst() throws IOException {