You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/07/30 20:00:22 UTC

svn commit: r561072 - in /incubator/tuscany/java/sca: itest/contribution-import-export/ itest/contribution-import-export/test-import-java/src/test/java/helloworld/ modules/contribution-impl/ modules/contribution-impl/src/main/java/org/apache/tuscany/sc...

Author: lresende
Date: Mon Jul 30 11:00:20 2007
New Revision: 561072

URL: http://svn.apache.org/viewvc?view=rev&rev=561072
Log:
[work in progress] 
Contribution import/export java support based on new extensibility of contribution import/export
  - Further integration of java import/export

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
      - copied, changed from r560762, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java
    incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java
      - copied, changed from r560762, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/
    incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java
      - copied, changed from r560762, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java
Modified:
    incubator/tuscany/java/sca/itest/contribution-import-export/pom.xml
    incubator/tuscany/java/sca/itest/contribution-import-export/test-import-java/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/pom.xml
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReference.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/pom.xml?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/pom.xml Mon Jul 30 11:00:20 2007
@@ -34,10 +34,8 @@
         <module>test-import-wsdl</module>
         <module>contrib-composite</module>
         <module>test-import-composite</module>
-        <!--
         <module>contrib-java</module>
         <module>test-import-java</module>
-        -->
     </modules>
     
     <dependencies>

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/test-import-java/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/test-import-java/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/test-import-java/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/test-import-java/src/test/java/helloworld/HelloWorldServerTestCase.java Mon Jul 30 11:00:20 2007
@@ -26,8 +26,6 @@
 
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
 
@@ -49,18 +47,16 @@
         // Contribute the SCA contribution
         ContributionService contributionService = domain.getContributionService();
         
-        ModelResolver compositeJavaResolver = new ModelResolverImpl(cl);
         File javaContribLocation = new File("../contrib-java/target/classes");
         URL javaContribURL = javaContribLocation.toURL();
-        Contribution javaContribution = contributionService.contribute("http://import-export/contrib-java", javaContribURL, compositeJavaResolver, false);
+        Contribution javaContribution = contributionService.contribute("http://import-export/contrib-java", javaContribURL, false);
         for (Composite deployable : javaContribution.getDeployables() ) {
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
         
-        ModelResolver helloWorldContributionResolver = new ModelResolverImpl(cl);
         File helloWorldContribLocation = new File("./target/classes/");
         URL helloWorldContribURL = helloWorldContribLocation.toURL();
-        Contribution helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, helloWorldContributionResolver, false);
+        Contribution helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
         for (Composite deployable : helloWorldContribution.getDeployables() ) {
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
@@ -90,7 +86,7 @@
 
         // Remove the contribution from the in-memory repository
         contributionService.remove("http://import-export/helloworld");
-        contributionService.remove("http://import-export/contrib-wsdl");
+        contributionService.remove("http://import-export/contrib-java");
         
         //Stop Components from my composite
         domain.getDomainCompositeHelper().stopComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));

Modified: incubator/tuscany/java/sca/modules/contribution-impl/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/pom.xml?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/pom.xml Mon Jul 30 11:00:20 2007
@@ -36,6 +36,12 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-java</artifactId>
+            <version>1.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>wstx-asl</artifactId>
             <version>3.2.0</version>

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java Mon Jul 30 11:00:20 2007
@@ -20,6 +20,8 @@
 package org.apache.tuscany.sca.contribution.impl;
 
 import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.NamespaceExport;
 import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
@@ -58,5 +60,17 @@
     
     public void setModelResolver(ModelResolver modelResolver) {
         this.modelResolver = modelResolver;
+    }
+    
+    public boolean match(Export export) {
+        if (export instanceof NamespaceExport) {
+            if (this.getLocation() == null || this.getLocation().length() == 0) {
+                if (this.getNamespace().equals(((NamespaceExport)export).getNamespace())) {
+                    return true;
+                }
+            }
+            
+        }
+        return false;
     }
 }

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java?view=auto&rev=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java Mon Jul 30 11:00:20 2007
@@ -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.contribution.resolver.impl;
+
+import java.util.Collection;
+
+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.ModelResolver;
+
+/**
+ * A model resolver implementation that considers Exports in any available contribution
+ *
+ * @version $Rev: 560435 $ $Date: 2007-07-27 18:26:55 -0700 (Fri, 27 Jul 2007) $
+ */
+public class ImportAllModelResolverImpl implements ModelResolver {
+    
+    private Import import_;
+    private Collection<Contribution> contributions;
+    
+    public ImportAllModelResolverImpl(Import import_, Collection<Contribution> contributions) {
+        this.import_ = import_;
+        this.contributions = contributions;
+    }
+
+    public void addModel(Object resolved) {
+        throw new IllegalStateException();
+    }
+
+    public Object removeModel(Object resolved) {
+        throw new IllegalStateException();
+    }
+
+    public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+        
+        //TODO optimize and cache results of the resolution later
+        
+        // Go over all available contributions
+        for (Contribution contribution : contributions) {
+            
+            // Go over all exports in the contribution
+            for (Export export : contribution.getExports()) {
+                    // If the export matches our namespace, try to the resolve the model object
+                    if (import_.match(export)) {
+                        Object resolved = export.getModelResolver().resolveModel(modelClass, unresolved);
+                        
+                        // Return the resolved model object
+                        if (resolved instanceof org.apache.tuscany.sca.interfacedef.Base) {
+                            if (!((org.apache.tuscany.sca.interfacedef.Base)resolved).isUnresolved()) {
+                                return modelClass.cast(resolved);
+                            }
+                        }
+                        else if (resolved instanceof org.apache.tuscany.sca.assembly.Base) {
+                            if (!((org.apache.tuscany.sca.assembly.Base)resolved).isUnresolved()) {
+                                return modelClass.cast(resolved);
+                            }
+                        }
+                    }
+            }
+        }
+
+        // Model object was not resolved
+        return unresolved;
+    }
+
+}

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Mon Jul 30 11:00:20 2007
@@ -41,6 +41,8 @@
 import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.NamespaceExport;
 import org.apache.tuscany.sca.contribution.NamespaceImport;
+import org.apache.tuscany.sca.contribution.java.JavaExport;
+import org.apache.tuscany.sca.contribution.java.JavaImport;
 import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
 import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
@@ -48,9 +50,7 @@
 import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.impl.NamespaceExportModelResolverImpl;
-import org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportAllModelResolverImpl;
-import org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportModelResolverImpl;
+import org.apache.tuscany.sca.contribution.resolver.impl.ImportAllModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionException;
 import org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
@@ -178,6 +178,28 @@
         return addContribution(contributionURI, sourceURL, input, modelResolver, true);
     }
 
+    public Contribution getContribution(String id) {
+        return this.contributionRegistry.get(id);
+    }
+
+    public void remove(String contribution) throws ContributionException {
+        this.contributionRegistry.remove(contribution);
+    }
+
+    public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException {
+        DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact();
+        artifact.setURI(composite.getURI());
+        artifact.setModel(composite);
+
+        contribution.getArtifacts().add(artifact);
+
+        contribution.getDeployables().add(composite);
+    }
+
+    /**
+     * Utility/Helper methods for contribution service
+     */
+
     /**
      * Perform read of the contribution metada loader (sca-contribution.xml and sca-contribution-generated.xml)
      * When the two metadata files are available, the information provided are merged, and the sca-contribution has priorities
@@ -205,30 +227,7 @@
         
         return contributionMetadata;
     }
-
-    public Contribution getContribution(String id) {
-        return this.contributionRegistry.get(id);
-    }
-
-    public void remove(String contribution) throws ContributionException {
-        this.contributionRegistry.remove(contribution);
-        //FIXME remove references from contributionByExportedNamespace
-    }
-
-    public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException {
-        DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact();
-        artifact.setURI(composite.getURI());
-        artifact.setModel(composite);
-
-        contribution.getArtifacts().add(artifact);
-
-        contribution.getDeployables().add(composite);
-    }
-
-    /**
-     * Utility/Helper methods for contribution service
-     */
-
+    
     /**
      * Note:
      * 
@@ -279,13 +278,13 @@
         
         // Initialize the contribution exports
         for (Export export: contribution.getExports()) {
-            if (export instanceof NamespaceExport) {
-                export.setModelResolver(new NamespaceExportModelResolverImpl((NamespaceExport)export, modelResolver));
-            }
+            export.setModelResolver(modelResolver);
         }
         
         // Initialize the contribution imports
         for (Import import_: contribution.getImports()) {
+            boolean initialized = false;
+            
             if (import_ instanceof NamespaceImport) {
                 NamespaceImport namespaceImport = (NamespaceImport)import_;
                 
@@ -299,19 +298,43 @@
                             if (export instanceof NamespaceExport) {
                                 NamespaceExport namespaceExport = (NamespaceExport)export;
                                 if (namespaceImport.getNamespace().equals(namespaceExport.getNamespace())) {
-                                    namespaceImport.setModelResolver(new NamespaceImportModelResolverImpl(namespaceImport, namespaceExport.getModelResolver()));
+                                    namespaceImport.setModelResolver(namespaceExport.getModelResolver());
+                                    initialized = true;
                                     break;
                                 }
                             }
                         }
                     }
-                } else {
+                } 
+            } else if(import_ instanceof JavaImport) {
+                JavaImport javaImport = (JavaImport) import_;
                 
-                    // Use a resolver that will consider all contributions
-                    namespaceImport.setModelResolver(new NamespaceImportAllModelResolverImpl(namespaceImport, contributionRegistry.values()));
+                //Find a matching contribution
+                if(javaImport.getLocation() != null) {
+                    Contribution targetContribution = contributionRegistry.get(javaImport.getLocation());
+                    if (targetContribution != null) {
                     
+                        // Find a matching contribution export
+                        for (Export export: targetContribution.getExports()) {
+                            if (export instanceof JavaExport) {
+                                JavaExport javaExport = (JavaExport)export;
+                                if (javaImport.getPackage().equals(javaExport.getPackage())) {
+                                    javaImport.setModelResolver(javaExport.getModelResolver());
+                                    initialized = true;
+                                    break;
+                                }
+                            }
+                        }
+                    }                    
                 }
             }
+            
+            //if no location was specified, try to resolve with any contribution            
+            if( !initialized ) {
+                // Use a resolver that will consider all contributions
+                import_.setModelResolver(new ImportAllModelResolverImpl(import_, contributionRegistry.values()));
+            }
+            
         }
 
         List<URI> contributionArtifacts = null;
@@ -410,8 +433,6 @@
             // resolve the model object
             if (artifact.getModel() != null) {
                 this.artifactProcessor.resolve(artifact.getModel(), contribution.getModelResolver());
-
-                //processResolveImportsPhase(contribution, artifact);                
             }
         }
         
@@ -419,68 +440,10 @@
         List<Composite> resolvedDeployables = new ArrayList<Composite>();
         for (Composite deployableComposite : contribution.getDeployables()) {
             Composite resolvedDeployable = contribution.getModelResolver().resolveModel(Composite.class, deployableComposite);
-            
-            /*
-            if (resolvedDeployable.isUnresolved()) {
-                resolvedDeployable = processResolveImportsPhase(contribution, resolvedDeployable);
-            }
-            */
-            
+                        
             resolvedDeployables.add(resolvedDeployable);
         }
         contribution.getDeployables().clear();
         contribution.getDeployables().addAll(resolvedDeployables);
-    }
-
-    /*
-    @SuppressWarnings("unchecked")
-    private Object processResolveImportsPhase(Contribution contribution, DeployedArtifact artifact) throws ContributionException {
-        for(ContributionImport contributionImport : contribution.getImports()) {
-            String importedContributionURI = contributionImport.getLocation();
-            if (importedContributionURI != null && importedContributionURI.length() > 0) {
-                //location provided (contribution uri)
-                Contribution importedContribution = this.getContribution(importedContributionURI);
-                if (importedContribution != null) {
-                    this.artifactProcessor.resolve(artifact.getModel(), importedContribution.getModelResolver());
-                }
-            } else {
-                //look into all the contributions that match exported uri
-                for(Contribution importedContribution : this.contributionByExportedNamespace.get(contributionImport.getNamespace())) {
-                    this.artifactProcessor.resolve(artifact.getModel(), importedContribution.getModelResolver());
-                }
-            }
-            
-
-        }
-        
-        return artifact.getModel();
-    }
-    
-    @SuppressWarnings("unchecked")
-    private Composite processResolveImportsPhase(Contribution contribution, Composite deployableComposite) throws ContributionException {
-        Composite resolvedDeployable = deployableComposite;
-        
-        for(ContributionImport contributionImport : contribution.getImports()) {
-            String importedContributionURI = contributionImport.getLocation();
-            if (importedContributionURI != null && importedContributionURI.length() > 0) {
-                //location provided (contribution uri)
-                Contribution importedContribution = this.getContribution(importedContributionURI);
-                if (importedContribution != null) {
-                    resolvedDeployable = importedContribution.getModelResolver().resolveModel(Composite.class, deployableComposite);
-                }
-            } else {
-                //look into all the contributions that match exported uri
-                for(Contribution importedContribution : this.contributionByExportedNamespace.get(contributionImport.getNamespace())) {
-                    Composite resolvingDeployable = importedContribution.getModelResolver().resolveModel(Composite.class, deployableComposite);
-                    if (resolvingDeployable != null && resolvingDeployable.isUnresolved() == false) {
-                        resolvedDeployable = resolvingDeployable;
-                        break;
-                    }
-                }
-            }
-        }
-        
-        return resolvedDeployable;
-    } 
-    */   
+    }  
 }

Copied: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java (from r560762, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java?view=diff&rev=561072&p1=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java&r1=560762&p2=incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java Mon Jul 30 11:00:20 2007
@@ -17,13 +17,17 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.contribution.resolver;
+package org.apache.tuscany.sca.contribution.java.impl;
 
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.java.JavaImport;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
  * A Model Resolver for WSDL models.
@@ -49,29 +53,58 @@
         return map.remove(((ClassReference)resolved).getClassName());
     }
     
+    
+    private ClassReference resolveImportedModel(ClassReference unresolved) {
+        ClassReference resolved = unresolved;
+
+        if( this.contribution != null) {
+            for (Import import_ : this.contribution.getImports()) {
+                if (import_ instanceof JavaImport) {
+                    JavaImport javaImport = (JavaImport) import_;
+                    String packageName = javaImport.getPackage();
+                    if (javaImport.getPackage().equals(packageName)) {
+                        // Delegate the resolution to the import resolver
+                        resolved = import_.getModelResolver().resolveModel(ClassReference.class, unresolved);
+                    }
+                }
+            }
+            
+        }
+        return resolved;
+    }
+    
+    
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
         Object resolved = map.get(unresolved);
         
         if (resolved != null ){
-            return (T)resolved;
+            return modelClass.cast(resolved);
         } 
         
         //Load a class on demand
-        Class clazz;
+        Class clazz = null;
         try {
             clazz = Class.forName(((ClassReference)unresolved).getClassName(), true, classLoader.get());
         } catch (ClassNotFoundException e) {
+            //we will later try to delegate to imported model resolvers
+        }
+
+
+        if (clazz != null) {
+            //if we load the class            
+            // Store a new ClassReference wrappering the loaded class
+            ClassReference classReference = new ClassReference(clazz);
+            map.put(getPackageName(classReference), classReference);
             
-            // Return the unresolved object
-            return unresolved;
+            // Return the resolved ClassReference
+            return modelClass.cast(classReference);            
+        } else {
+            //delegate resolution of the class
+            resolved = this.resolveImportedModel((ClassReference)unresolved);
+            return modelClass.cast(resolved);
         }
         
-        // Store a new ClassReference wrappering the loaded class
-        ClassReference classReference = new ClassReference(clazz);
-        map.put(getPackageName(classReference), classReference);
-        
-        // Return the resolved ClassReference
-        return (T)classReference;
+
     }
     
     /***************

Modified: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java Mon Jul 30 11:00:20 2007
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.sca.contribution.java.impl;
 
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.java.JavaExport;
 import org.apache.tuscany.sca.contribution.java.JavaImport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
@@ -57,4 +59,15 @@
         this.modelResolver = modelResolver;
     }
 
+    public boolean match(Export export) {
+        if(export instanceof JavaExport) {
+            if(this.getLocation() == null || this.getLocation().length() == 0) {
+                if (this.getPackage().equals(((JavaExport)export).getPackage())) {
+                    return true;
+                }
+            }
+        }
+        
+        return false;
+    }
 }

Copied: incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java (from r560762, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java?view=diff&rev=561072&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java&r1=560762&p2=incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java Mon Jul 30 11:00:20 2007
@@ -17,9 +17,14 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.contribution.resolver;
+package org.apache.tuscany.sca.contribution.java.impl;
 
 import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 
 /**
  * Test ClassReferenceArtifactResolver.

Copied: incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java (from r560762, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java?view=diff&rev=561072&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java&r1=560762&p2=incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/test/resources/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceArtifactResolverTestCase.java Mon Jul 30 11:00:20 2007
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.sca.contribution.resolver;
 
+import org.apache.tuscany.sca.contribution.java.impl.ClassReferenceModelResolver;
+
 import junit.framework.TestCase;
 
 /**

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java Mon Jul 30 11:00:20 2007
@@ -43,5 +43,12 @@
      * 
      * @param modelResolver The model resolver
      */
-    void setModelResolver(ModelResolver modelResolver);   
+    void setModelResolver(ModelResolver modelResolver);
+    
+    /**
+     * Verify is a specific export is provider of what is being imported
+     * @param export The Exported being verified
+     * @return true/false
+     */
+    boolean match(Export export);
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReference.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReference.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReference.java Mon Jul 30 11:00:20 2007
@@ -78,7 +78,7 @@
      * 
      * @return Wether or not the class has been resolved
      */
-    boolean isUnresolved() {
+    public boolean isUnresolved() {
         return clazz == null;
     }
 

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java Mon Jul 30 11:00:20 2007
@@ -35,6 +35,7 @@
 import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeModelResolver;
 import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.java.impl.ClassReferenceModelResolver;
 import org.apache.tuscany.sca.contribution.java.impl.JavaExportProcessor;
 import org.apache.tuscany.sca.contribution.java.impl.JavaImportProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
@@ -51,7 +52,6 @@
 import org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ClassReference;
-import org.apache.tuscany.sca.contribution.resolver.ClassReferenceModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=561072&r1=561071&r2=561072
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Mon Jul 30 11:00:20 2007
@@ -50,6 +50,7 @@
 import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
 import org.apache.tuscany.sca.assembly.xml.SCABindingProcessor;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.java.impl.ClassReferenceModelResolver;
 import org.apache.tuscany.sca.contribution.java.impl.JavaExportProcessor;
 import org.apache.tuscany.sca.contribution.java.impl.JavaImportProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
@@ -68,7 +69,6 @@
 import org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ClassReference;
-import org.apache.tuscany.sca.contribution.resolver.ClassReferenceModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org