You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/02/28 06:42:03 UTC
svn commit: r631857 - in
/incubator/tuscany/java/sca/modules/workspace-impl/src: main/java/org/
main/java/org/apache/ main/java/org/apache/tuscany/
main/java/org/apache/tuscany/sca/
main/java/org/apache/tuscany/sca/workspace/ main/java/org/apache/tusca...
Author: jsdelfino
Date: Wed Feb 27 21:42:01 2008
New Revision: 631857
URL: http://svn.apache.org/viewvc?rev=631857&view=rev
Log:
Implemented a contribution info processor and contribution scanners. Implemented logic to calculate contribution dependencies.
Added:
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java (with props)
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java (with props)
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java (with props)
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java (with props)
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java (with props)
Added: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java?rev=631857&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java Wed Feb 27 21:42:01 2008
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.workspace.dependency.impl;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.workspace.Workspace;
+
+/**
+ * A contribution dependency analyzer.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ContributionDependencyAnalyzer {
+
+ /**
+ * Constructs a new WorkspaceDependencyAnalyzer.
+ */
+ public ContributionDependencyAnalyzer() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Calculate the set of contributions that a contribution depends on.
+ * @param workspace
+ * @param contribution
+ * @return
+ */
+ public Set<Contribution> calculateContributionDependencies(Workspace workspace, Contribution contribution) {
+ Set<Contribution> dependencies = new HashSet<Contribution>();
+
+ addContributionDependencies(workspace, contribution, dependencies);
+
+ return dependencies;
+ }
+
+ /**
+ * Analyze a contribution and add its dependencies to the given dependency set.
+ * @param workspace
+ * @param contribution
+ * @param dependencies
+ */
+ private void addContributionDependencies(Workspace workspace, Contribution contribution, Set<Contribution> dependencies) {
+
+ // Go through the contribution imports
+ for (Import import_: contribution.getImports()) {
+
+ // Go through all contribution candidates and their exports
+ for (Contribution dependency: workspace.getContributions()) {
+ 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)) {
+ if (!dependencies.contains(dependency)) {
+ dependencies.add(dependency);
+
+ // Now add the dependencies of that contribution
+ addContributionDependencies(workspace, dependency, dependencies);
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java?rev=631857&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java Wed Feb 27 21:42:01 2008
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.workspace.processor.impl;
+
+import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
+
+/**
+ * URLArtifactProcessor that handles contribution files and returns a contribution
+ * info model.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ContributionInfoProcessor implements URLArtifactProcessor<Contribution>{
+ private ContributionMetadataDocumentProcessor metadataProcessor;
+ private ContributionFactory contributionFactory;
+
+ public ContributionInfoProcessor(ContributionFactory contributionFactory, ContributionMetadataDocumentProcessor metadataProcessor) {
+ this.contributionFactory = contributionFactory;
+ this.metadataProcessor = metadataProcessor;
+ }
+
+ public String getArtifactType() {
+ return null;
+ }
+
+ public Class<Contribution> getModelType() {
+ return Contribution.class;
+ }
+
+ public Contribution read(URL parentURL, URI contributionURI, URL contributionURL) throws ContributionReadException {
+
+ // Create contribution model
+ Contribution contribution = contributionFactory.createContribution();
+ contribution.setURI(contributionURI.toString());
+ contribution.setUnresolved(true);
+
+ // Read generated and user sca-contribution.xml files
+ URLClassLoader cl = new URLClassLoader(new URL[]{contributionURL}, null);
+ for (String path: new String[]{
+ Contribution.SCA_CONTRIBUTION_GENERATED_META,
+ Contribution.SCA_CONTRIBUTION_META}) {
+ URL url = cl.getResource(path);
+ if (url != null) {
+ Contribution c = metadataProcessor.read(contributionURL, URI.create(path), url);
+ contribution.getImports().addAll(c.getImports());
+ contribution.getExports().addAll(c.getExports());
+ contribution.getDeployables().addAll(c.getDeployables());
+ }
+ }
+
+ return contribution;
+ }
+
+ public void resolve(Contribution contribution, ModelResolver resolver) throws ContributionResolveException {
+ metadataProcessor.resolve(contribution, resolver);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java?rev=631857&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java Wed Feb 27 21:42:01 2008
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.workspace.scanner.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.scanner.ContributionScanner;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+
+/**
+ * Folder contribution processor.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DirectoryContributionScanner implements ContributionScanner {
+
+ public DirectoryContributionScanner() {
+ }
+
+ public String getContributionType() {
+ return "application/vnd.tuscany.folder";
+ }
+
+ public URL getArtifactURL(URL sourceURL, String artifact) throws MalformedURLException {
+ return new URL(sourceURL, artifact);
+ }
+
+ public List<String> getArtifacts(URL packageSourceURL) throws ContributionException,
+ IOException {
+ if (packageSourceURL == null) {
+ throw new IllegalArgumentException("Invalid null package source URL.");
+ }
+
+ List<String> artifacts = new ArrayList<String>();
+
+ // Assume the root is a directory
+ File rootFolder;
+
+ try {
+ rootFolder = new File(packageSourceURL.toURI());
+ } catch (URISyntaxException e) {
+ throw new ContributionException(e);
+ }
+ if (rootFolder.isDirectory()) {
+ if (!rootFolder.exists()) {
+ throw new ContributionReadException(rootFolder.getAbsolutePath());
+ }
+
+ traverse(artifacts, rootFolder, rootFolder);
+ }
+
+ return artifacts;
+ }
+
+ /**
+ * Recursively traverse a root directory
+ *
+ * @param fileList
+ * @param file
+ * @param root
+ * @throws IOException
+ */
+ private static void traverse(List<String> fileList, File file, File root) throws IOException {
+ if (file.isFile()) {
+ fileList.add(root.toURI().relativize(file.toURI()).toString());
+ } else if (file.isDirectory()) {
+ String uri = root.toURI().relativize(file.toURI()).toString();
+ if (uri.endsWith("/")) {
+ uri = uri.substring(0, uri.length() - 1);
+ }
+ fileList.add(uri);
+
+ File[] files = file.listFiles();
+ for (File f: files) {
+ if (!f.getName().startsWith(".")) {
+ traverse(fileList, f, root);
+ }
+ }
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java?rev=631857&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java Wed Feb 27 21:42:01 2008
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.workspace.scanner.impl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarInputStream;
+
+import org.apache.tuscany.sca.contribution.scanner.ContributionScanner;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+
+/**
+ * JAR Contribution processor.
+ *
+ * @version $Rev$ $Date$
+ */
+public class JarContributionScanner implements ContributionScanner {
+
+ public JarContributionScanner() {
+ }
+
+ public String getContributionType() {
+ return "application/x-compressed";
+ }
+
+ public URL getArtifactURL(URL sourceURL, String artifact) throws MalformedURLException {
+ if (sourceURL.toString().startsWith("jar:")) {
+ return new URL(sourceURL, artifact.toString());
+ } else {
+ return new URL("jar:" + sourceURL.toExternalForm() + "!/" + artifact);
+ }
+ }
+
+ public List<String> getArtifacts(URL contributionURL) throws ContributionException, IOException {
+
+ // Assume the root is a jar file
+ JarInputStream jar = new JarInputStream(contributionURL.openStream());
+ try {
+ Set<String> names = new HashSet<String>();
+ while (true) {
+ JarEntry entry = jar.getNextJarEntry();
+ if (entry == null) {
+ // EOF
+ break;
+ }
+
+ String name = entry.getName();
+ if (!name.startsWith(".")) {
+
+ // Trim trailing /
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+
+ // Add the entry name
+ if (!names.contains(name)) {
+ names.add(name);
+
+ // Add parent folder names to the list too
+ for (;;) {
+ int s = name.lastIndexOf('/');
+ if (s == -1) {
+ name = "";
+ } else {
+ name = name.substring(0, s);
+ }
+ if (!names.contains(name)) {
+ names.add(name);
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Return list of URIs
+ List<String> artifacts = new ArrayList<String>(names);
+ return artifacts;
+
+ } finally {
+ jar.close();
+ }
+ }
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java?rev=631857&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java Wed Feb 27 21:42:01 2008
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.workspace.dependency.impl;
+
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.DefaultContributionFactory;
+import org.apache.tuscany.sca.contribution.namespace.NamespaceExport;
+import org.apache.tuscany.sca.contribution.namespace.NamespaceImport;
+import org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory;
+import org.apache.tuscany.sca.contribution.namespace.impl.NamespaceImportExportFactoryImpl;
+import org.apache.tuscany.sca.workspace.DefaultWorkspaceFactory;
+import org.apache.tuscany.sca.workspace.Workspace;
+import org.apache.tuscany.sca.workspace.WorkspaceFactory;
+
+/**
+ * Test the contribution dependency analyzer.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ContributionDependencyAnalyzerTestCase extends TestCase {
+
+ private ContributionFactory contributionFactory;
+ private WorkspaceFactory workspaceFactory;
+ private NamespaceImportExportFactory importExportFactory;
+
+ @Override
+ public void setUp() throws Exception {
+ contributionFactory = new DefaultContributionFactory();
+ workspaceFactory = new DefaultWorkspaceFactory();
+ importExportFactory = new NamespaceImportExportFactoryImpl();
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ }
+
+ public void testAnalyze() {
+ Workspace workspace = workspaceFactory.createWorkspace();
+ Contribution importer = contributionFactory.createContribution();
+ importer.setURI("importer");
+ workspace.getContributions().add(importer);
+ NamespaceImport import_ = importExportFactory.createNamespaceImport();
+ import_.setNamespace("http://foo");
+ importer.getImports().add(import_);
+
+ Contribution imported = contributionFactory.createContribution();
+ imported.setURI("imported");
+ workspace.getContributions().add(imported);
+ NamespaceExport export = importExportFactory.createNamespaceExport();
+ export.setNamespace("http://foo");
+ imported.getExports().add(export);
+ import_ = importExportFactory.createNamespaceImport();
+ import_.setNamespace("http://bar");
+ imported.getImports().add(import_);
+
+ Contribution imported2 = contributionFactory.createContribution();
+ imported2.setURI("imported2");
+ workspace.getContributions().add(imported2);
+ export = importExportFactory.createNamespaceExport();
+ export.setNamespace("http://bar");
+ imported2.getExports().add(export);
+
+ Contribution another = contributionFactory.createContribution();
+ another.setURI("another");
+ workspace.getContributions().add(another);
+ export = importExportFactory.createNamespaceExport();
+ export.setNamespace("http://another");
+ another.getExports().add(export);
+
+ ContributionDependencyAnalyzer analyzer = new ContributionDependencyAnalyzer();
+ Set<Contribution> dependencies = analyzer.calculateContributionDependencies(workspace, importer);
+ assertTrue(dependencies.size() == 2);
+ assertTrue(dependencies.contains(imported));
+ assertTrue(dependencies.contains(imported2));
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org