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) {