summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/extensibility
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 22:53:11 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 22:53:11 +0000
commit286087d1aefc942ea9cafa0f2523ee655c5179f8 (patch)
tree702913e225176ca36e2b6efeb129c1b6a09b260d /java/sca/modules/extensibility
parente30b75d984cf32851023d4550463c535a12f0980 (diff)
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
Diffstat (limited to 'java/sca/modules/extensibility')
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java16
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java9
2 files changed, 19 insertions, 6 deletions
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<URL>() {
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<List<URL>>() {
public List<URL> 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> 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<ServiceDeclaration> discover(String serviceName, boolean firstOnly);
+
+ /**
+ * Get the context for the service discoverer
+ * @param <T> It can be a ClassLoader for JSE or BundleContext for OSGi
+ * @return The context
+ */
+ <T> T getContext();
+
+ ClassLoader getContextClassLoader();
}