From 20d7bf60e644809a53bac8ab0b3265b400cc8fda Mon Sep 17 00:00:00 2001 From: antelder Date: Fri, 3 Jun 2011 14:16:09 +0000 Subject: 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 --- .../apache/tuscany/sca/deployment/Deployer.java | 10 ++++++++ .../tuscany/sca/deployment/impl/DeployerImpl.java | 27 ++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) (limited to 'sca-java-2.x/trunk/modules/deployment/src/main') 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 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 getDependencies(Map 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 getDependencies(Map possibles, String targetURI, Monitor monitor) { + Map contributions = new HashMap(); + 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(contributions.values()), monitor); + + List dcuris = new ArrayList(); + 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 -- cgit v1.2.3