summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-08-17 14:18:01 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-08-17 14:18:01 +0000
commit9159c4372be80787e852350188d8b47466fa5ee8 (patch)
treea1347a55e2a61cef77d7476836de3206c4051940 /sca-java-2.x
parentddf21f5551f8275f6521e0e6fc030b4a0e6c1be7 (diff)
TUSCANY-3921: attemot to ensure that dependentContributions doesn't contain duplicates
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1158729 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x')
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
index e397fd219b..a0889ee9d3 100644
--- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
+++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
@@ -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) {