diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2011-06-03 14:16:09 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2011-06-03 14:16:09 +0000 |
commit | 20d7bf60e644809a53bac8ab0b3265b400cc8fda (patch) | |
tree | 6146b4f1c56edf308d767ee87002c4fddb4f2e94 /sca-java-2.x/trunk/modules | |
parent | 52fd5c5e9f79e26aaa8f31cf48b91bb233b56635 (diff) |
Add a method to Deployer to get a contributions dependencies from a set of contribution metadata
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1131053 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules')
2 files changed, 35 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/Deployer.java b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/Deployer.java index f85bab06f4..f2af30b145 100644 --- a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/Deployer.java +++ b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/Deployer.java @@ -36,6 +36,7 @@ import org.apache.tuscany.sca.assembly.builder.BuilderContext; import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; +import org.apache.tuscany.sca.contribution.ContributionMetadata; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; @@ -220,4 +221,13 @@ public interface Deployer extends LifeCycleListener { void resolve(Contribution c, List<Contribution> dependentContributions, Monitor monitor) throws ContributionResolveException, CompositeBuilderException; public Contribution cloneSystemContribution(Monitor monitor); + + /** + * Get a contributions dependencies from meta data without having to load a Contribution + * @param possibles a Map with key contributionURI and value the contribution metaData + * @param targetURI the contributionURI to find the dependencies of + * @param monitor + * @return the list of contribution URIs + */ + public List<String> getDependencies(Map<String, ContributionMetadata> possibles, String targetURI, Monitor monitor); } diff --git a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java index 1d78b2f86a..dc7f5b29b5 100644 --- a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java +++ b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java @@ -26,6 +26,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -57,6 +58,7 @@ import org.apache.tuscany.sca.common.xml.stax.StAXHelper; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; import org.apache.tuscany.sca.contribution.ContributionFactory; +import org.apache.tuscany.sca.contribution.ContributionMetadata; import org.apache.tuscany.sca.contribution.DefaultImport; import org.apache.tuscany.sca.contribution.Export; import org.apache.tuscany.sca.contribution.Import; @@ -89,9 +91,9 @@ import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.MonitorFactory; import org.apache.tuscany.sca.monitor.ValidationException; import org.apache.tuscany.sca.runtime.BaseDomainRegistry; +import org.apache.tuscany.sca.runtime.ContributionDescription; import org.apache.tuscany.sca.runtime.DomainRegistry; import org.apache.tuscany.sca.runtime.EndpointReferenceBinder; -import org.apache.tuscany.sca.runtime.ContributionDescription; import org.apache.tuscany.sca.xsd.XSDFactory; import org.apache.tuscany.sca.xsd.XSDefinition; @@ -227,7 +229,7 @@ public class DeployerImpl implements Deployer { // push context here as the "stack" in this case is a list of nexted contributions // through which imports have been chased which may not make much sense to the // user so just report the contribution in error - monitor.pushContext("Contribution: " + contribution.getLocation()); + monitor.pushContext("Contribution: " + contribution.getURI()); Monitor.error(monitor, this, DEPLOYER_IMPL_VALIDATION_MESSAGES, "UnresolvedImport", import_); monitor.popContext(); } @@ -249,6 +251,27 @@ public class DeployerImpl implements Deployer { contribution.getDependencies().addAll(dependencies); } + + public List<String> getDependencies(Map<String, ContributionMetadata> possibles, String targetURI, Monitor monitor) { + Map<String, Contribution> contributions = new HashMap<String, Contribution>(); + for (String curi : possibles.keySet()) { + Contribution c = contributionFactory.createContribution(); + c.setURI(curi); + c.mergeMetaData(possibles.get(curi)); + contributions.put(curi, c); + } + + Contribution tc = contributions.remove(targetURI); + buildDependencies(tc, new ArrayList<Contribution>(contributions.values()), monitor); + + List<String> dcuris = new ArrayList<String>(); + for (Contribution dc : tc.getDependencies()) { + dcuris.add(dc.getURI()); + } + dcuris.remove(targetURI); + return dcuris; + } + /** * Pre-resolve phase for contributions, to set up handling of imports and exports prior to full resolution |