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 2007/07/22 23:54:39 UTC

svn commit: r558558 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ contribution-impl/src/main/java/org/apache/tuscany/s...

Author: jsdelfino
Date: Sun Jul 22 14:54:31 2007
New Revision: 558558

URL: http://svn.apache.org/viewvc?view=rev&rev=558558
Log:
Setting the proper import/export hierarchy to allow for extensibility and addition of new import/export types on top of the namespace based import/export.

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceExportImpl.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionExportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceExportModelResolverImpl.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionExportModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportAllModelResolverImpl.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportAnyModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportModelResolverImpl.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Export.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java
      - copied, changed from r558531, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionExportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionExportModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportAnyModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportModelResolverImpl.java
Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeModelResolver.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeModelResolver.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataLoaderImpl.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/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeModelResolver.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeModelResolver.java Sun Jul 22 14:54:31 2007
@@ -21,7 +21,8 @@
 
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
 
 /**
@@ -38,15 +39,16 @@
     private Composite resolveImportedModel(Composite unresolved) {
         Composite resolved = unresolved;
         String namespace = unresolved.getName().getNamespaceURI();
-        if (namespace != null && namespace.length() > 0) {
-            for (ContributionImport contributionImport : this.contribution.getImports()) {
-                if (contributionImport.getNamespace().equals(namespace)) {
+        for (Import import_ : this.contribution.getImports()) {
+            if (import_ instanceof NamespaceImport) {
+                NamespaceImport namespaceImport = (NamespaceImport)import_;
+                if (namespaceImport.getNamespace().equals(namespace)) {
                     
                     // Delegate the resolution to the import resolver
-                    resolved = contributionImport.getModelResolver().resolveModel(Composite.class, unresolved);
+                    resolved = namespaceImport.getModelResolver().resolveModel(Composite.class, unresolved);
                     
                     // If resolved... then we are done
-                    if(unresolved.isUnresolved() == false) {
+                    if(resolved.isUnresolved() == false) {
                         break;
                     }
                 }

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeModelResolver.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeModelResolver.java Sun Jul 22 14:54:31 2007
@@ -21,7 +21,8 @@
 
 import org.apache.tuscany.sca.assembly.ConstrainingType;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
 
 /**
@@ -38,15 +39,16 @@
     private ConstrainingType resolveImportedModel(ConstrainingType unresolved) {
         ConstrainingType resolved = unresolved;
         String namespace = unresolved.getName().getNamespaceURI();
-        if (namespace != null && namespace.length() > 0) {
-            for (ContributionImport contributionImport : this.contribution.getImports()) {
-                if (contributionImport.getNamespace().equals(namespace)) {
+        for (Import import_ : this.contribution.getImports()) {
+            if (import_ instanceof NamespaceImport) {
+                NamespaceImport namespaceImport = (NamespaceImport)import_;
+                if (namespaceImport.getNamespace().equals(namespace)) {
                     
                     // Delegate the resolution to the import resolver
-                    resolved = contributionImport.getModelResolver().resolveModel(ConstrainingType.class, unresolved);
+                    resolved = import_.getModelResolver().resolveModel(ConstrainingType.class, unresolved);
                     
                     // If resolved... then we are done
-                    if(unresolved.isUnresolved() == false) {
+                    if(resolved.isUnresolved() == false) {
                         break;
                     }
                 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java Sun Jul 22 14:54:31 2007
@@ -24,6 +24,8 @@
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ContributionImport;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
+import org.apache.tuscany.sca.contribution.NamespaceExport;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 
 
 /**
@@ -42,10 +44,18 @@
     }
 
     public ContributionImport createContributionImport() {
-        return new ContributionImportImpl();
+        return new NamespaceImportImpl();
     }
     
     public ContributionExport createContributionExport() {
-        return new ContributionExportImpl();
+        return new NamespaceExportImpl();
+    }
+    
+    public NamespaceImport createNamespaceImport() {
+        return new NamespaceImportImpl();
+    }
+    
+    public NamespaceExport createNamespaceExport() {
+        return new NamespaceExportImpl();
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java Sun Jul 22 14:54:31 2007
@@ -24,8 +24,8 @@
 
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionExport;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
@@ -35,8 +35,8 @@
  * @version $Rev: 531146 $ $Date: 2007-04-21 22:40:50 -0700 (Sat, 21 Apr 2007) $
  */
 public class ContributionImpl extends ArtifactImpl implements Contribution {
-    private List<ContributionExport> exports = new ArrayList<ContributionExport>();
-    private List<ContributionImport> imports = new ArrayList<ContributionImport>();
+    private List<Export> exports = new ArrayList<Export>();
+    private List<Import> imports = new ArrayList<Import>();
     private List<Composite> deployables = new ArrayList<Composite>();
     private ModelResolver modelResolver;
     
@@ -48,11 +48,11 @@
     protected ContributionImpl() {
     }
     
-    public List<ContributionExport> getExports() {
+    public List<Export> getExports() {
         return exports;
     }
 
-    public List<ContributionImport> getImports() {
+    public List<Import> getImports() {
         return imports;
     }
 

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceExportImpl.java (from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionExportImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceExportImpl.java?view=diff&rev=558558&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionExportImpl.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceExportImpl.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionExportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceExportImpl.java Sun Jul 22 14:54:31 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.contribution.impl;
 
 import org.apache.tuscany.sca.contribution.ContributionExport;
+import org.apache.tuscany.sca.contribution.NamespaceExport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
@@ -27,11 +28,11 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ContributionExportImpl implements ContributionExport {
+public class NamespaceExportImpl implements NamespaceExport, ContributionExport {
     private String namespace; // The namespace to be imported
     private ModelResolver modelResolver;
     
-    protected ContributionExportImpl() {
+    protected NamespaceExportImpl() {
     }
     
     public String getNamespace() {

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java (from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImportImpl.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=558558&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImportImpl.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/NamespaceImportImpl.java Sun Jul 22 14:54:31 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.contribution.impl;
 
 import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
@@ -27,12 +28,12 @@
  * 
  * @version $Rev: 527398 $ $Date: 2007-04-10 23:43:31 -0700 (Tue, 10 Apr 2007) $
  */
-public class ContributionImportImpl implements ContributionImport {
+public class NamespaceImportImpl implements NamespaceImport, ContributionImport {
     private String namespace; // The namespace to be imported
     private String location; // Optional location to hint the where it should be imported
     private ModelResolver modelResolver;
     
-    protected ContributionImportImpl() {
+    protected NamespaceImportImpl() {
     }
     
     public String getLocation() {

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceExportModelResolverImpl.java (from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionExportModelResolverImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceExportModelResolverImpl.java?view=diff&rev=558558&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionExportModelResolverImpl.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceExportModelResolverImpl.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionExportModelResolverImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceExportModelResolverImpl.java Sun Jul 22 14:54:31 2007
@@ -19,22 +19,22 @@
 
 package org.apache.tuscany.sca.contribution.resolver.impl;
 
-import org.apache.tuscany.sca.contribution.ContributionExport;
+import org.apache.tuscany.sca.contribution.NamespaceExport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 
 /**
- * A model resolver implementation, that considers Contribution Exports.
+ * A model resolver implementation for a namespace export.
  *
  * @version $Rev$ $Date$
  */
-public class ContributionExportModelResolverImpl implements ModelResolver {
+public class NamespaceExportModelResolverImpl implements ModelResolver {
     
-    private ContributionExport contributionExport;
+    private NamespaceExport namespaceExport;
     private ModelResolver targetModelResolver;
     
-    public ContributionExportModelResolverImpl(ContributionExport contributionExport, ModelResolver targetModelResolver) {
-        this.contributionExport = contributionExport;
+    public NamespaceExportModelResolverImpl(NamespaceExport namespaceExport, ModelResolver targetModelResolver) {
+        this.namespaceExport = namespaceExport;
         this.targetModelResolver = targetModelResolver;
     }
 
@@ -47,6 +47,7 @@
     }
 
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+        
         // Delegate to the model resolver of the contribution
         return targetModelResolver.resolveModel(modelClass, unresolved);
     }

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportAllModelResolverImpl.java (from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportAnyModelResolverImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportAllModelResolverImpl.java?view=diff&rev=558558&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportAnyModelResolverImpl.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportAllModelResolverImpl.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportAnyModelResolverImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportAllModelResolverImpl.java Sun Jul 22 14:54:31 2007
@@ -19,26 +19,27 @@
 
 package org.apache.tuscany.sca.contribution.resolver.impl;
 
-import java.util.Map;
+import java.util.Collection;
 
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionExport;
-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;
 
 /**
- * A model resolver implementation, that consider Contribution Imports in any contribution
+ * A model resolver implementation that considers Exports in any available contribution
  *
  * @version $Rev: 548560 $ $Date: 2007-06-18 19:25:19 -0700 (Mon, 18 Jun 2007) $
  */
-public class ContributionImportAnyModelResolverImpl implements ModelResolver {
+public class NamespaceImportAllModelResolverImpl implements ModelResolver {
     
-    private ContributionImport contributionImport;
-    private Map<String, Contribution> contributionRegistry;
+    private NamespaceImport namespaceImport;
+    private Collection<Contribution> contributions;
     
-    public ContributionImportAnyModelResolverImpl(ContributionImport contributionImport, Map<String, Contribution> contributionRegistry) {
-        this.contributionImport = contributionImport;
-        this.contributionRegistry = contributionRegistry;
+    public NamespaceImportAllModelResolverImpl(NamespaceImport namespaceImport, Collection<Contribution> contributions) {
+        this.namespaceImport = namespaceImport;
+        this.contributions = contributions;
     }
 
     public void addModel(Object resolved) {
@@ -50,17 +51,29 @@
     }
 
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
-        // This needs to delegate to the matching ContributionExportModelResolver
-        // from the contribution matching the import's location URI, or a ModelResolver
-        // that goes over all exports with a matching namespace if there is no URI
-
+        
+        //TODO optimize and cache results of the resolution later
+        
+        // Go over all available contributions
         Object resolved = null;
-        for (Contribution contribution : contributionRegistry.values()) {
-            for (ContributionExport contributionExport : contribution.getExports()) {
-                if (contributionImport.getNamespace().equals(contributionExport.getNamespace())) {
-                    resolved = contributionExport.getModelResolver().resolveModel(modelClass, unresolved);
+        for (Contribution contribution : contributions) {
+            
+            // Go over all exports in the contribution
+            for (Export export : contribution.getExports()) {
+                if (export instanceof NamespaceExport) {
+                    NamespaceExport namespaceExport = (NamespaceExport)export;
+                    if (namespaceImport.getNamespace().equals(namespaceExport.getNamespace())) {
+                        Object r = namespaceExport.getModelResolver().resolveModel(modelClass, unresolved);
+                        if (r != null) {
+                            //FIXME we should test the unresolved flag instead
+                            resolved = r;
+                            break;
+                        }
+                    }
                 }
             }
+            if (resolved != null)
+                break;
         }
         
         if (resolved != null) {

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportModelResolverImpl.java (from r558531, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportModelResolverImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportModelResolverImpl.java?view=diff&rev=558558&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportModelResolverImpl.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportModelResolverImpl.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ContributionImportModelResolverImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/NamespaceImportModelResolverImpl.java Sun Jul 22 14:54:31 2007
@@ -19,21 +19,21 @@
 
 package org.apache.tuscany.sca.contribution.resolver.impl;
 
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
- * A model resolver implementation, that considers Contribution Imports.
+ * A model resolver implementation for a namespace Import.
  *
  * @version $Rev$ $Date$
  */
-public class ContributionImportModelResolverImpl implements ModelResolver {
+public class NamespaceImportModelResolverImpl implements ModelResolver {
     
-    private ContributionImport contributionImport;
+    private NamespaceImport namespaceImport;
     private ModelResolver targetModelResolver;
     
-    public ContributionImportModelResolverImpl(ContributionImport contributionImport, ModelResolver targetModelResolver) {
-        this.contributionImport = contributionImport;
+    public NamespaceImportModelResolverImpl(NamespaceImport namespaceImport, ModelResolver targetModelResolver) {
+        this.namespaceImport = namespaceImport;
         this.targetModelResolver = targetModelResolver;
     }
 
@@ -47,9 +47,9 @@
 
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
         
-        // This needs to delegate to the matching ContributionExportModelResolver
-        // from the contribution matching the import's location URI, or a ModelResolver
-        // that goes over all exports with a matching namespace if there is no URI
+        // Delegate to the given target model resolver. This is either the model resolver
+        // of a matching export, or a model resolver that considers matching exports
+        // from all available contributions
         return targetModelResolver.resolveModel(modelClass, unresolved);
     }
 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataLoaderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataLoaderImpl.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataLoaderImpl.java Sun Jul 22 14:54:31 2007
@@ -28,9 +28,9 @@
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionExport;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.NamespaceExport;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.service.ContributionMetadataLoader;
 import org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
 
@@ -104,20 +104,20 @@
                             throw new InvalidValueException("Attribute 'namespace' is missing");
                         }
                         String location = reader.getAttributeValue(null, "location");
-                        ContributionImport contributionImport = this.contributionFactory.createContributionImport();
+                        NamespaceImport namespaceImport = this.contributionFactory.createNamespaceImport();
                         if (location != null) {
-                            contributionImport.setLocation(location);
+                            namespaceImport.setLocation(location);
                         }
-                        contributionImport.setNamespace(ns);
-                        contribution.getImports().add(contributionImport);
+                        namespaceImport.setNamespace(ns);
+                        contribution.getImports().add(namespaceImport);
                     } else if (EXPORT.equals(element)) {
                         String ns = reader.getAttributeValue(null, "namespace");
                         if (ns == null) {
                             throw new InvalidValueException("Attribute 'namespace' is missing");
                         }
-                        ContributionExport contributionExport = this.contributionFactory.createContributionExport();
-                        contributionExport.setNamespace(ns);
-                        contribution.getExports().add(contributionExport);
+                        NamespaceExport namespaceExport = this.contributionFactory.createNamespaceExport();
+                        namespaceExport.setNamespace(ns);
+                        contribution.getExports().add(namespaceExport);
                     }
                     break;
                 case XMLStreamConstants.END_ELEMENT:

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=558558&r1=558557&r2=558558
==============================================================================
--- 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 Sun Jul 22 14:54:31 2007
@@ -36,24 +36,25 @@
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionExport;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.ContributionImport;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
+import org.apache.tuscany.sca.contribution.Export;
+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.processor.ContributionPostProcessor;
 import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 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.ContributionExportModelResolverImpl;
-import org.apache.tuscany.sca.contribution.resolver.impl.ContributionImportAnyModelResolverImpl;
-import org.apache.tuscany.sca.contribution.resolver.impl.ContributionImportModelResolverImpl;
+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.service.ContributionException;
 import org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
-import org.apache.tuscany.sca.contribution.service.util.ConcurrentHashList;
 import org.apache.tuscany.sca.contribution.service.util.IOHelper;
 
 /**
@@ -114,7 +115,6 @@
      * Contribution registry This is a registry of processed Contributions indexed by URI
      */
     private Map<String, Contribution> contributionRegistry = new ConcurrentHashMap<String, Contribution>();
-    private ConcurrentHashList<String, Contribution> contributionByExportedNamespace = new ConcurrentHashList<String, Contribution>();
     
     public ContributionServiceImpl(ContributionRepository repository,
                                    PackageProcessor packageProcessor,
@@ -285,32 +285,43 @@
         contribution.setLocation(locationURL.toString());
         contribution.setModelResolver(modelResolver);
         
+        //TODO Move the following to the resolve method of the ArtifactProcessor
+        // responsible for handling <imports> and <exports>
+        
         // Initialize the contribution exports
-        for (ContributionExport contributionExport: contribution.getExports()) {
-            contributionExport.setModelResolver(new ContributionExportModelResolverImpl(contributionExport, modelResolver));
+        for (Export export: contribution.getExports()) {
+            if (export instanceof NamespaceExport) {
+                export.setModelResolver(new NamespaceExportModelResolverImpl((NamespaceExport)export, modelResolver));
+            }
         }
         
         // Initialize the contribution imports
-        for (ContributionImport contributionImport: contribution.getImports()) {
-            
-            if (contributionImport.getLocation() != null && contribution.getLocation().length() > 0) {
+        for (Import import_: contribution.getImports()) {
+            if (import_ instanceof NamespaceImport) {
+                NamespaceImport namespaceImport = (NamespaceImport)import_;
+                
                 // Find a matching contribution
-                Contribution targetContribution = contributionRegistry.get(contributionImport.getLocation());
-                if (targetContribution != null) {
-                    // Find a matching contribution export
-                    for (ContributionExport contributionExport: targetContribution.getExports()) {
-                        if (contributionImport.getNamespace().equals(contributionExport.getNamespace())) {
-                            contributionImport.setModelResolver(new ContributionImportModelResolverImpl(contributionImport, contributionExport.getModelResolver()));
-                            break;
+                if (namespaceImport.getLocation() != null) {
+                    Contribution targetContribution = contributionRegistry.get(namespaceImport.getLocation());
+                    if (targetContribution != null) {
+                    
+                        // Find a matching contribution export
+                        for (Export export: targetContribution.getExports()) {
+                            if (export instanceof NamespaceExport) {
+                                NamespaceExport namespaceExport = (NamespaceExport)export;
+                                if (namespaceImport.getNamespace().equals(namespaceExport.getNamespace())) {
+                                    namespaceImport.setModelResolver(new NamespaceImportModelResolverImpl(namespaceImport, namespaceExport.getModelResolver()));
+                                    break;
+                                }
+                            }
                         }
                     }
-                }                
-            }
-            
-            if (contributionImport.getModelResolver() == null) {
-                // Find a matching in any contribution export
-                contributionImport.setModelResolver(new ContributionImportAnyModelResolverImpl(contributionImport, contributionRegistry));
+                } else {
                 
+                    // Use a resolver that will consider all contributions
+                    namespaceImport.setModelResolver(new NamespaceImportAllModelResolverImpl(namespaceImport, contributionRegistry.values()));
+                    
+                }
             }
         }
 
@@ -357,11 +368,6 @@
         
         // store the contribution on the registry
         this.contributionRegistry.put(contribution.getURI(), contribution);
-        
-        //store the contribution based on the namespaces being exported
-        for (ContributionExport export : contribution.getExports()) {
-            this.contributionByExportedNamespace.put(export.getNamespace(), contribution);
-        }
         
         return contribution;
     }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java Sun Jul 22 14:54:31 2007
@@ -49,14 +49,14 @@
      * 
      * @return The list of exported artifacts from this contribution
      */
-    List<ContributionExport> getExports();
+    List<Export> getExports();
 
     /**
      * Get a list of imports based on the Contribution metadata sidefile
      * 
      * @return The list of imported artifacts on this contribution
      */
-    List<ContributionImport> getImports();
+    List<Import> getImports();
     
     /**
      * Get a list of deployables for the contribution based on the contribution metadata sidefile 

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java Sun Jul 22 14:54:31 2007
@@ -19,43 +19,13 @@
 
 package org.apache.tuscany.sca.contribution;
 
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
  * The representation of an export for the contribution
- * 
+ * @deprecated
+ *  
  * @version $Rev$ $Date$
  */
-public interface ContributionExport {
+public interface ContributionExport extends NamespaceExport {
 
-    /**
-     * Get Namespace that identifies the export
-     * 
-     * @return The exported namespace
-     */
-    String getNamespace();
-
-    /**
-     * Set Namespace that identifies the export
-     * 
-     * @param namespace The exported namespace
-     */
-    void setNamespace(String namespace);
-    
-    /**
-     * Returns the model resolver for the models representing artifacts
-     * made available by this export.
-     * 
-     * @return The model resolver
-     */
-    ModelResolver getModelResolver();
-    
-    /**
-     * Sets the model resolver for the models representing artifacts
-     * made available by this export.
-     * 
-     * @param modelResolver
-     */
-    void setModelResolver(ModelResolver modelResolver);
-    
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java Sun Jul 22 14:54:31 2007
@@ -41,15 +41,30 @@
     
     /**
      * Create a contribution import model
-     * 
+     * @deprecated 
      * @return The new ContributionImport model object
      */
     ContributionImport createContributionImport();
     
     /**
      * Create a contribution import model
-     * 
+     * @deprecated
      * @return The new ContributoinExport object
      */
     ContributionExport createContributionExport();
+
+    /**
+     * Create a namespace import model object
+     * 
+     * @return The new NamespaceImport model object
+     */
+    NamespaceImport createNamespaceImport();
+    
+    /**
+     * Create a namespace export model object
+     * 
+     * @return The new NamespaceExport model object
+     */
+    NamespaceExport createNamespaceExport();
+    
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java Sun Jul 22 14:54:31 2007
@@ -19,57 +19,13 @@
 
 package org.apache.tuscany.sca.contribution;
 
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 
 /**
  * The representation of an import for the contribution
+ * @deprecated
  * 
  * @version $Rev$ $Date$
  */
-public interface ContributionImport {
-
-    /**
-     * Get the location used to resolve the definitions for this import
-     * 
-     * @return The import location
-     */
-    String getLocation();
-
-    /**
-     * Set the location used to resolve the definitions for this import
-     * 
-     * @param location The import location
-     */
-    void setLocation(String location);
-
-    /**
-     * Get Namespace that identifies the import
-     * 
-     * @return The namespace
-     */
-    String getNamespace();
-
-    /**
-     * Set Namespace that identifies the import
-     * 
-     * @param namespace The namespace
-     */
-    void setNamespace(String namespace);
-    
-    /**
-     * Returns the model resolver for the models representing artifacts
-     * made available by this import.
-     * 
-     * @return The model resolver
-     */
-    ModelResolver getModelResolver();
-
-    /**
-     * Sets the model resolver for the models representing artifacts
-     * made available by this import.
-     * 
-     * @param modelResolver The model resolver
-     */
-    void setModelResolver(ModelResolver modelResolver);   
+public interface ContributionImport extends NamespaceImport {
 }

Copied: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Export.java (from r558531, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Export.java?view=diff&rev=558558&p1=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Export.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionExport.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Export.java Sun Jul 22 14:54:31 2007
@@ -22,26 +22,12 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
- * The representation of an export for the contribution
+ * The representation of an export.
  * 
  * @version $Rev$ $Date$
  */
-public interface ContributionExport {
+public interface Export {
 
-    /**
-     * Get Namespace that identifies the export
-     * 
-     * @return The exported namespace
-     */
-    String getNamespace();
-
-    /**
-     * Set Namespace that identifies the export
-     * 
-     * @param namespace The exported namespace
-     */
-    void setNamespace(String namespace);
-    
     /**
      * Returns the model resolver for the models representing artifacts
      * made available by this export.

Copied: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java (from r558531, incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.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=558558&p1=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java&r1=558531&p2=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionImport.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Import.java Sun Jul 22 14:54:31 2007
@@ -23,40 +23,12 @@
 
 
 /**
- * The representation of an import for the contribution
+ * The representation of an import.
  * 
  * @version $Rev$ $Date$
  */
-public interface ContributionImport {
+public interface Import {
 
-    /**
-     * Get the location used to resolve the definitions for this import
-     * 
-     * @return The import location
-     */
-    String getLocation();
-
-    /**
-     * Set the location used to resolve the definitions for this import
-     * 
-     * @param location The import location
-     */
-    void setLocation(String location);
-
-    /**
-     * Get Namespace that identifies the import
-     * 
-     * @return The namespace
-     */
-    String getNamespace();
-
-    /**
-     * Set Namespace that identifies the import
-     * 
-     * @param namespace The namespace
-     */
-    void setNamespace(String namespace);
-    
     /**
      * Returns the model resolver for the models representing artifacts
      * made available by this import.

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java?view=auto&rev=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java Sun Jul 22 14:54:31 2007
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+
+/**
+ * The representation of an XML namespace export.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface NamespaceExport extends Export {
+
+    /**
+     * Get Namespace that identifies the export
+     * 
+     * @return The exported namespace
+     */
+    String getNamespace();
+
+    /**
+     * Set Namespace that identifies the export
+     * 
+     * @param namespace The exported namespace
+     */
+    void setNamespace(String namespace);
+    
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceExport.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java?view=auto&rev=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java Sun Jul 22 14:54:31 2007
@@ -0,0 +1,59 @@
+/*
+ * 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;
+
+
+
+/**
+ * The representation of an XML namespace import.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface NamespaceImport extends Import {
+
+    /**
+     * Get the location used to resolve the definitions for this import
+     * 
+     * @return The import location
+     */
+    String getLocation();
+
+    /**
+     * Set the location used to resolve the definitions for this import
+     * 
+     * @param location The import location
+     */
+    void setLocation(String location);
+
+    /**
+     * Get Namespace that identifies the import
+     * 
+     * @return The namespace
+     */
+    String getNamespace();
+
+    /**
+     * Set Namespace that identifies the import
+     * 
+     * @param namespace The namespace
+     */
+    void setNamespace(String namespace);
+    
+}
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/NamespaceImport.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Sun Jul 22 14:54:31 2007
@@ -20,7 +20,8 @@
 package org.apache.tuscany.sca.interfacedef.wsdl.xml;
 
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 
@@ -38,15 +39,16 @@
     private WSDLDefinition resolveImportedModel(WSDLDefinition unresolved) {
         WSDLDefinition resolved = unresolved;
         String namespace = unresolved.getNamespace();
-        if (namespace != null && namespace.length() > 0) {
-            for (ContributionImport contributionImport : this.contribution.getImports()) {
-                if (contributionImport.getNamespace().equals(namespace)) {
+        for (Import import_ : this.contribution.getImports()) {
+            if (import_ instanceof NamespaceImport) {
+                NamespaceImport namespaceImport = (NamespaceImport)import_;
+                if (namespaceImport.getNamespace().equals(namespace)) {
                     
                     // Delegate the resolution to the import resolver
-                    resolved = contributionImport.getModelResolver().resolveModel(WSDLDefinition.class, unresolved);
+                    resolved = namespaceImport.getModelResolver().resolveModel(WSDLDefinition.class, unresolved);
                     
                     // If resolved... then we are done
-                    if(unresolved.isUnresolved() == false) {
+                    if(resolved.isUnresolved() == false) {
                         break;
                     }
                 }
@@ -65,6 +67,5 @@
         
         return (T)resolved;
     }
-    
     
 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java?view=diff&rev=558558&r1=558557&r2=558558
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java Sun Jul 22 14:54:31 2007
@@ -20,8 +20,10 @@
 package org.apache.tuscany.sca.interfacedef.wsdl.xml;
 
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionImport;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
 
 /**
@@ -38,15 +40,16 @@
     private XSDefinition resolveImportedModel(XSDefinition unresolved) {
         XSDefinition resolved = unresolved;
         String namespace = unresolved.getNamespace();
-        if (namespace != null && namespace.length() > 0) {
-            for (ContributionImport contributionImport : this.contribution.getImports()) {
-                if (contributionImport.getNamespace().equals(namespace)) {
+        for (Import import_ : this.contribution.getImports()) {
+            if (import_ instanceof NamespaceImport) {
+                NamespaceImport namespaceImport = (NamespaceImport)import_;
+                if (namespaceImport.getNamespace().equals(namespace)) {
                     
                     // Delegate the resolution to the import resolver
-                    resolved = contributionImport.getModelResolver().resolveModel(XSDefinition.class, unresolved);
+                    resolved = namespaceImport.getModelResolver().resolveModel(XSDefinition.class, unresolved);
                     
                     // If resolved... then we are done
-                    if(unresolved.isUnresolved() == false) {
+                    if(resolved.isUnresolved() == false) {
                         break;
                     }
                 }



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