Author: lresende
Date: Sun Feb 17 17:05:11 2008
New Revision: 628592

URL: http://svn.apache.org/viewvc?rev=628592&view=rev
Log:
TUSCANY-1873 - Adding support to resolve componentType files from imported 
contribution, based on java import/export

Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/pom.xml
    
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeModelResolver.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/pom.xml?rev=628592&r1=628591&r2=628592&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/pom.xml Sun Feb 17 17:05:11 
2008
@@ -63,6 +63,12 @@
         
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-java</artifactId>
+            <version>1.2-incubating-SNAPSHOT</version>
+        </dependency>        
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-impl</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>test</scope>

Modified: 
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeModelResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeModelResolver.java?rev=628592&r1=628591&r2=628592&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeModelResolver.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeModelResolver.java
 Sun Feb 17 17:05:11 2008
@@ -24,7 +24,9 @@
 
 import org.apache.tuscany.sca.assembly.ComponentType;
 import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.java.JavaImport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
@@ -33,10 +35,11 @@
  * @version $Rev$ $Date$
  */
 public class ComponentTypeModelResolver implements ModelResolver {
-
+       private Contribution contribution;
     private Map<String, ComponentType> map = new HashMap<String, 
ComponentType>();
     
     public ComponentTypeModelResolver(Contribution contribution, 
ModelFactoryExtensionPoint modelFactories) {
+       this.contribution = contribution;
     }
 
     public void addModel(Object resolved) {
@@ -49,15 +52,39 @@
     }
     
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
-        
-        // Lookup a definition for the given namespace
+
+       //get componentType artifact URI
         String uri = ((ComponentType)unresolved).getURI();
+        if (uri == null) {
+               return (T)unresolved;
+        }
+        
+        //lookup the componentType
         ComponentType resolved = (ComponentType) map.get(uri);
         if (resolved != null) {
             return modelClass.cast(resolved);
-        } else {
-            return (T)unresolved;
+        } 
+        
+        //If not found, delegate the resolution to the imports (in this case 
based on the java imports)
+        //compute the package name from the componentType URI
+        if (unresolved instanceof ComponentType) {
+            String packageName = uri.substring(0, uri.lastIndexOf("/"));
+            for (Import import_ : this.contribution.getImports()) {
+                if (import_ instanceof JavaImport) {
+                       JavaImport javaImport = (JavaImport)import_;
+                       //check the import location against the computed 
package name from the componentType URI
+                    if (javaImport.getPackage().equals(packageName)) {
+                        // Delegate the resolution to the import resolver
+                        resolved = 
javaImport.getModelResolver().resolveModel(ComponentType.class, 
(ComponentType)unresolved);
+                        if (!resolved.isUnresolved()) {
+                            return modelClass.cast(resolved);
+                        }
+                    }
+                }
+            }          
         }
+
+        return (T)unresolved;
     }
     
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to