Author: antelder
Date: Wed Aug 17 14:18:01 2011
New Revision: 1158729

URL: http://svn.apache.org/viewvc?rev=1158729&view=rev
Log:
TUSCANY-3921: attemot to ensure that dependentContributions doesn't contain 
duplicates

Modified:
    
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java?rev=1158729&r1=1158728&r2=1158729&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
 Wed Aug 17 14:18:01 2011
@@ -434,24 +434,28 @@ public class NodeImpl implements Node {
     }
 
     protected List<Contribution> 
calculateDependentContributions(ContributionDescription cd) throws 
ContributionReadException, ValidationException {
-        List<Contribution> dependentContributions = new 
ArrayList<Contribution>();
+        Map<String, Contribution> dependentContributions = new HashMap<String, 
Contribution>();
         if (cd.getDependentContributionURIs() != null && 
cd.getDependentContributionURIs().size() > 0) {
             // if the install specified dependent uris use just those 
contributions
             for (String uri : cd.getDependentContributionURIs()) {
-                ContributionDescription dependee = 
domainRegistry.getInstalledContribution(uri);
-                if (dependee != null) {
-                    dependentContributions.add(loadContribution(dependee));
+                if (!!!dependentContributions.containsKey(uri)) {
+                    ContributionDescription dependee = 
domainRegistry.getInstalledContribution(uri);
+                    if (dependee != null) {
+                        dependentContributions.put(uri, 
loadContribution(dependee));
+                    }
                 }
             }
         } else {
             for (Import imprt : loadContribution(cd).getImports()) {
                 for (ContributionDescription exportingIC : 
findExportingContributions(imprt)) {
-                    dependentContributions.add(loadContribution(exportingIC));
+                    if 
(!!!dependentContributions.containsKey(exportingIC.getURI())) {
+                        dependentContributions.put(exportingIC.getURI(), 
loadContribution(exportingIC));
+                    }
                 }
             }
         }
         // TODO: there is also the location attribute on the import which 
should be taken into account
-        return dependentContributions;
+        return new ArrayList<Contribution>(dependentContributions.values());
     }
 
     private List<ContributionDescription> findExportingContributions(Import 
imprt) {


Reply via email to