From c11d800db46ab42e99d7837427dd07dccaffc66a Mon Sep 17 00:00:00 2001 From: rfeng Date: Sat, 13 Feb 2010 01:19:32 +0000 Subject: Start to make extension points/extensions configurable from NodeFactory/ServiceDiscovery git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@909678 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/extensibility/ServiceDiscovery.java | 45 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'sca-java-2.x/trunk/modules/extensibility/src/main/java') diff --git a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java index ea3cf6d74f..00a037b4ed 100644 --- a/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java +++ b/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java @@ -24,12 +24,13 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.tuscany.sca.extensibility.impl.ClassLoaderDelegate; import org.apache.tuscany.sca.extensibility.impl.LDAPFilter; /** @@ -44,6 +45,7 @@ public final class ServiceDiscovery implements ServiceDiscoverer { private final static Logger logger = Logger.getLogger(ServiceDiscovery.class.getName()); private final static ServiceDiscovery INSTANCE = new ServiceDiscovery(); + private final Map> serviceAttributes = new HashMap>(); private ServiceDiscoverer discoverer; private ServiceDiscovery() { @@ -98,6 +100,15 @@ public final class ServiceDiscovery implements ServiceDiscoverer { public Collection getServiceDeclarations(String name, boolean byRanking) throws IOException { Collection declarations = getServiceDiscoverer().getServiceDeclarations(name); + // Check if any of the service declarations has attributes that are overrided + if (!serviceAttributes.isEmpty()) { + for (ServiceDeclaration declaration : declarations) { + Map attrs = getAttributes(name); + if (attrs != null) { + declaration.getAttributes().putAll(attrs); + } + } + } if (!byRanking) { return declarations; } @@ -237,5 +248,37 @@ public final class ServiceDiscovery implements ServiceDiscoverer { public ClassLoader getContextClassLoader() { return discoverer.getContextClassLoader(); } + + /** + * Set the attributes for a given service type + * @param serviceType + * @param attributes + */ + public void setAttribute(String serviceType, Map attributes) { + serviceAttributes.put(serviceType, attributes); + } + + /** + * Set an attribute to the given value for a service type + * @param serviceType The service type + * @param attribute The attribute name + * @param value The attribute value + */ + public void setAttribute(String serviceType, String attribute, String value) { + Map attributes = serviceAttributes.get(serviceType); + if (attributes == null) { + attributes = new HashMap(); + serviceAttributes.put(serviceType, attributes); + } + attributes.put(attribute, value); + } + /** + * Return a map of attributes for a given service type + * @param serviceType + * @return + */ + public Map getAttributes(String serviceType) { + return serviceAttributes.get(serviceType); + } } -- cgit v1.2.3