From dbed306fd58a4007be3df458e571bf4fd4302dce Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 24 Feb 2009 23:17:59 +0000 Subject: A more complete fix for TUSCANY-2869 git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@747607 13f79535-47bb-0310-9956-ffa450edef68 --- .../equinox/EquinoxServiceDiscoverer.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'java/sca/modules/extensibility-equinox') 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 descriptors = new HashSet(); + // 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 e : props.entrySet()) { + Map attributes = new HashMap(); + 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)); -- cgit v1.2.3