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]

Reply via email to