Author: jsdelfino
Date: Sat Jun  7 08:35:02 2008
New Revision: 664356

URL: http://svn.apache.org/viewvc?rev=664356&view=rev
Log:
Create default imports/exports in contributions that do not specify any SCA 
contribution metadata, existing non-SCA JARs for example.


Added:
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultExport.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultImport.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultExportImpl.java
      - copied, changed from r664354, 
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/impl/DefaultImportImpl.java
      - copied, changed from r664354, 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
Modified:
    
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/impl/ContributionFactoryImpl.java
    
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.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/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
    
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
    
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
    
incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java

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?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
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
 Sat Jun  7 08:35:02 2008
@@ -55,5 +55,19 @@
      * @return The new artifact model object
      */
     Artifact createArtifact();
+
+    /**
+     * Create a default import model object.
+     * 
+     * @return the new default import model object
+     */
+    DefaultImport createDefaultImport();
+
+    /**
+     * Create a default export model object.
+     * 
+     * @return the new default export model object
+     */
+    DefaultExport createDefaultExport();
     
 }
\ No newline at end of file

Added: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultExport.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultExport.java?rev=664356&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultExport.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultExport.java
 Sat Jun  7 08:35:02 2008
@@ -0,0 +1,30 @@
+/*
+ * 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 export that exports all artifacts in
+ * a contribution.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface DefaultExport extends Export {
+}

Added: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultImport.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultImport.java?rev=664356&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultImport.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultImport.java
 Sat Jun  7 08:35:02 2008
@@ -0,0 +1,30 @@
+/*
+ * 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 a default import that imports artifacts from
+ * all contributions.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface DefaultImport extends Import {
+}

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
 Sat Jun  7 08:35:02 2008
@@ -23,6 +23,8 @@
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ContributionMetadata;
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.DefaultImport;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
 
 
@@ -48,6 +50,14 @@
         return new ArtifactImpl();
     }
     
+    public DefaultExport createDefaultExport() {
+        return new DefaultExportImpl();
+    }
+    
+    public DefaultImport createDefaultImport() {
+        return new DefaultImportImpl();
+    }
+    
     @Deprecated
     public DeployedArtifact createDeployedArtifact() {
         class DeployedArtifactImpl extends ArtifactImpl implements 
DeployedArtifact {

Copied: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultExportImpl.java
 (from r664354, 
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/impl/DefaultExportImpl.java?p2=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultExportImpl.java&p1=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/ContributionFactory.java&r1=664354&r2=664356&rev=664356&view=diff
==============================================================================
--- 
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/impl/DefaultExportImpl.java
 Sat Jun  7 08:35:02 2008
@@ -17,43 +17,29 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.contribution;
+package org.apache.tuscany.sca.contribution.impl;
 
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
- * A factory for the contribution model.
+ * The representation of an export for the contribution
  * 
  * @version $Rev$ $Date$
  */
-public interface ContributionFactory {
+public class DefaultExportImpl implements DefaultExport {
+    private ModelResolver modelResolver;
     
-    /**
-     * Create a contribution model object
-     * 
-     * @return The new contribution model object
-     */
-    Contribution createContribution();
-        
-    /**
-     * Create a contribution metadata model object
-     * 
-     * @return The new contribution metadata model object
-     */
-    ContributionMetadata createContributionMetadata();
-        
-    /**
-     * Create a deployedArtifact model object
-     * 
-     * @return The new deployedArtifact model object
-     */
-    @Deprecated
-    DeployedArtifact createDeployedArtifact();   
-
-    /**
-     * Create an artifact model object
-     * 
-     * @return The new artifact model object
-     */
-    Artifact createArtifact();
+    protected DefaultExportImpl() {
+        super();
+    }
+    
+    public ModelResolver getModelResolver() {
+        return modelResolver;
+    }
+    
+    public void setModelResolver(ModelResolver modelResolver) {
+        this.modelResolver = modelResolver;
+    }
     
-}
\ No newline at end of file
+}

Copied: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultImportImpl.java
 (from r664354, 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java)
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultImportImpl.java?p2=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultImportImpl.java&p1=incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java&r1=664354&r2=664356&rev=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/DefaultImportImpl.java
 Sat Jun  7 08:35:02 2008
@@ -19,39 +19,37 @@
 
 package org.apache.tuscany.sca.contribution.impl;
 
-import org.apache.tuscany.sca.contribution.Artifact;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.ContributionMetadata;
-import org.apache.tuscany.sca.contribution.DeployedArtifact;
-
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.DefaultImport;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 
 /**
- * Default implementation of a contribution model factory.
+ * The representation of an import for the contribution
  * 
  * @version $Rev$ $Date$
  */
-public class ContributionFactoryImpl implements ContributionFactory {
-    
-    protected ContributionFactoryImpl() {
+public class DefaultImportImpl implements DefaultImport {
+    private ModelResolver modelResolver;
+
+    protected DefaultImportImpl() {
+        super();
     }
     
-    public Contribution createContribution() {
-        return new ContributionImpl();
+    public ModelResolver getModelResolver() {
+        return modelResolver;
     }
     
-    public ContributionMetadata createContributionMetadata() {
-        return new ContributionMetadataImpl();
+    public void setModelResolver(ModelResolver modelResolver) {
+        this.modelResolver = modelResolver;
     }
 
-    public Artifact createArtifact() {
-        return new ArtifactImpl();
-    }
     
-    @Deprecated
-    public DeployedArtifact createDeployedArtifact() {
-        class DeployedArtifactImpl extends ArtifactImpl implements 
DeployedArtifact {
+    public boolean match(Export export) {
+        if (export instanceof DefaultExport) {
+            return true;
         }
-        return new DeployedArtifactImpl();
+        return false;
     }
+    
 }

Modified: 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
 Sat Jun  7 08:35:02 2008
@@ -37,6 +37,7 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
@@ -54,6 +55,10 @@
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.DefaultImport;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import 
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
@@ -611,6 +616,25 @@
                     contributionCache.contributionLastModified = lastModified;
                     cache.contributions.put(location, contributionCache);
                     
+                    
+                    // Make sure that the cloud contribution does not contain
+                    // default imports/exports as we want to isolate it from 
application
+                    // provided contributions
+                    if 
(contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
+                        for (Iterator<Import> i = 
contribution.getImports().iterator(); i.hasNext(); ) {
+                            Import import_ = i.next();
+                            if (import_ instanceof DefaultImport) {
+                                i.remove();
+                            }
+                        }
+                        for (Iterator<Export> i = 
contribution.getExports().iterator(); i.hasNext(); ) {
+                            Export export = i.next();
+                            if (export instanceof DefaultExport) {
+                                i.remove();
+                            }
+                        }
+                    }
+                    
                 } catch (ContributionReadException e) {
                     Contribution contribution = 
contributionFactory.createContribution();
                     contribution.setURI(c.getURI());

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?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
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
 Sat Jun  7 08:35:02 2008
@@ -47,6 +47,7 @@
 import org.apache.tuscany.sca.contribution.Artifact;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.DefaultImport;
 import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.namespace.NamespaceImport;
@@ -281,7 +282,7 @@
                 NamespaceImport namespaceImport = (NamespaceImport)import_;
                 if (namespaceImport.getNamespace().equals(namespace)) {
 
-                    // Delegate the resolution to the import resolver
+                    // Delegate the resolution to the namespace import resolver
                     resolved =
                         
namespaceImport.getModelResolver().resolveModel(WSDLDefinition.class,
                                                                         
(WSDLDefinition)unresolved);
@@ -289,6 +290,15 @@
                         return modelClass.cast(resolved);
                     }
                 }
+            } else if (import_ instanceof DefaultImport) {
+                
+                // Delegate the resolution to the default import resolver
+                resolved =
+                    
import_.getModelResolver().resolveModel(WSDLDefinition.class,
+                                                                    
(WSDLDefinition)unresolved);
+                if (!resolved.isUnresolved()) {
+                    return modelClass.cast(resolved);
+                }
             }
         }
         return modelClass.cast(unresolved);

Modified: 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/builder/impl/ContributionDependencyBuilderImpl.java
 Sat Jun  7 08:35:02 2008
@@ -89,6 +89,10 @@
             // Go through all contribution candidates and their exports
             List<Export> matchingExports = new ArrayList<Export>();
             for (Contribution dependency: workspace.getContributions()) {
+                if (dependency == contribution) {
+                    // Do not self import
+                    continue;
+                }
                 for (Export export: dependency.getExports()) {
                     
                     // If an export from a contribution matches the import in 
hand

Modified: 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
 Sat Jun  7 08:35:02 2008
@@ -28,6 +28,8 @@
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ContributionMetadata;
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.DefaultImport;
 import org.apache.tuscany.sca.contribution.Export;
 import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
@@ -152,6 +154,12 @@
                     
contribution.getDeployables().add((Composite)artifact.getModel());
                 }
             }
+
+            // Add default contribution import and export
+            DefaultImport defaultImport = 
contributionFactory.createDefaultImport();
+            contribution.getImports().add(defaultImport);
+            DefaultExport defaultExport = 
contributionFactory.createDefaultExport();
+            contribution.getExports().add(defaultExport);
         }
         
         return contribution;
@@ -166,7 +174,14 @@
         
         // Resolve imports and exports
         for (Export export: contribution.getExports()) {
-            extensionProcessor.resolve(export, contributionResolver);
+            if (export instanceof DefaultExport) {
+                
+                // Initialize the default export's resolver
+                export.setModelResolver(contributionResolver);
+                
+            } else {
+                extensionProcessor.resolve(export, contributionResolver);
+            }
         }
         for (Import import_: contribution.getImports()) {
             extensionProcessor.resolve(import_, contributionResolver);

Modified: 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
 Sat Jun  7 08:35:02 2008
@@ -30,6 +30,8 @@
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ContributionMetadata;
+import org.apache.tuscany.sca.contribution.DefaultExport;
+import org.apache.tuscany.sca.contribution.DefaultImport;
 import org.apache.tuscany.sca.contribution.Export;
 import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
@@ -160,12 +162,20 @@
         
                         // Read each artifact
                         Object model = artifactProcessor.read(contributionURL, 
URI.create(artifactURI), artifactURL);
+                        
+                        // In the absence of more info, consider all 
composites as deployable
                         if (model instanceof Composite) {
                             
contribution.getDeployables().add((Composite)model);
                         }
                     }
                 }
             }
+            
+            // Add default contribution import and export
+            DefaultImport defaultImport = 
contributionFactory.createDefaultImport();
+            contribution.getImports().add(defaultImport);
+            DefaultExport defaultExport = 
contributionFactory.createDefaultExport();
+            contribution.getExports().add(defaultExport);
         }
         
         return contribution;
@@ -180,7 +190,14 @@
         
         // Resolve imports and exports
         for (Export export: contribution.getExports()) {
-            extensionProcessor.resolve(export, contributionResolver);
+            if (export instanceof DefaultExport) {
+                
+                // Initialize the default export's resolver
+                export.setModelResolver(contributionResolver);
+                
+            } else {
+                extensionProcessor.resolve(export, contributionResolver);
+            }
         }
         for (Import import_: contribution.getImports()) {
             extensionProcessor.resolve(import_, contributionResolver);

Modified: 
incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java?rev=664356&r1=664355&r2=664356&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
 Sat Jun  7 08:35:02 2008
@@ -28,6 +28,7 @@
 
 import org.apache.tuscany.sca.contribution.Artifact;
 import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.DefaultImport;
 import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.namespace.NamespaceImport;
@@ -115,13 +116,21 @@
                 NamespaceImport namespaceImport = (NamespaceImport)import_;
                 if (namespaceImport.getNamespace().equals(namespace)) {
 
-                    // Delegate the resolution to the import resolver
+                    // Delegate the resolution to the namespace import resolver
                     resolved =
                         
namespaceImport.getModelResolver().resolveModel(XSDefinition.class, 
(XSDefinition)unresolved);
                     if (!resolved.isUnresolved()) {
                         return modelClass.cast(resolved);
                     }
                 }
+            } else if (import_ instanceof DefaultImport) {
+
+                // Delegate the resolution to the default import resolver
+                resolved =
+                    
import_.getModelResolver().resolveModel(XSDefinition.class, 
(XSDefinition)unresolved);
+                if (!resolved.isUnresolved()) {
+                    return modelClass.cast(resolved);
+                }
             }
         }
         return modelClass.cast(unresolved);


Reply via email to