From 286087d1aefc942ea9cafa0f2523ee655c5179f8 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 8 Aug 2008 22:53:11 +0000 Subject: Support to start OSGi from a list of jar files Add more context to ServiceDiscoverer git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684135 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/extensibility/ClasspathServiceDiscoverer.java | 16 ++++++++++------ .../tuscany/sca/extensibility/ServiceDiscoverer.java | 9 +++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'java/sca/modules/extensibility') diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java index da94931087..59c50785a6 100644 --- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java +++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java @@ -81,7 +81,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer { } public Class loadClass(String className) throws ClassNotFoundException { - return getClassLoader().loadClass(className); + return getContextClassLoader().loadClass(className); } private ClasspathServiceDiscoverer getOuterType() { @@ -90,7 +90,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer { public String toString() { StringBuffer sb = new StringBuffer(); - sb.append("ClassLoader: ").append(getClassLoader()); + sb.append("ClassLoader: ").append(getContextClassLoader()); sb.append(" Attributes: ").append(attributes); return sb.toString(); } @@ -98,7 +98,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer { public URL getResource(final String name) { return AccessController.doPrivileged(new PrivilegedAction() { public URL run() { - return getClassLoader().getResource(name); + return getContextClassLoader().getResource(name); } }); } @@ -123,14 +123,14 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer { return AccessController.doPrivileged(new PrivilegedExceptionAction>() { public List run() throws IOException { if (firstOnly) { - URL url = getClassLoader().getResource(name); + URL url = getContextClassLoader().getResource(name); if (url != null) { return Arrays.asList(url); } else { return Collections.emptyList(); } } else { - return Collections.list(getClassLoader().getResources(name)); + return Collections.list(getContextClassLoader().getResources(name)); } } }); @@ -139,9 +139,13 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer { } } - private ClassLoader getClassLoader() { + public ClassLoader getContextClassLoader() { return classLoaderReference.get(); } + + public T getContext() { + return (T) getContextClassLoader(); + } /** * Parse a service declaration in the form class;attr=value,attr=value and diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java index 4079f86d99..b4fdfd4d8a 100644 --- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java +++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java @@ -33,4 +33,13 @@ public interface ServiceDiscoverer { * @return A set of service descriptors */ Set discover(String serviceName, boolean firstOnly); + + /** + * Get the context for the service discoverer + * @param It can be a ClassLoader for JSE or BundleContext for OSGi + * @return The context + */ + T getContext(); + + ClassLoader getContextClassLoader(); } -- cgit v1.2.3