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/05/07 05:27:56 UTC

svn commit: r535720 [1/2] - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/ bi...

Author: jsdelfino
Date: Sun May  6 20:27:50 2007
New Revision: 535720

URL: http://svn.apache.org/viewvc?view=rev&rev=535720
Log:
Allow a resolver to be associated with each contribution, import or export. Adjusted SPI to take a resolver when a contribution is contributed. Renamed ArtifactResolver to ModelResolver as it really resolves models and not Artifacts, which in a Contribution represent documents/resources.

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionExportImpl.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionExport.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultModelResolver.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ModelResolver.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ArtifactResolver.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolver.java
Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/BaseArtifactProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
    incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/binding/ws/xml/WebServiceBindingProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionFactoryImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImportImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionFactory.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionImport.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ArtifactProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleStAXArtifactProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleURLArtifactProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionMetadataLoader.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionService.java
    incubator/tuscany/java/sca/modules/contribution/src/test/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolverTestCase.java
    incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/core/spring/runtime/ComponentContext.java
    incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOProcessor.java
    incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOProcessorTestCase.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/CRUDImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java
    incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/implementation/spi/AbstractStAXArtifactProcessor.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/introspect/DefaultWSDLInterfaceIntrospector.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/introspect/WSDLInterfaceIntrospector.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/introspect/WSDLOperation.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLDocumentProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/XSDDocumentProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/introspect/DefaultWSDLInterfaceIntrospectorTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/introspect/WSDLOperationTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/BaseArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/BaseArtifactProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/BaseArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/BaseArtifactProcessor.java Sun May  6 20:27:50 2007
@@ -52,7 +52,7 @@
 import org.apache.tuscany.assembly.Property;
 import org.apache.tuscany.assembly.Reference;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.interfacedef.InterfaceContract;
@@ -383,16 +383,16 @@
      * @return
      * @throws ContributionResolveException
      */
-    protected Implementation resolveImplementation(Implementation implementation, ArtifactResolver resolver) throws ContributionResolveException {
+    protected Implementation resolveImplementation(Implementation implementation, ModelResolver resolver) throws ContributionResolveException {
         if (implementation != null) {
             if (implementation.isUnresolved()) {
-                implementation = resolver.resolve(Implementation.class, implementation);
+                implementation = resolver.resolveModel(Implementation.class, implementation);
 
                 // Lazily resolve implementations
                 if (implementation.isUnresolved()) {
                     extensionProcessor.resolve(implementation, resolver);
                     if (!implementation.isUnresolved()) {
-                        resolver.add(implementation);
+                        resolver.addModel(implementation);
                     }
                 }
             }
@@ -405,7 +405,7 @@
      * @param contracts the list of contracts
      * @param resolver the resolver to use to resolve models
      */
-    protected <C extends Contract> void resolveContracts(List<C> contracts, ArtifactResolver resolver) throws ContributionResolveException {
+    protected <C extends Contract> void resolveContracts(List<C> contracts, ModelResolver resolver) throws ContributionResolveException {
         for (Contract contract: contracts) {
 
             // Resolve the interface contract
@@ -427,7 +427,7 @@
      * @param contracts the list of contracts
      * @param resolver the resolver to use to resolve models
      */
-    protected <C extends AbstractContract> void resolveAbstractContracts(List<C> contracts, ArtifactResolver resolver) throws ContributionResolveException {
+    protected <C extends AbstractContract> void resolveAbstractContracts(List<C> contracts, ModelResolver resolver) throws ContributionResolveException {
         for (AbstractContract contract: contracts) {
 
             // Resolve the interface contract

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeDocumentProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeDocumentProcessor.java Sun May  6 20:27:50 2007
@@ -31,7 +31,7 @@
 import org.apache.tuscany.assembly.ComponentType;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 
@@ -80,7 +80,7 @@
         }
     }
     
-    public void resolve(ComponentType componentType, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(ComponentType componentType, ModelResolver resolver) throws ContributionResolveException {
         extensionProcessor.resolve(componentType, resolver);
     }
     

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ComponentTypeProcessor.java Sun May  6 20:27:50 2007
@@ -40,7 +40,7 @@
 import org.apache.tuscany.assembly.Reference;
 import org.apache.tuscany.assembly.Service;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWriteException;
@@ -254,7 +254,7 @@
         }
     }
     
-    public void resolve(ComponentType componentType, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(ComponentType componentType, ModelResolver resolver) throws ContributionResolveException {
 
         // Resolve component type services and references
         resolveContracts(componentType.getServices(), resolver);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeDocumentProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeDocumentProcessor.java Sun May  6 20:27:50 2007
@@ -31,7 +31,7 @@
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 
@@ -79,7 +79,7 @@
         }
     }
     
-    public void resolve(Composite composite, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(Composite composite, ModelResolver resolver) throws ContributionResolveException {
         extensionProcessor.resolve(composite, resolver);
     }
 

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/CompositeProcessor.java Sun May  6 20:27:50 2007
@@ -52,7 +52,7 @@
 import org.apache.tuscany.assembly.Wire;
 import org.apache.tuscany.assembly.builder.impl.DefaultCompositeBuilder;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWireException;
@@ -443,17 +443,17 @@
         }
     }
     
-    public void resolve(Composite composite, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(Composite composite, ModelResolver resolver) throws ContributionResolveException {
         
         // Resolve constraining type
         ConstrainingType constrainingType = composite.getConstrainingType(); 
-        constrainingType = resolver.resolve(ConstrainingType.class, constrainingType); 
+        constrainingType = resolver.resolveModel(ConstrainingType.class, constrainingType); 
         composite.setConstrainingType(constrainingType);
         
         // Resolve includes in the composite
         for (int i = 0, n = composite.getIncludes().size(); i < n; i++) {
             Composite include = composite.getIncludes().get(i);
-            include = resolver.resolve(Composite.class, include);
+            include = resolver.resolveModel(Composite.class, include);
             composite.getIncludes().set(i, include);
         }
 
@@ -467,7 +467,7 @@
         // Resolve component implementations, services and references 
         for (Component component: composite.getComponents()) {
             constrainingType = component.getConstrainingType(); 
-            constrainingType = resolver.resolve(ConstrainingType.class, constrainingType); 
+            constrainingType = resolver.resolveModel(ConstrainingType.class, constrainingType); 
             component.setConstrainingType(constrainingType);
 
             Implementation implementation = component.getImplementation();

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeDocumentProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeDocumentProcessor.java Sun May  6 20:27:50 2007
@@ -31,7 +31,7 @@
 import org.apache.tuscany.assembly.ConstrainingType;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 
@@ -79,7 +79,7 @@
         }
     }
     
-    public void resolve(ConstrainingType constrainingType, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(ConstrainingType constrainingType, ModelResolver resolver) throws ContributionResolveException {
         extensionProcessor.resolve(constrainingType, resolver);
     }
     

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ConstrainingTypeProcessor.java Sun May  6 20:27:50 2007
@@ -34,7 +34,7 @@
 import org.apache.tuscany.assembly.AssemblyFactory;
 import org.apache.tuscany.assembly.ConstrainingType;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWriteException;
@@ -188,7 +188,7 @@
         }
     }
     
-    public void resolve(ConstrainingType constrainingType, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(ConstrainingType constrainingType, ModelResolver resolver) throws ContributionResolveException {
 
         // Resolve component type services and references
         resolveAbstractContracts(constrainingType.getServices(), resolver);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java Sun May  6 20:27:50 2007
@@ -35,7 +35,7 @@
 import org.apache.tuscany.contribution.processor.ExtensibleStAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.ExtensibleURLArtifactProcessor;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.contribution.resolver.DefaultArtifactResolver;
+import org.apache.tuscany.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
@@ -49,7 +49,7 @@
 public class ReadDocumentTestCase extends TestCase {
 
     private ExtensibleURLArtifactProcessor documentProcessor;
-    private DefaultArtifactResolver resolver; 
+    private DefaultModelResolver resolver; 
 
     public void setUp() throws Exception {
         AssemblyFactory factory = new DefaultAssemblyFactory();
@@ -72,7 +72,7 @@
         documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
         documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
 
-        resolver = new DefaultArtifactResolver(getClass().getClassLoader());
+        resolver = new DefaultModelResolver(getClass().getClassLoader());
     }
 
     public void tearDown() throws Exception {
@@ -85,7 +85,7 @@
         URL url = getClass().getResource("CalculatorComponent.constrainingType");
         ConstrainingType constrainingType = (ConstrainingType)documentProcessor.read(null, null, url);
         assertNotNull(constrainingType);
-        resolver.add(constrainingType);
+        resolver.addModel(constrainingType);
 
         url = getClass().getResource("TestAllCalculator.composite");
         Composite composite = (Composite)documentProcessor.read(null, null, url);
@@ -101,7 +101,7 @@
         URL url = getClass().getResource("Calculator.composite");
         Composite nestedComposite = (Composite)documentProcessor.read(null, null, url);
         assertNotNull(nestedComposite);
-        resolver.add(nestedComposite);
+        resolver.addModel(nestedComposite);
 
         url = getClass().getResource("TestAllCalculator.composite");
         Composite composite = (Composite)documentProcessor.read(null, null, url);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java Sun May  6 20:27:50 2007
@@ -33,7 +33,7 @@
 import org.apache.tuscany.assembly.DefaultAssemblyFactory;
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.DefaultArtifactResolver;
+import org.apache.tuscany.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
@@ -49,7 +49,7 @@
     private XMLInputFactory inputFactory;
     private DefaultStAXArtifactProcessorExtensionPoint staxProcessors;
     private ExtensibleStAXArtifactProcessor staxProcessor;
-    private DefaultArtifactResolver resolver; 
+    private DefaultModelResolver resolver; 
     private AssemblyFactory factory;
     private PolicyFactory policyFactory;
     private InterfaceContractMapper mapper;
@@ -61,7 +61,7 @@
         inputFactory = XMLInputFactory.newInstance();
         staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();
         staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
-        resolver = new DefaultArtifactResolver(getClass().getClassLoader());
+        resolver = new DefaultModelResolver(getClass().getClassLoader());
     }
 
     public void tearDown() throws Exception {
@@ -80,7 +80,7 @@
         ConstrainingType constrainingType = constrainingTypeReader.read(reader);
         is.close();
         assertNotNull(constrainingType);
-        resolver.add(constrainingType);
+        resolver.addModel(constrainingType);
 
         is = getClass().getResourceAsStream("TestAllCalculator.composite");
         CompositeProcessor compositeReader = new CompositeProcessor(factory, policyFactory, mapper, staxProcessor);
@@ -102,7 +102,7 @@
         Composite nestedComposite = compositeReader.read(reader);
         is.close();
         assertNotNull(nestedComposite);
-        resolver.add(nestedComposite);
+        resolver.addModel(nestedComposite);
 
         is = getClass().getResourceAsStream("TestAllCalculator.composite");
         compositeReader = new CompositeProcessor(factory, policyFactory, mapper, staxProcessor);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java Sun May  6 20:27:50 2007
@@ -34,7 +34,7 @@
 import org.apache.tuscany.assembly.builder.impl.DefaultCompositeBuilder;
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.DefaultArtifactResolver;
+import org.apache.tuscany.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
@@ -50,7 +50,7 @@
     private XMLInputFactory inputFactory;
     private DefaultStAXArtifactProcessorExtensionPoint staxProcessors;
     private ExtensibleStAXArtifactProcessor staxProcessor; 
-    private DefaultArtifactResolver resolver; 
+    private DefaultModelResolver resolver; 
     private AssemblyFactory factory;
     private PolicyFactory policyFactory;
     private InterfaceContractMapper mapper;
@@ -59,7 +59,7 @@
         inputFactory = XMLInputFactory.newInstance();
         staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();
         staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
-        resolver = new DefaultArtifactResolver(getClass().getClassLoader());
+        resolver = new DefaultModelResolver(getClass().getClassLoader());
         factory = new DefaultAssemblyFactory();
         policyFactory = new DefaultPolicyFactory();
         mapper = new DefaultInterfaceContractMapper();
@@ -81,7 +81,7 @@
         ConstrainingType constrainingType = constrainingTypeReader.read(reader);
         is.close();
         assertNotNull(constrainingType);
-        resolver.add(constrainingType);
+        resolver.addModel(constrainingType);
 
         is = getClass().getResourceAsStream("TestAllCalculator.composite");
         CompositeProcessor compositeReader = new CompositeProcessor(factory, policyFactory, mapper, staxProcessor);
@@ -105,7 +105,7 @@
         Composite nestedComposite = compositeReader.read(reader);
         is.close();
         assertNotNull(nestedComposite);
-        resolver.add(nestedComposite);
+        resolver.addModel(nestedComposite);
 
         is = getClass().getResourceAsStream("TestAllCalculator.composite");
         compositeReader = new CompositeProcessor(factory, policyFactory, mapper, staxProcessor);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java Sun May  6 20:27:50 2007
@@ -35,7 +35,7 @@
 import org.apache.tuscany.assembly.builder.impl.DefaultCompositeBuilder;
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.DefaultArtifactResolver;
+import org.apache.tuscany.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
@@ -49,7 +49,7 @@
 public class WriteAllTestCase extends TestCase {
     private DefaultStAXArtifactProcessorExtensionPoint staxProcessors;
     private ExtensibleStAXArtifactProcessor staxProcessor;
-    private DefaultArtifactResolver resolver; 
+    private DefaultModelResolver resolver; 
     private AssemblyFactory factory;
     private PolicyFactory policyFactory;
     private InterfaceContractMapper mapper;
@@ -66,7 +66,7 @@
         staxProcessors.addArtifactProcessor(new CompositeProcessor(factory, policyFactory, mapper, staxProcessor));
         staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(factory, policyFactory, staxProcessor));
         staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(factory, policyFactory, staxProcessor));
-        resolver = new DefaultArtifactResolver(getClass().getClassLoader());
+        resolver = new DefaultModelResolver(getClass().getClassLoader());
     }
 
     public void tearDown() throws Exception {

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/xml/RMIBindingProcessor.java Sun May  6 20:27:50 2007
@@ -33,7 +33,7 @@
 import org.apache.tuscany.binding.rmi.RMIBindingConstants;
 import org.apache.tuscany.binding.rmi.RMIBindingFactory;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWriteException;
@@ -100,7 +100,7 @@
         }
     }
 
-    public void resolve(RMIBinding model, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(RMIBinding model, ModelResolver resolver) throws ContributionResolveException {
     }
 
     public QName getArtifactType() {

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java Sun May  6 20:27:50 2007
@@ -96,7 +96,7 @@
         URI name = URI.create(context.getComponentId() + "#" + compositeReference.getName());
 
         ReferenceBinding referenceBinding = new Axis2ReferenceBinding(name, targetURI, wsBinding);
-        referenceBindings.add(referenceBinding); // track binding so that its resources can be released
+        referenceBindings.addModel(referenceBinding); // track binding so that its resources can be released
         return referenceBinding;
     }
 
@@ -117,7 +117,7 @@
         // TODO: if <binding.ws> specifies the wsdl service then should create a service for every port
 
         ServiceBinding serviceBinding = new Axis2ServiceBinding(uri, wsBinding, servletHost, configContext);
-        serviceBindings.add(serviceBinding); // track binding so that its resources can be released
+        serviceBindings.addModel(serviceBinding); // track binding so that its resources can be released
         return serviceBinding;
     }
 

Modified: incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/binding/ws/xml/WebServiceBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/binding/ws/xml/WebServiceBindingProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/binding/ws/xml/WebServiceBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/binding/ws/xml/WebServiceBindingProcessor.java Sun May  6 20:27:50 2007
@@ -38,7 +38,7 @@
 import org.apache.tuscany.binding.ws.WebServiceBinding;
 import org.apache.tuscany.binding.ws.WebServiceBindingFactory;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWriteException;
@@ -211,11 +211,11 @@
         }
     }
 
-    public void resolve(WebServiceBinding model, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(WebServiceBinding model, ModelResolver resolver) throws ContributionResolveException {
         WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition();
         wsdlDefinition.setUnresolved(true);
         wsdlDefinition.setNamespace(model.getNamespace());
-        wsdlDefinition = resolver.resolve(WSDLDefinition.class, wsdlDefinition);
+        wsdlDefinition = resolver.resolveModel(WSDLDefinition.class, wsdlDefinition);
         if (!wsdlDefinition.isUnresolved()) {
             model.setDefinition(wsdlDefinition);
             Definition definition = wsdlDefinition.getDefinition();

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionExportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionExportImpl.java?view=auto&rev=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionExportImpl.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionExportImpl.java Sun May  6 20:27:50 2007
@@ -0,0 +1,52 @@
+/*
+ * 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.contribution.impl;
+
+import org.apache.tuscany.contribution.ContributionExport;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
+
+/**
+ * The representation of an export for the contribution
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ContributionExportImpl implements ContributionExport {
+    private String namespace; // The namespace to be imported
+    private ModelResolver modelResolver;
+    
+    protected ContributionExportImpl() {
+    }
+    
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+    
+    public ModelResolver getModelResolver() {
+        return modelResolver;
+    }
+    
+    public void setModelResolver(ModelResolver modelResolver) {
+        this.modelResolver = modelResolver;
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionFactoryImpl.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionFactoryImpl.java Sun May  6 20:27:50 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.contribution.impl;
 
 import org.apache.tuscany.contribution.Contribution;
+import org.apache.tuscany.contribution.ContributionExport;
 import org.apache.tuscany.contribution.ContributionFactory;
 import org.apache.tuscany.contribution.ContributionImport;
 import org.apache.tuscany.contribution.DeployedArtifact;
@@ -30,11 +31,15 @@
         return new ContributionImpl();
     }
 
-    public DeployedArtifact createDeplyedArtifact() {
+    public DeployedArtifact createDeployedArtifact() {
         return new DeployedArtifactImpl();
     }
 
     public ContributionImport createContributionImport() {
         return new ContributionImportImpl();
+    }
+    
+    public ContributionExport createContributionExport() {
+        return new ContributionExportImpl();
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImpl.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImpl.java Sun May  6 20:27:50 2007
@@ -24,8 +24,10 @@
 
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.contribution.Contribution;
+import org.apache.tuscany.contribution.ContributionExport;
 import org.apache.tuscany.contribution.ContributionImport;
 import org.apache.tuscany.contribution.DeployedArtifact;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 
 /**
  * The representation of a deployed contribution
@@ -33,9 +35,10 @@
  * @version $Rev: 531146 $ $Date: 2007-04-21 22:40:50 -0700 (Sat, 21 Apr 2007) $
  */
 public class ContributionImpl extends ArtifactImpl implements Contribution {
-    private List<String> exports = new ArrayList<String>();
+    private List<ContributionExport> exports = new ArrayList<ContributionExport>();
     private List<ContributionImport> imports = new ArrayList<ContributionImport>();
     private List<Composite> deployables = new ArrayList<Composite>();
+    private ModelResolver modelResolver;
     
     /**
      * A list of artifacts in the contribution
@@ -45,7 +48,7 @@
     protected ContributionImpl() {
     }
     
-    public List<String> getExports() {
+    public List<ContributionExport> getExports() {
         return exports;
     }
 
@@ -60,5 +63,12 @@
     public List<DeployedArtifact> getArtifacts() {
         return artifacts;
     }
-    
+
+    public ModelResolver getModelResolver() {
+        return modelResolver;
+    }
+
+    public void setModelResolver(ModelResolver modelResolver) {
+        this.modelResolver = modelResolver;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImportImpl.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/impl/ContributionImportImpl.java Sun May  6 20:27:50 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.contribution.impl;
 
 import org.apache.tuscany.contribution.ContributionImport;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 
 /**
  * The representation of an import for the contribution
@@ -29,6 +30,7 @@
 public class ContributionImportImpl implements 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() {
     }
@@ -47,5 +49,13 @@
 
     public void setNamespace(String namespace) {
         this.namespace = namespace;
+    }
+    
+    public ModelResolver getModelResolver() {
+        return modelResolver;
+    }
+    
+    public void setModelResolver(ModelResolver modelResolver) {
+        this.modelResolver = modelResolver;
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java Sun May  6 20:27:50 2007
@@ -28,6 +28,7 @@
 import org.apache.tuscany.assembly.AssemblyFactory;
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.contribution.Contribution;
+import org.apache.tuscany.contribution.ContributionExport;
 import org.apache.tuscany.contribution.ContributionFactory;
 import org.apache.tuscany.contribution.ContributionImport;
 import org.apache.tuscany.contribution.service.ContributionMetadataLoader;
@@ -61,12 +62,8 @@
         return CONTRIBUTION;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.tuscany.services.contribution.ContributionMetadataLoader#load(javax.xml.stream.XMLStreamReader)
-     */
-    public Contribution load(XMLStreamReader reader) throws XMLStreamException, ContributionMetadataLoaderException {
+    public void load(Contribution contribution, XMLStreamReader reader) throws XMLStreamException, ContributionMetadataLoaderException {
 
-        Contribution contribution = this.contributionFactory.createContribution();
         while (true) {
             int event = reader.next();
             switch (event) {
@@ -116,12 +113,14 @@
                         if (ns == null) {
                             throw new InvalidValueException("Attribute 'namespace' is missing");
                         }
-                        contribution.getExports().add(ns);
+                        ContributionExport contributionExport = this.contributionFactory.createContributionExport();
+                        contributionExport.setNamespace(ns);
+                        contribution.getExports().add(contributionExport);
                     }
                     break;
                 case XMLStreamConstants.END_ELEMENT:
                     if (CONTRIBUTION.equals(reader.getName())) {
-                        return contribution;
+                        return;
                     }
                     break;
 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java Sun May  6 20:27:50 2007
@@ -40,7 +40,7 @@
 import org.apache.tuscany.contribution.DeployedArtifact;
 import org.apache.tuscany.contribution.processor.PackageProcessor;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionException;
 import org.apache.tuscany.contribution.service.ContributionMetadataLoaderException;
 import org.apache.tuscany.contribution.service.ContributionRepository;
@@ -69,11 +69,6 @@
     private URLArtifactProcessor artifactProcessor;
 
     /**
-     * Artifact Resolver
-     */
-    private ArtifactResolver artifactResolver;
-    
-    /**
      * xml factory used to create reader instance to load contribution metadata
      */
     private XMLInputFactory xmlFactory;
@@ -97,7 +92,7 @@
     public ContributionServiceImpl(ContributionRepository repository,
                                    PackageProcessor packageProcessor,
                                    URLArtifactProcessor artifactProcessor,
-                                   ArtifactResolver artifactResolver,
+                                   ModelResolver artifactResolver,
                                    AssemblyFactory assemblyFactory,
                                    ContributionFactory contributionFactory,
                                    XMLInputFactory xmlFactory) {
@@ -105,14 +100,13 @@
         this.contributionRepository = repository;
         this.packageProcessor = packageProcessor;
         this.artifactProcessor = artifactProcessor;
-        this.artifactResolver = artifactResolver;
         this.xmlFactory = xmlFactory;
 
         this.contributionFactory = contributionFactory;
         this.contributionLoader = new ContributionMetadataLoaderImpl(assemblyFactory, contributionFactory);
     }
 
-    public Contribution contribute(String contributionURI, URL sourceURL, boolean storeInRepository) throws ContributionException,
+    public Contribution contribute(String contributionURI, URL sourceURL, ModelResolver modelResolver, boolean storeInRepository) throws ContributionException,
         IOException {
         if (contributionURI == null) {
             throw new IllegalArgumentException("URI for the contribution is null");
@@ -120,15 +114,17 @@
         if (sourceURL == null) {
             throw new IllegalArgumentException("Source URL for the contribution is null");
         }
-        return addContribution(contributionURI, sourceURL, null, storeInRepository);
+        
+        return addContribution(contributionURI, sourceURL, null, modelResolver, storeInRepository);
     }
 
-    public Contribution contribute(String contributionURI, URL sourceURL, InputStream input) 
+    public Contribution contribute(String contributionURI, URL sourceURL, InputStream input, ModelResolver modelResolver) 
         throws ContributionException, IOException {
-        return addContribution(contributionURI, sourceURL, input, true);
+        
+        return addContribution(contributionURI, sourceURL, input, modelResolver, true);
     }
 
-    private Contribution initializeContributionMetadata(URL sourceURL) throws ContributionException {
+    private Contribution initializeContributionMetadata(URL sourceURL, ModelResolver modelResolver) throws ContributionException {
         Contribution contributionMetadata = null;
         URL contributionMetadataURL;
         URL generatedContributionMetadataURL;
@@ -141,16 +137,16 @@
         generatedContributionMetadataURL = cl.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META);
 
         try {
-            if (contributionMetadataURL == null && generatedContributionMetadataURL == null) {
-                contributionMetadata = this.contributionFactory.createContribution();
-            } else {
+            contributionMetadata = this.contributionFactory.createContribution();
+            contributionMetadata.setModelResolver(modelResolver);
+            if (contributionMetadataURL != null || generatedContributionMetadataURL != null) {
                 URL metadataURL = contributionMetadataURL != null ? contributionMetadataURL
                                                                  : generatedContributionMetadataURL;
 
                 try {
                     metadataStream = metadataURL.openStream();
                     XMLStreamReader xmlReader = this.xmlFactory.createXMLStreamReader(metadataStream);
-                    contributionMetadata = this.contributionLoader.load(xmlReader);
+                    this.contributionLoader.load(contributionMetadata, xmlReader);
 
                 } catch (IOException ioe) {
                     throw new InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
@@ -183,17 +179,9 @@
         this.contributionRegistry.remove(contribution);
     }
 
-    public void addDeploymentComposite(String contributionURI, Composite composite) throws ContributionException {
-        Contribution contribution = getContribution(contributionURI);
-
-        if (contribution == null) {
-            throw new InvalidContributionURIException("Invalid/Inexistent contribution uri '" 
-                    + contributionURI.toString());
-        }
-
-        URI compositeURI = URI.create(composite.getURI());
-        DeployedArtifact artifact = this.contributionFactory.createDeplyedArtifact();
-        artifact.setURI(compositeURI.toString());
+    public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException {
+        DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact();
+        artifact.setURI(composite.getURI());
         artifact.setModel(composite);
 
         contribution.getArtifacts().add(artifact);
@@ -228,6 +216,7 @@
     private Contribution addContribution(String contributionURI,
                                  URL sourceURL,
                                  InputStream contributionStream,
+                                 ModelResolver modelResolver,
                                  boolean storeInRepository) throws IOException, ContributionException {
         
         if (contributionStream == null && sourceURL == null) {
@@ -244,7 +233,7 @@
             }
         }
 
-        Contribution contribution = initializeContributionMetadata(locationURL);
+        Contribution contribution = initializeContributionMetadata(locationURL, modelResolver);
         contribution.setURI(contributionURI.toString());
         contribution.setLocation(locationURL.toString());
 
@@ -292,9 +281,9 @@
             Object model = this.artifactProcessor.read(contributionURL, a, artifactURL);
             
             if (model != null) {
-                artifactResolver.add(model);
+                contribution.getModelResolver().addModel(model);
                 
-                DeployedArtifact artifact = this.contributionFactory.createDeplyedArtifact();
+                DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact();
                 artifact.setURI(a.toString());
                 artifact.setLocation(artifactURL.toString());
                 artifact.setModel(model);
@@ -316,14 +305,14 @@
         for (DeployedArtifact artifact : contribution.getArtifacts()) {
             // resolve the model object
             if (artifact.getModel() != null) {
-                this.artifactProcessor.resolve(artifact.getModel(), artifactResolver);
+                this.artifactProcessor.resolve(artifact.getModel(), contribution.getModelResolver());
             }
         }
         
         //resolve deployables from contribution metadata
         List<Composite> resolvedDeployables = new ArrayList<Composite>();
         for (Composite deployableComposite : contribution.getDeployables()) {
-            Composite resolvedDeployable = artifactResolver.resolve(Composite.class, deployableComposite);
+            Composite resolvedDeployable = contribution.getModelResolver().resolveModel(Composite.class, deployableComposite);
             resolvedDeployables.add(resolvedDeployable);
         }
         

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java Sun May  6 20:27:50 2007
@@ -28,7 +28,9 @@
 
 import org.apache.tuscany.assembly.DefaultAssemblyFactory;
 import org.apache.tuscany.contribution.Contribution;
+import org.apache.tuscany.contribution.ContributionFactory;
 import org.apache.tuscany.contribution.impl.ContributionFactoryImpl;
+import org.apache.tuscany.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.contribution.service.impl.ContributionMetadataLoaderImpl;
 import org.apache.tuscany.contribution.service.impl.InvalidValueException;
 
@@ -65,9 +67,12 @@
     public void testLoad() throws Exception {
         XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(VALID_XML));
 
+        ContributionFactory factory = new ContributionFactoryImpl();
         ContributionMetadataLoaderImpl loader = 
-            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), new ContributionFactoryImpl());
-        Contribution contribution = loader.load(reader);
+            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), factory);
+        Contribution contribution = factory.createContribution();
+        contribution.setModelResolver(new DefaultModelResolver(getClass().getClassLoader()));
+        loader.load(contribution, reader);
         assertNotNull(contribution);
         assertEquals(1, contribution.getImports().size());
         assertEquals(1, contribution.getExports().size());
@@ -76,10 +81,13 @@
 
     public void testLoadInvalid() throws Exception {
         XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(INVALID_XML));
+        ContributionFactory factory = new ContributionFactoryImpl();
         ContributionMetadataLoaderImpl loader = 
-            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), new ContributionFactoryImpl());
+            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), factory);
+        Contribution contribution = factory.createContribution();
+        contribution.setModelResolver(new DefaultModelResolver(getClass().getClassLoader()));
         try {
-            loader.load(reader);
+            loader.load(contribution, reader);
             fail("InvalidException should have been thrown");
         } catch (InvalidValueException e) {
             assertTrue(true);

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java Sun May  6 20:27:50 2007
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 
 /**
  * The representation of a deployed contribution
@@ -37,7 +38,7 @@
      * Get a list of exports based on the Contribution metadata sidefile
      * @return
      */
-    List<String> getExports();
+    List<ContributionExport> getExports();
 
     /**
      * Get a list of imports based on the Contribution metadata sidefile
@@ -57,5 +58,21 @@
      * @return
      */
     List<DeployedArtifact> getArtifacts();
+
+    /**
+     * Returns the model resolver for the models representing the artifacts
+     * visible in the scope of this contribution.
+     * 
+     * @return
+     */
+    ModelResolver getModelResolver();
+    
+    /**
+     * Sets the model resolver for the models representing the artifacts
+     * visible in the scope of this contribution.
+     * 
+     * @param modelResolver
+     */
+    void setModelResolver(ModelResolver modelResolver);
     
 }

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionExport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionExport.java?view=auto&rev=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionExport.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionExport.java Sun May  6 20:27:50 2007
@@ -0,0 +1,60 @@
+/*
+ * 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.contribution;
+
+import org.apache.tuscany.contribution.resolver.ModelResolver;
+
+
+/**
+ * The representation of an export for the contribution
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface ContributionExport {
+
+    /**
+     * Get Namespace that identifies the import
+     * @return
+     */
+    String getNamespace();
+
+    /**
+     * Set Namespace that identifies the import
+     * @param namespace
+     */
+    void setNamespace(String namespace);
+    
+    /**
+     * Returns the model resolver for the models representing artifacts
+     * made available by this export.
+     * 
+     * @return
+     */
+    ModelResolver getModelResolver();
+    
+    /**
+     * Sets the model resolver for the models representing artifacts
+     * made available by this export.
+     * 
+     * @param modelResolver
+     */
+    void setModelResolver(ModelResolver modelResolver);
+    
+}

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

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

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionFactory.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionFactory.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionFactory.java Sun May  6 20:27:50 2007
@@ -29,7 +29,7 @@
      * Create a deployedArtifact model object
      * @return
      */
-    DeployedArtifact createDeplyedArtifact();
+    DeployedArtifact createDeployedArtifact();
     
     /**
      * Create a contribution model object
@@ -42,4 +42,11 @@
      * @return
      */
     ContributionImport createContributionImport();
+    
+    /**
+     * Create a contribution import model
+     * @return
+     */
+    ContributionExport createContributionExport();
+    
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionImport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionImport.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionImport.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/ContributionImport.java Sun May  6 20:27:50 2007
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.contribution;
 
+import org.apache.tuscany.contribution.resolver.ModelResolver;
+
 
 /**
  * The representation of an import for the contribution
@@ -49,4 +51,21 @@
      * @param namespace
      */
     void setNamespace(String namespace);
+    
+    /**
+     * Returns the model resolver for the models representing artifacts
+     * made available by this import.
+     * 
+     * @return
+     */
+    ModelResolver getModelResolver();
+
+    /**
+     * Sets the model resolver for the models representing artifacts
+     * made available by this import.
+     * 
+     * @param modelResolver
+     */
+    void setModelResolver(ModelResolver modelResolver);
+    
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ArtifactProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ArtifactProcessor.java Sun May  6 20:27:50 2007
@@ -18,7 +18,7 @@
  */
 package org.apache.tuscany.contribution.processor;
 
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 
 
@@ -37,7 +37,7 @@
      * @param model the model to resolve
      * @param the resolver to use to resolve referenced models
      */
-    void resolve(M model, ArtifactResolver resolver) throws ContributionResolveException;
+    void resolve(M model, ModelResolver resolver) throws ContributionResolveException;
     
     /**
      * Returns the type of model handled by this artifact processor.

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleStAXArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleStAXArtifactProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleStAXArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleStAXArtifactProcessor.java Sun May  6 20:27:50 2007
@@ -30,7 +30,7 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.ContributionWriteException;
@@ -94,7 +94,7 @@
     }
     
     @SuppressWarnings("unchecked")
-    public void resolve(Object model, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(Object model, ModelResolver resolver) throws ContributionResolveException {
 
         // Delegate to the processor associated with the model type
         if (model != null) {

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleURLArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleURLArtifactProcessor.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleURLArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/ExtensibleURLArtifactProcessor.java Sun May  6 20:27:50 2007
@@ -21,7 +21,7 @@
 import java.net.URI;
 import java.net.URL;
 
-import org.apache.tuscany.contribution.resolver.ArtifactResolver;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 import org.apache.tuscany.contribution.service.ContributionReadException;
 import org.apache.tuscany.contribution.service.ContributionResolveException;
 import org.apache.tuscany.contribution.service.UnrecognizedElementException;
@@ -64,7 +64,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    public void resolve(Object model, ArtifactResolver resolver) throws ContributionResolveException {
+    public void resolve(Object model, ModelResolver resolver) throws ContributionResolveException {
 
         // Delegate to the processor associated with the model type
         if (model != null) {

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultModelResolver.java?view=auto&rev=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultModelResolver.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/DefaultModelResolver.java Sun May  6 20:27:50 2007
@@ -0,0 +1,85 @@
+/*
+ * 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.contribution.resolver;
+
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * A default implementation of an artifact resolver, based on a map.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultModelResolver implements ModelResolver {
+    private static final long serialVersionUID = -7826976465762296634L;
+    
+    private Map<Object, Object> map = new HashMap<Object, Object>();
+    
+    private WeakReference<ClassLoader> classLoader;
+    
+    public DefaultModelResolver(ClassLoader classLoader) {
+        this.classLoader = new WeakReference<ClassLoader>(classLoader);
+    }
+
+    public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+        Object resolved = map.get(unresolved);
+        if (resolved != null) {
+            
+            // Return the resolved object
+            return modelClass.cast(resolved);
+            
+        } else if (unresolved instanceof ClassReference) {
+            
+            // Load a class on demand
+            ClassReference classReference = (ClassReference)unresolved;
+            Class clazz;
+            try {
+                clazz = Class.forName(classReference.getClassName(), true, classLoader.get());
+            } catch (ClassNotFoundException e) {
+                
+                // Return the unresolved object
+                return unresolved;
+            }
+            
+            // Store a new ClassReference wrappering the loaded class
+            resolved = new ClassReference(clazz);
+            map.put(resolved, resolved);
+            
+            // Return the resolved ClassReference
+            return modelClass.cast(resolved);
+                
+        } else {
+            
+            // Return the unresolved object
+            return unresolved;
+        }
+    }
+    
+    public void addModel(Object resolved) {
+        map.put(resolved, resolved);
+    }
+    
+    public Object removeModel(Object resolved) {
+        return map.remove(resolved);
+    }
+    
+}

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

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

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ModelResolver.java?view=auto&rev=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ModelResolver.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/resolver/ModelResolver.java Sun May  6 20:27:50 2007
@@ -0,0 +1,65 @@
+/*
+ * 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.contribution.resolver;
+
+
+
+/**
+ * SCA Assemblies reference many artifacts of a wide variety of types. These
+ * include:
+ * <ul>
+ * <li> Reference from one SCA composite to another SCA composite
+ * <li> Reference to PolicySet files
+ * <li> Reference to interface definition files, either WSDL or Java interfaces
+ * <li> Reference to XSD files
+ * <li> Reference to any of a wide variety of implementation artifact files,
+ * including Java classes, BPEL scripts, C++ DLLs and classes, PHP scripts
+ * </ul>
+ * In the SCA assemblies, these various artifacts are referenced using either
+ * QNames or URIs that do not point to a specific entity. Resolution of these
+ * references to concrete artifacts is necessary as part of the operation of the
+ * SCA domain.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface ModelResolver {
+
+    /**
+     * Resolve the model representing an artifact.
+     * @param modelClass the type of artifact
+     * @param unresolved the unresolved model
+     * @return the resolved model
+     */
+    <T> T resolveModel(Class<T> modelClass, T unresolved);
+    
+    /**
+     * Add a resolved model.
+     * @param resolved
+     */
+    void addModel(Object resolved);
+    
+    /**
+     * Remove a resolved model.
+     * @param resolved
+     * @return the removed model, or null if the model was not removed
+     */
+    Object removeModel(Object resolved);
+    
+}

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

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

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionMetadataLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionMetadataLoader.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionMetadataLoader.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionMetadataLoader.java Sun May  6 20:27:50 2007
@@ -27,10 +27,11 @@
 public interface ContributionMetadataLoader {
     /**
      * Create the model object for Contribution Service metadata information
+     * @param contribution the contribution to load
      * @param reader    the XML stream reader positioned on the applicable START_ELEMENT
      * @return
      * @throws XMLStreamException
      * @throws ContributionMetadataReadException
      */
-    Contribution load(XMLStreamReader reader) throws XMLStreamException, ContributionMetadataLoaderException;
+    void load(Contribution contribution, XMLStreamReader reader) throws XMLStreamException, ContributionMetadataLoaderException;
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionService.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionService.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/service/ContributionService.java Sun May  6 20:27:50 2007
@@ -25,6 +25,7 @@
 
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.contribution.Contribution;
+import org.apache.tuscany.contribution.resolver.ModelResolver;
 
 
 /**
@@ -41,13 +42,15 @@
      * 
      * @param contributionURI The URI that is used as the contribution unique ID. 
      * @param sourceURL the location of the resource containing the artifact
+     * @param modelResolver the model resolver to use to resolve models in the
+     *             scope of this contribution
      * @param storeInRepository flag that identifies if you want to copy the
      *            contribution to the repository
      * @return the contribution model representing the contribution 
      * @throws DeploymentException if there was a problem with the contribution
      * @throws IOException if there was a problem reading the resource
      */
-    Contribution contribute(String contributionURI, URL sourceURL, boolean storeInRepository) throws ContributionException,
+    Contribution contribute(String contributionURI, URL sourceURL, ModelResolver modelResolver, boolean storeInRepository) throws ContributionException,
         IOException;
 
     /**
@@ -57,6 +60,8 @@
      * @param sourceURL the location of the resource containing the artifact. 
      *            This is used to identify what name should be used when storing
      *            the contribution on the repository 
+     * @param modelResolver the model resolver to use to resolve models in the
+     *             scope of this contribution
      * @param contributionContent a stream containing the resource being
      *            contributed; the stream will not be closed but the read
      *            position after the call is undefined
@@ -64,7 +69,7 @@
      * @throws DeploymentException if there was a problem with the contribution
      * @throws IOException if there was a problem reading the stream
      */
-    Contribution contribute(String contributionURI, URL sourceURL, InputStream contributionContent)
+    Contribution contribute(String contributionURI, URL sourceURL, InputStream contributionContent, ModelResolver modelResolver)
         throws ContributionException, IOException;
 
     /**
@@ -84,7 +89,7 @@
      * matches the "name" attribute of the composite, with a ".composite"
      * suffix.
      */
-    void addDeploymentComposite(String contribution, Composite composite) throws ContributionException;
+    void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException;
 
     /**
      * Remove a contribution from the SCA domain

Modified: incubator/tuscany/java/sca/modules/contribution/src/test/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/test/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolverTestCase.java?view=diff&rev=535720&r1=535719&r2=535720
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/test/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/test/java/org/apache/tuscany/contribution/resolver/DefaultArtifactResolverTestCase.java Sun May  6 20:27:50 2007
@@ -28,10 +28,10 @@
  */
 public class DefaultArtifactResolverTestCase extends TestCase {
     
-    private ArtifactResolver resolver;
+    private ModelResolver resolver;
     
     protected void setUp() throws Exception {
-        resolver = new DefaultArtifactResolver(getClass().getClassLoader());
+        resolver = new DefaultModelResolver(getClass().getClassLoader());
     }
     
     protected void tearDown() throws Exception {
@@ -40,27 +40,27 @@
     
     public void testResolved() {
         Model a = new Model("a");
-        resolver.add(a);
+        resolver.addModel(a);
         Model x = new Model("a");
-        x = resolver.resolve(Model.class, x);
+        x = resolver.resolveModel(Model.class, x);
         assertTrue(x == a);
     }
     
     public void testUnresolved() {
         Model x = new Model("a");
-        Model y = resolver.resolve(Model.class, x);
+        Model y = resolver.resolveModel(Model.class, x);
         assertTrue(x == y);
     }
     
     public void testResolveClass() {
         ClassReference ref = new ClassReference(getClass().getName());
-        ClassReference clazz = resolver.resolve(ClassReference.class, ref);
+        ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
         assertTrue(clazz.getJavaClass() == getClass());
     }
     
     public void testUnresolvedClass() {
         ClassReference ref = new ClassReference("NonExistentClass");
-        ClassReference clazz = resolver.resolve(ClassReference.class, ref);
+        ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
         assertTrue(clazz.isUnresolved());
         assertTrue(clazz.getJavaClass() == null);
     }



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