summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/extensibility-equinox
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-31 01:59:16 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-31 01:59:16 +0000
commit12b7cae9bf154e509f3769404f090ce15d1e3b77 (patch)
tree977637aa0761eab5fc3f4725157d430dc3c310d0 /java/sca/modules/extensibility-equinox
parent3ed44524c6e7fa0646329412ac04fa9bef3fd942 (diff)
Enhance the service discovery by testing the types
Add more test cases Improve the syntax parsing for service declarations git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@799486 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/extensibility-equinox')
-rw-r--r--java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java50
-rw-r--r--java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java6
-rw-r--r--java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java2
3 files changed, 17 insertions, 41 deletions
diff --git a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
index 930b308dfc..61bba30719 100644
--- a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.extensibility.equinox;
+import static org.apache.tuscany.sca.extensibility.ServiceDeclarationParser.parseDeclaration;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -35,7 +37,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -122,6 +123,15 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
return bundle;
}
+ public boolean isAssignableTo(Class<?> serviceType) {
+ try {
+ loadClass();
+ } catch (ClassNotFoundException e) {
+ // Ignore
+ }
+ return (javaClass != null && serviceType.isAssignableFrom(javaClass));
+ }
+
}
/**
@@ -156,40 +166,6 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
- /**
- * Parse a service declaration in the form class;attr=value,attr=value and
- * return a map of attributes
- *
- * @param declaration
- * @return a map of attributes
- */
- private static Map<String, String> parseServiceDeclaration(String declaration) {
- Map<String, String> attributes = new HashMap<String, String>();
- int index = declaration.indexOf(';');
- if (index != -1) {
- attributes.put("class", declaration.substring(0, index).trim());
- declaration = declaration.substring(index);
- } else {
- int j = declaration.indexOf('=');
- if (j == -1) {
- attributes.put("class", declaration.trim());
- return attributes;
- } else {
- declaration = ";" + declaration;
- }
- }
- StringTokenizer tokens = new StringTokenizer(declaration);
- for (; tokens.hasMoreTokens();) {
- String key = tokens.nextToken("=").substring(1).trim();
- if (key == null)
- break;
- String value = tokens.nextToken(",").substring(1).trim();
- if (value == null)
- break;
- attributes.put(key, value);
- }
- return attributes;
- }
public ServiceDeclaration getServiceDeclaration(String name) throws IOException {
Collection<ServiceDeclaration> declarations = getServiceDeclarations(name);
@@ -285,7 +261,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
attributes.put(key, value);
attributes.put("uri", key);
}
- attributes.put("class", value);
+ attributes.putAll(parseDeclaration(value));
ServiceDeclarationImpl descriptor = new ServiceDeclarationImpl(bundle, url, value, attributes);
descriptors.add(descriptor);
}
@@ -306,7 +282,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
logger.fine("Registering service provider: " + reg);
}
- Map<String, String> attributes = parseServiceDeclaration(reg);
+ Map<String, String> attributes = parseDeclaration(reg);
String className = attributes.get("class");
if (className == null) {
// Add a unique class name to prevent equals() from returning true
diff --git a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java
index d5d7b92022..a9a0d6d3f6 100644
--- a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java
+++ b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java
@@ -19,8 +19,6 @@
package org.apache.tuscany.sca.extensibility.equinox;
-import java.util.logging.Logger;
-
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
@@ -31,12 +29,12 @@ import org.osgi.framework.BundleContext;
* @version $Rev$ $Date$
*/
public class EquinoxServiceDiscoveryActivator implements BundleActivator {
- private static final Logger logger = Logger.getLogger(EquinoxServiceDiscoveryActivator.class.getName());
+ // private static final Logger logger = Logger.getLogger(EquinoxServiceDiscoveryActivator.class.getName());
public void start(BundleContext context) throws Exception {
EquinoxServiceDiscoverer discoverer = new EquinoxServiceDiscoverer(context);
ServiceDiscovery.getInstance().setServiceDiscoverer(discoverer);
- logger.info("Equinox-based service discoverer is now configured.");
+ // logger.info("Equinox-based service discoverer is now configured.");
}
public void stop(BundleContext context) throws Exception {
diff --git a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
index 2ed3cfd82c..deb4221f4f 100644
--- a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
+++ b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
@@ -108,6 +108,7 @@ public class EquinoxServiceDiscovererTestCase {
for (Bundle b : bundles) {
b.start();
System.out.println("Started "+b.getSymbolicName() + " [" + getState(b) + "]");
+ /*
// Get the Platform.getExtensionRegistry()
if ("org.eclipse.core.runtime".equals(b.getSymbolicName())) {
// The Platform class loaded by the bundle is different that the one
@@ -117,6 +118,7 @@ public class EquinoxServiceDiscovererTestCase {
Object reg = m.invoke(cls);
System.out.println(reg);
}
+ */
}
}