summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/extensibility-equinox
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-02-24 23:17:59 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-02-24 23:17:59 +0000
commitdbed306fd58a4007be3df458e571bf4fd4302dce (patch)
tree5705f720d547fe3681829e2fa1337f3eef18174e /java/sca/modules/extensibility-equinox
parent2ee5c99d377a56d012604d5886df5b35142d4237 (diff)
A more complete fix for TUSCANY-2869
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@747607 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.java27
1 files changed, 27 insertions, 0 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 7fba6a003e..4068ef272f 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
@@ -32,6 +32,7 @@ import java.util.Enumeration;
import java.util.HashMap;
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;
@@ -198,6 +199,8 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
boolean debug = logger.isLoggable(Level.FINE);
Set<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
+ // http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/XPathFactory.html
+ boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName);
serviceName = "META-INF/services/" + serviceName;
for (Bundle bundle : context.getBundles()) {
@@ -253,6 +256,30 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
} catch (PrivilegedActionException e) {
throw (IOException)e.getException();
}
+ if (isPropertyFile) {
+ // Load as a property file
+ Properties props = new Properties();
+ props.load(is);
+ is.close();
+ for (Map.Entry<Object, Object> e : props.entrySet()) {
+ Map<String, String> attributes = new HashMap<String, String>();
+ String key = (String)e.getKey();
+ String value = (String)e.getValue();
+ // Unfortunately, the xalan file only has the classname
+ if ("".equals(value)) {
+ value = key;
+ key = "";
+ }
+ if (!"".equals(key)) {
+ attributes.put(key, value);
+ attributes.put("uri", key);
+ }
+ attributes.put("class", value);
+ ServiceDeclarationImpl descriptor = new ServiceDeclarationImpl(bundle, url, value, attributes);
+ descriptors.add(descriptor);
+ }
+ continue;
+ }
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(is));