Author: jsdelfino
Date: Mon Mar 3 10:10:32 2008
New Revision: 633219
URL: http://svn.apache.org/viewvc?rev=633219&view=rev
Log:
Make sure that contribution dependencies are returned in the correct order.
Fixed the getArtifactURL method to always return a URL.
Modified:
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
Modified:
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=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzer.java
Mon Mar 3 10:10:32 2008
@@ -19,7 +19,10 @@
package org.apache.tuscany.sca.workspace.dependency.impl;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.apache.tuscany.sca.contribution.Contribution;
@@ -47,12 +50,15 @@
* @param contribution
* @return
*/
- public Set<Contribution> calculateContributionDependencies(Workspace
workspace, Contribution contribution) {
- Set<Contribution> dependencies = new HashSet<Contribution>();
+ public List<Contribution> calculateContributionDependencies(Workspace
workspace, Contribution contribution) {
+ List<Contribution> dependencies = new ArrayList<Contribution>();
+ Set<Contribution> set = new HashSet<Contribution>();
- addContributionDependencies(workspace, contribution, dependencies);
- dependencies.remove(contribution);
+ dependencies.add(contribution);
+ set.add(contribution);
+ addContributionDependencies(workspace, contribution, dependencies,
set);
+ Collections.reverse(dependencies);
return dependencies;
}
@@ -61,8 +67,9 @@
* @param workspace
* @param contribution
* @param dependencies
+ * @param set
*/
- private void addContributionDependencies(Workspace workspace, Contribution
contribution, Set<Contribution> dependencies) {
+ private void addContributionDependencies(Workspace workspace, Contribution
contribution, List<Contribution> dependencies, Set<Contribution> set) {
// Go through the contribution imports
for (Import import_: contribution.getImports()) {
@@ -74,11 +81,12 @@
// 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)) {
+ if (!set.contains(dependency)) {
+ set.add(dependency);
dependencies.add(dependency);
// Now add the dependencies of that contribution
- addContributionDependencies(workspace, dependency,
dependencies);
+ addContributionDependencies(workspace, dependency,
dependencies, set);
}
}
}
Modified:
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java?rev=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
Mon Mar 3 10:10:32 2008
@@ -69,6 +69,7 @@
// Create contribution model
Contribution contribution = contributionFactory.createContribution();
contribution.setURI(contributionURI.toString());
+ contribution.setLocation(contributionURL.toString());
ModelResolver modelResolver = new
ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
contribution.setModelResolver(modelResolver);
contribution.setUnresolved(true);
@@ -120,7 +121,9 @@
for (Artifact artifact : contribution.getArtifacts()) {
Object model = artifact.getModel();
if (model != null) {
- artifactProcessor.resolve(model, contributionResolver);
+ //FIXME Resolution is broken right now since Java imports
+ // expect a classloader to be associated with the contribution
+ //artifactProcessor.resolve(model, contributionResolver);
}
}
Modified:
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=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
Mon Mar 3 10:10:32 2008
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.workspace.processor.impl;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
import java.net.URL;
@@ -67,6 +69,7 @@
// Create contribution model
Contribution contribution = contributionFactory.createContribution();
contribution.setURI(contributionURI.toString());
+ contribution.setLocation(contributionURL.toString());
ModelResolver modelResolver = new
ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
contribution.setModelResolver(modelResolver);
contribution.setUnresolved(true);
@@ -84,12 +87,19 @@
Contribution.SCA_CONTRIBUTION_GENERATED_META,
Contribution.SCA_CONTRIBUTION_META}) {
URL url = scanner.getArtifactURL(contributionURL, path);
- if (url != null) {
- Contribution c =
(Contribution)artifactProcessor.read(contributionURL, URI.create(path), url);
- contribution.getImports().addAll(c.getImports());
- contribution.getExports().addAll(c.getExports());
- contribution.getDeployables().addAll(c.getDeployables());
+ try {
+ // Check if the file actually exists before trying to read it
+ InputStream is = url.openStream();
+ is.close();
+ } catch (IOException e) {
+ continue;
}
+
+ // Read the sca-contribution.xml file
+ Contribution c =
(Contribution)artifactProcessor.read(contributionURL, URI.create(path), url);
+ contribution.getImports().addAll(c.getImports());
+ contribution.getExports().addAll(c.getExports());
+ contribution.getDeployables().addAll(c.getDeployables());
}
return contribution;
Modified:
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=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/DirectoryContributionScanner.java
Mon Mar 3 10:10:32 2008
@@ -47,14 +47,10 @@
public URL getArtifactURL(URL contributionURL, String artifact) throws
ContributionReadException {
File directory = directory(contributionURL);
File file = new File(directory, artifact);
- if (file.exists()) {
- try {
- return file.toURI().toURL();
- } catch (MalformedURLException e) {
- throw new ContributionReadException(e);
- }
- } else {
- return null;
+ try {
+ return file.toURI().toURL();
+ } catch (MalformedURLException e) {
+ throw new ContributionReadException(e);
}
}
Modified:
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=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/scanner/impl/JarContributionScanner.java
Mon Mar 3 10:10:32 2008
@@ -20,7 +20,6 @@
package org.apache.tuscany.sca.workspace.scanner.impl;
import java.io.IOException;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -55,12 +54,6 @@
} else {
url = new URL("jar:" + contributionURL.toExternalForm() + "!/"
+ artifact);
}
- try {
- InputStream is = url.openStream();
- is.close();
- } catch (IOException e) {
- return null;
- }
return url;
} catch (MalformedURLException e) {
throw new ContributionReadException(e);
@@ -82,7 +75,7 @@
}
String name = entry.getName();
- if (!name.startsWith(".")) {
+ if (name.length() != 0 && !name.startsWith(".")) {
// Trim trailing /
if (name.endsWith("/")) {
@@ -101,7 +94,7 @@
} else {
name = name.substring(0, s);
}
- if (!names.contains(name)) {
+ if (name.length() != 0 &&
!names.contains(name)) {
names.add(name);
} else {
break;
Modified:
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=633219&r1=633218&r2=633219&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/dependency/impl/ContributionDependencyAnalyzerTestCase.java
Mon Mar 3 10:10:32 2008
@@ -19,7 +19,7 @@
package org.apache.tuscany.sca.workspace.dependency.impl;
-import java.util.Set;
+import java.util.List;
import junit.framework.TestCase;
@@ -90,8 +90,9 @@
another.getExports().add(export);
ContributionDependencyAnalyzer analyzer = new
ContributionDependencyAnalyzer();
- Set<Contribution> dependencies =
analyzer.calculateContributionDependencies(workspace, importer);
- assertTrue(dependencies.size() == 2);
+ List<Contribution> dependencies =
analyzer.calculateContributionDependencies(workspace, importer);
+ assertTrue(dependencies.size() == 3);
+ assertTrue(dependencies.contains(importer));
assertTrue(dependencies.contains(imported));
assertTrue(dependencies.contains(imported2));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]