diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-24 23:17:59 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-24 23:17:59 +0000 |
commit | dbed306fd58a4007be3df458e571bf4fd4302dce (patch) | |
tree | 5705f720d547fe3681829e2fa1337f3eef18174e /java/sca/modules/extensibility-equinox | |
parent | 2ee5c99d377a56d012604d5886df5b35142d4237 (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.java | 27 |
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)); |