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/04/23 07:55:38 UTC

svn commit: r650753 - in /incubator/tuscany/java/sca/modules/workspace-impl/src: main/java/org/apache/tuscany/sca/workspace/builder/impl/ main/java/org/apache/tuscany/sca/workspace/processor/impl/ test/java/org/apache/tuscany/sca/workspace/builder/impl/

Author: jsdelfino
Date: Tue Apr 22 22:55:36 2008
New Revision: 650753

URL: http://svn.apache.org/viewvc?rev=650753&view=rev
Log:
Handle initialization of imports/exports in ContributionDependencyBuilder.

Modified:
    incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.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/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java

Modified: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java?rev=650753&r1=650752&r2=650753&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java Tue Apr 22 22:55:36 2008
@@ -24,13 +24,13 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
 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.contribution.resolver.DefaultImportAllModelResolver;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.Problem;
 import org.apache.tuscany.sca.monitor.Problem.Severity;
@@ -57,17 +57,17 @@
     
     /**
      * Calculate the set of contributions that a contribution depends on.
-     * @param workspace
      * @param contribution
+     * @param workspace
      * @return
      */
-    public List<Contribution> buildContributionDependencies(Workspace workspace, Contribution contribution) {
+    public List<Contribution> buildContributionDependencies(Contribution contribution, Workspace workspace) {
         List<Contribution> dependencies = new ArrayList<Contribution>();
         Set<Contribution> set = new HashSet<Contribution>();
 
         dependencies.add(contribution);
         set.add(contribution);
-        addContributionDependencies(workspace, contribution, dependencies, set);
+        addContributionDependencies(contribution, workspace, dependencies, set);
         
         Collections.reverse(dependencies);
         return dependencies;
@@ -75,18 +75,20 @@
     
     /**
      * Analyze a contribution and add its dependencies to the given dependency set.
-     * @param workspace
      * @param contribution
+     * @param workspace
      * @param dependencies
      * @param set
      */
-    private void addContributionDependencies(Workspace workspace, Contribution contribution, List<Contribution> dependencies, Set<Contribution> set) {
+    private void addContributionDependencies(Contribution contribution, Workspace workspace, List<Contribution> dependencies, Set<Contribution> set) {
         
         // Go through the contribution imports
         for (Import import_: contribution.getImports()) {
             boolean resolved = false;
             
             // Go through all contribution candidates and their exports
+            List<Contribution> matched = new ArrayList<Contribution>();
+            Set<Contribution> mset = new HashSet<Contribution>();
             for (Contribution dependency: workspace.getContributions()) {
                 for (Export export: dependency.getExports()) {
                     
@@ -94,19 +96,29 @@
                     // add that contribution to the dependency set
                     if (import_.match(export)) {
                         resolved = true;
+                        
+                        if (!mset.contains(dependency)) {
+                            mset.add(dependency);
+                            matched.add(dependency);
+                        }
 
                         if (!set.contains(dependency)) {
                             set.add(dependency);
                             dependencies.add(dependency);
                             
-                            // Now add the dependencies of that contribution
-                            addContributionDependencies(workspace, dependency, dependencies, set);
+                            // Now add the dependencies of that contribution 
+                            addContributionDependencies(dependency, workspace, dependencies, set);
                         }
                     }
                 }
             }
             
-            if (!resolved) {
+            if (resolved) {
+                
+                // Initialize the import's model resolver
+                import_.setModelResolver(new DefaultImportAllModelResolver(import_, matched));
+                
+            } else {
                 // Record import resolution issue
                 Problem problem = new ProblemImpl(this.getClass().getName(), "workspace-validation-messages", Severity.WARNING, import_, "Unresolved import");
                 monitor.problem(problem);

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=650753&r1=650752&r2=650753&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 Tue Apr 22 22:55:36 2008
@@ -27,6 +27,7 @@
 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.Export;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
@@ -123,6 +124,11 @@
                     contribution.getDeployables().add((Composite)artifact.getModel());
                 }
             }
+        }
+        
+        // Initialize the exports model resolvers
+        for (Export export: contribution.getExports()) {
+            export.setModelResolver(modelResolver);
         }
         
         return contribution;

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=650753&r1=650752&r2=650753&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 Tue Apr 22 22:55:36 2008
@@ -29,6 +29,7 @@
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.Export;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
@@ -132,6 +133,11 @@
                     }
                 }
             }
+        }
+        
+        // Initialize the exports model resolvers
+        for (Export export: contribution.getExports()) {
+            export.setModelResolver(modelResolver);
         }
         
         return contribution;

Modified: incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java?rev=650753&r1=650752&r2=650753&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/test/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderTestCase.java Tue Apr 22 22:55:36 2008
@@ -91,7 +91,7 @@
         another.getExports().add(export);
         
         ContributionDependencyBuilderImpl analyzer = new ContributionDependencyBuilderImpl(null);
-        List<Contribution> dependencies = analyzer.buildContributionDependencies(workspace, importer);
+        List<Contribution> dependencies = analyzer.buildContributionDependencies(importer, workspace);
         assertTrue(dependencies.size() == 3);
         assertTrue(dependencies.contains(importer));
         assertTrue(dependencies.contains(imported));