summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/extensibility-osgi
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-09-03 00:48:29 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-09-03 00:48:29 +0000
commitcc8967d7638d980d02cb44be647f76d979b02071 (patch)
tree7983a7c40061e5c9bde526a64d6d749f4b49886d /java/sca/modules/extensibility-osgi
parent19bc9a9877d710e9e85385915e4628df876af4db (diff)
Make a few fields non-static to ServiceDiscovery
Enable Equinox launcher to load tuscany jars git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@691447 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/extensibility-osgi')
-rw-r--r--java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java30
-rw-r--r--java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoveryActivator.java2
-rw-r--r--java/sca/modules/extensibility-osgi/src/test/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscovererTestCase.java11
3 files changed, 32 insertions, 11 deletions
diff --git a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
index 10954b1f5f..5f951baf84 100644
--- a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
+++ b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
@@ -254,7 +254,7 @@ public class OSGiServiceDiscoverer implements ServiceDiscoverer {
}
return attributes;
}
-
+
public BundleContext getBundleContext() {
return context;
}
@@ -266,9 +266,9 @@ public class OSGiServiceDiscoverer implements ServiceDiscoverer {
public ClassLoader getContextClassLoader() {
return classLoader;
}
-
+
public <T> T getContext() {
- return (T) context;
+ return (T)context;
}
@SuppressWarnings("unchecked")
@@ -278,14 +278,19 @@ public class OSGiServiceDiscoverer implements ServiceDiscoverer {
serviceName = "META-INF/services/" + serviceName;
- int index = serviceName.lastIndexOf('/');
- String path = serviceName.substring(0, index);
- String file = serviceName.substring(index + 1);
+ // int index = serviceName.lastIndexOf('/');
+ // String path = serviceName.substring(0, index);
+ // String file = serviceName.substring(index + 1);
+
+ // long start = System.currentTimeMillis();
+ try {
+ for (Bundle bundle : context.getBundles()) {
+ // Enumeration<URL> urls = bundle.findEntries(path, file, false); // This is expensive
+ final URL url = bundle.getEntry(serviceName);
+ if (url == null) {
+ continue;
+ }
- for (Bundle bundle : context.getBundles()) {
- Enumeration<URL> urls = bundle.findEntries(path, file, false);
- while (urls != null && urls.hasMoreElements()) {
- final URL url = urls.nextElement();
if (debug) {
logger.fine("Reading service provider file: " + url.toExternalForm());
}
@@ -345,6 +350,11 @@ public class OSGiServiceDiscoverer implements ServiceDiscoverer {
logger.log(Level.SEVERE, e.getMessage(), e);
}
}
+ } finally {
+// long end = System.currentTimeMillis();
+// if (true) {
+// logger.info("Duration: " + (end - start) + " ms");
+// }
}
return descriptors;
diff --git a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoveryActivator.java b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoveryActivator.java
index b69f36d383..208ef1a74f 100644
--- a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoveryActivator.java
+++ b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoveryActivator.java
@@ -33,7 +33,7 @@ public class OSGiServiceDiscoveryActivator implements BundleActivator {
if (bundleContext == null) {
bundleContext = context;
OSGiServiceDiscoverer discoverer = new OSGiServiceDiscoverer(bundleContext);
- ServiceDiscovery.setServiceDiscoverer(discoverer);
+ ServiceDiscovery.getInstance().setServiceDiscoverer(discoverer);
}
}
diff --git a/java/sca/modules/extensibility-osgi/src/test/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscovererTestCase.java b/java/sca/modules/extensibility-osgi/src/test/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscovererTestCase.java
index 8a9b8d485c..472cfbc17c 100644
--- a/java/sca/modules/extensibility-osgi/src/test/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscovererTestCase.java
+++ b/java/sca/modules/extensibility-osgi/src/test/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscovererTestCase.java
@@ -19,8 +19,12 @@
package org.apache.tuscany.sca.extensibility.osgi;
+import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -109,4 +113,11 @@ public class OSGiServiceDiscovererTestCase {
descriptors = discoverer.discover("notthere", true);
Assert.assertEquals(0, descriptors.size());
}
+
+ @Test
+ public void testClassLoader () throws IOException {
+ Enumeration<URL> resources = discoverer.getContextClassLoader().getResources("META-INF/services/org.apache.tuscany.sca.endpointresolver.EndpointResolverFactory");
+ List<URL> list = Collections.list(resources);
+ Assert.assertEquals(1, list.size());
+ }
}