You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/12/30 17:59:42 UTC

svn commit: r1053940 - /tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java

Author: rfeng
Date: Thu Dec 30 16:59:41 2010
New Revision: 1053940

URL: http://svn.apache.org/viewvc?rev=1053940&view=rev
Log:
Add a method remove duplicate service declsrations

Modified:
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java?rev=1053940&r1=1053939&r2=1053940&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java Thu Dec 30 16:59:41 2010
@@ -26,6 +26,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
@@ -285,4 +286,21 @@ public final class ServiceDiscovery impl
     public Map<String, String> getAttributes(String serviceType) {
         return serviceAttributes.get(serviceType);
     }
+    
+    /**
+     * Remove the duplicate service declarations. The duplication happens when we have the same jar from more than one entries on the classpath
+     * @param declarations
+     * @return
+     */
+    public static Collection<ServiceDeclaration> removeDuplicateDeclarations(Collection<ServiceDeclaration> declarations) {
+        // Use LinkedHashMap to maintain the insertion order
+        Map<String, ServiceDeclaration> map = new LinkedHashMap<String, ServiceDeclaration>();
+        for (ServiceDeclaration sd : declarations) {
+            ServiceDeclaration existed = map.put(sd.getClassName(), sd);
+            if (existed != null) {
+                logger.warning("Duplicate service declaration is ignored: " + existed + " <-> " + sd);
+            }
+        }
+        return map.values();
+    }
 }