diff options
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/DependencyUtils.java | 82 |
1 files changed, 9 insertions, 73 deletions
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DependencyUtils.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DependencyUtils.java index f7c075782a..08c426da42 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DependencyUtils.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DependencyUtils.java @@ -23,12 +23,9 @@ import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -37,16 +34,15 @@ import javax.xml.stream.XMLStreamException; import org.apache.tuscany.sca.TuscanyRuntime;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionMetadata;
-import org.apache.tuscany.sca.contribution.Export;
-import org.apache.tuscany.sca.contribution.Import;
-import org.apache.tuscany.sca.contribution.java.JavaImport;
-import org.apache.tuscany.sca.contribution.namespace.NamespaceImport;
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.deployment.Deployer;
+import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.ValidationException;
public class DependencyUtils {
public static List<String> getDependencies(String contributionURI, Map<String, ZipInputStream> possibles) throws ValidationException, IOException, ContributionReadException, XMLStreamException {
+ Deployer deployer = TuscanyRuntime.newInstance().getDeployer();
Map<String, ContributionMetadata> contributionMetaDatas = new HashMap<String, ContributionMetadata>();
for (String curi : possibles.keySet()) {
@@ -65,76 +61,16 @@ public class DependencyUtils { }
bos.close();
- contributionMetaDatas.put(curi, (ContributionMetadata)TuscanyRuntime.newInstance().getDeployer().loadXMLDocument(new StringReader(baos.toString())));
+ contributionMetaDatas.put(curi, (ContributionMetadata)deployer.loadXMLDocument(new StringReader(baos.toString())));
}
}
zis.close(); // close it so no one tries to reuse the already read stream
}
- return getDependencies(contributionMetaDatas, contributionURI);
- }
-
- public static List<String> getDependencies(Map<String, ContributionMetadata> possibles, String targetURI) throws ValidationException {
- if (!possibles.containsKey(targetURI)) {
- throw new IllegalArgumentException(targetURI);
+ Monitor monitor = deployer.createMonitor();
+ try {
+ return deployer.getDependencies(contributionMetaDatas, contributionURI, monitor);
+ } finally {
+ monitor.analyzeProblems();
}
-
- Set<String> dependencies = new HashSet<String>();
-
- // Go through the contribution imports
- for (Import import_ : possibles.get(targetURI).getImports()) {
- boolean resolved = false;
-
- // Go through all contribution candidates and their exports
- List<Export> matchingExports = new ArrayList<Export>();
-
- for (String dependencyURI : possibles.keySet()) {
- if (dependencyURI.equals(targetURI)) {
- // Do not self import
- continue;
- }
- ContributionMetadata dependency = possibles.get(dependencyURI);
-
- // When a contribution contains a reference to an artifact from a namespace that
- // is declared in an import statement of the contribution, if the SCA artifact
- // resolution mechanism is used to resolve the artifact, the SCA runtime MUST resolve
- // artifacts from the locations identified by the import statement(s) for the namespace.
- if (import_ instanceof NamespaceImport) {
- NamespaceImport namespaceImport = (NamespaceImport)import_;
- if (namespaceImport.getLocation() != null)
- if (!namespaceImport.getLocation().equals(dependencyURI))
- continue;
- }
- if (import_ instanceof JavaImport) {
- JavaImport javaImport = (JavaImport)import_;
- if (javaImport.getLocation() != null)
- if (!javaImport.getLocation().equals(dependencyURI))
- continue;
- }
-
- for (Export export : dependency.getExports()) {
-
- // If an export from a contribution matches the import in hand
- // add that contribution to the dependency set
- if (import_.match(export)) {
- resolved = true;
- matchingExports.add(export);
-
- if (!dependencies.contains(dependencyURI)) {
- dependencies.add(dependencyURI);
-
- // Now add the dependencies of that contribution
- getDependencies(possibles, dependencyURI);
-
- } // end if
- } // end if
- } // end for
- } // end for
-
- if (!resolved) {
- throw new ValidationException("Contribution " + targetURI + " has unresolved Import: " + import_);
- }
- }
-
- return new ArrayList<String>(dependencies);
}
}
|