summaryrefslogtreecommitdiffstats
path: root/branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java')
-rw-r--r--branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java23
1 files changed, 19 insertions, 4 deletions
diff --git a/branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
index 5ab5a66077..c918ad735d 100644
--- a/branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ b/branches/sca-equinox/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
@@ -23,6 +23,8 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
@@ -181,8 +183,17 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
return attributes;
}
+
+ public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException {
+ Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
+ if (declarations.isEmpty()) {
+ return null;
+ } else {
+ return declarations.iterator().next();
+ }
+ }
- public Set<ServiceDeclaration> discover(String serviceName, boolean firstOnly) {
+ public Set<ServiceDeclaration> getServiceDeclarations(String serviceName) throws IOException {
boolean debug = logger.isLoggable(Level.FINE);
Set<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
@@ -256,9 +267,6 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
ServiceDeclarationImpl descriptor =
new ServiceDeclarationImpl(bundle, url, className, attributes);
descriptors.add(descriptor);
- if (firstOnly) {
- return descriptors;
- }
}
}
} finally {
@@ -278,4 +286,11 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
return descriptors;
}
+ public Object newFactoryClassInstance(String name) throws SecurityException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException {
+ Class<?> factoryClass = Class.forName(name, false, getClass().getClassLoader());
+ Method newInstanceMethod = factoryClass.getMethod("newInstance");
+ Object factory = newInstanceMethod.invoke(null);
+ return factory;
+ }
+
}