diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2008-09-03 00:48:29 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2008-09-03 00:48:29 +0000 |
commit | cc8967d7638d980d02cb44be647f76d979b02071 (patch) | |
tree | 7983a7c40061e5c9bde526a64d6d749f4b49886d /java/sca/modules/extensibility-osgi | |
parent | 19bc9a9877d710e9e85385915e4628df876af4db (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')
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()); + } } |