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

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

Author: lresende
Date: Fri Jul 20 14:03:54 2007
New Revision: 558143

URL: http://svn.apache.org/viewvc?view=rev&rev=558143
Log:
Updates to ModelReseolver extensibility - Modifying so we can still have the modelResolver escoped by contribution.

Added:
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
Modified:
    incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ModelResolverExtensionPoint.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionService.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedRuntime.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntime.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java Fri Jul 20 14:03:54 2007
@@ -27,8 +27,6 @@
 
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
 
@@ -50,18 +48,16 @@
         // Contribute the SCA contribution
         ContributionService contributionService = domain.getContributionService();
         
-        ModelResolver compositeContributionResolver = new ModelResolverImpl(cl);
         File compositeContribLocation = new File("../contrib-composite/target/classes");
         URL compositeContribURL = compositeContribLocation.toURL();
-        Contribution compositeContribution = contributionService.contribute("http://import-export/contrib-composite", compositeContribURL, compositeContributionResolver, false);
+        Contribution compositeContribution = contributionService.contribute("http://import-export/contrib-composite", compositeContribURL, false);
         for (Composite deployable : compositeContribution.getDeployables() ) {
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
         
-        ModelResolver helloWorldContributionResolver = new ModelResolverImpl(cl);
         File helloWorldContribLocation = new File("./target/classes/");
         URL helloWorldContribURL = helloWorldContribLocation.toURL();
-        Contribution helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, helloWorldContributionResolver, false);
+        Contribution helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
         for (Composite deployable : helloWorldContribution.getDeployables() ) {
             domain.getDomainCompositeHelper().addComposite(deployable);
         }

Modified: incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java Fri Jul 20 14:03:54 2007
@@ -55,7 +55,9 @@
 import org.apache.tuscany.sca.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;
+import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
@@ -122,6 +124,10 @@
         packageProcessors.addPackageProcessor(new JarContributionProcessor());
         packageProcessors.addPackageProcessor(new FolderContributionProcessor());
         
+        //Create Contribution Model Resolver extension point
+        ModelResolverExtensionPoint modelResolverExtensionPoint = new DefaultModelResolverExtensionPoint();
+        
+        
         //Create contribution postProcessor extension point
         DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
         ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
@@ -133,9 +139,9 @@
 
         // Create an artifact resolver and contribution service
         this.contributionService = new ContributionServiceImpl(repository, packageProcessor, documentProcessor, 
-                                                               postProcessor, assemblyFactory,
-                                                               new ContributionFactoryImpl(), XMLInputFactory
-                                                                   .newInstance());
+                                                               postProcessor, modelResolverExtensionPoint, assemblyFactory,
+                                                               new ContributionFactoryImpl(),
+                                                               XMLInputFactory.newInstance());
     }
 
     public void testContributeJAR() throws Exception {

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Fri Jul 20 14:03:54 2007
@@ -43,7 +43,9 @@
 import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
 import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionException;
 import org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
@@ -75,6 +77,12 @@
     private URLArtifactProcessor artifactProcessor;
     
     /**
+     * Registry of available model resolvers
+     */
+    
+    private ModelResolverExtensionPoint modelResolverExtensionPoint;
+    
+    /**
      * Contribution post processor
      */
     private ContributionPostProcessor postProcessor;
@@ -109,6 +117,7 @@
                                    PackageProcessor packageProcessor,
                                    URLArtifactProcessor artifactProcessor,
                                    ContributionPostProcessor postProcessor,
+                                   ModelResolverExtensionPoint modelResolverExtensionPoint,
                                    AssemblyFactory assemblyFactory,
                                    ContributionFactory contributionFactory,
                                    XMLInputFactory xmlFactory) {
@@ -117,12 +126,28 @@
         this.packageProcessor = packageProcessor;
         this.artifactProcessor = artifactProcessor;
         this.postProcessor = postProcessor;
+        this.modelResolverExtensionPoint = modelResolverExtensionPoint;
         this.xmlFactory = xmlFactory;
         this.assemblyFactory = assemblyFactory;
         this.contributionFactory = contributionFactory;
         this.contributionLoader = new ContributionMetadataLoaderImpl(assemblyFactory, contributionFactory);
     }
 
+    public Contribution contribute(String contributionURI, URL sourceURL, boolean storeInRepository)
+            throws ContributionException, IOException {
+        if (contributionURI == null) {
+            throw new IllegalArgumentException("URI for the contribution is null");
+        }
+        if (sourceURL == null) {
+            throw new IllegalArgumentException("Source URL for the contribution is null");
+        }
+
+        //FIXME get the right class loader
+        ModelResolver extensibleModelResolver = new ExtensibleModelResolver(this.modelResolverExtensionPoint, getClass().getClassLoader());
+        
+        return addContribution(contributionURI, sourceURL, null, extensibleModelResolver, storeInRepository);
+    }
+    
     public Contribution contribute(String contributionURI, URL sourceURL, ModelResolver modelResolver, boolean storeInRepository) throws ContributionException,
         IOException {
         if (contributionURI == null) {
@@ -135,6 +160,15 @@
         return addContribution(contributionURI, sourceURL, null, modelResolver, storeInRepository);
     }
 
+    public Contribution contribute(String contributionURI, URL sourceURL, InputStream input)
+            throws ContributionException, IOException {
+
+        //FIXME get the right class loader
+        ModelResolver extensibleModelResolver = new ExtensibleModelResolver(this.modelResolverExtensionPoint, getClass().getClassLoader());
+
+        return addContribution(contributionURI, sourceURL, input, extensibleModelResolver, true);
+    }
+    
     public Contribution contribute(String contributionURI, URL sourceURL, InputStream input, ModelResolver modelResolver) 
         throws ContributionException, IOException {
         
@@ -228,9 +262,9 @@
                                  boolean storeInRepository) throws IOException, ContributionException {
         
         if (contributionStream == null && sourceURL == null) {
-            throw new IllegalArgumentException("The content of the contribution is null");
+            throw new IllegalArgumentException("The content of the contribution is null.");
         }
-
+                
         // store the contribution in the contribution repository
         URL locationURL = sourceURL;
         if (contributionRepository != null && storeInRepository) {

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java Fri Jul 20 14:03:54 2007
@@ -24,7 +24,6 @@
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
 import org.apache.tuscany.sca.contribution.impl.ContributionFactoryImpl;
-import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 
 /**
  * Test DefaultArtifactResolver.
@@ -33,20 +32,16 @@
  */
 public class ExtensibleArtifactResolverTestCase extends TestCase {
     private ModelResolverExtensionPoint resolverExtensionPoint;
-    private ModelResolver defaultResolver;
-    
     private ExtensibleModelResolver resolver;
     
     private ContributionFactory factory;
     
     protected void setUp() throws Exception {
         
-        defaultResolver = new ModelResolverImpl(getClass().getClassLoader());
-        
         resolverExtensionPoint = new DefaultModelResolverExtensionPoint();
-        resolverExtensionPoint.addResolver(Model.class, defaultResolver);
+        resolverExtensionPoint.addResolver(Model.class, DefaultModelResolver.class);
         
-        resolver = new ExtensibleModelResolver(resolverExtensionPoint, defaultResolver);
+        resolver = new ExtensibleModelResolver(resolverExtensionPoint, getClass().getClassLoader());
 
         factory = new ContributionFactoryImpl();
     }
@@ -54,7 +49,6 @@
     protected void tearDown() throws Exception {
         resolverExtensionPoint.removeResolver(Model.class);
         resolverExtensionPoint = null;
-        defaultResolver = null;
         resolver = null;
         factory = null;
     }

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java?view=auto&rev=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java Fri Jul 20 14:03:54 2007
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.contribution.resolver;
+
+import java.lang.ref.WeakReference;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+
+/**
+ * A default implementation of an artifact resolver, based on a map.
+ *
+ * @version $Rev: 548560 $ $Date: 2007-06-18 19:25:19 -0700 (Mon, 18 Jun 2007) $
+ */
+public class DefaultModelResolver implements ModelResolver {
+    private static final long serialVersionUID = -7826976465762296634L;
+    
+    private Map<Object, Object> map = new HashMap<Object, Object>();
+    
+    protected 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);
+    }
+    
+    public Collection<Object> getModels() {
+        return map.values();
+    }
+    
+}

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java Fri Jul 20 14:03:54 2007
@@ -18,24 +18,29 @@
  */
 package org.apache.tuscany.sca.contribution.resolver;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 /**
- * The default implementation of an model resolver registry.
+ * The default implementation of an model resolver Class registry.
  * 
  * @version $Rev: 539693 $ $Date: 2007-05-18 23:24:07 -0700 (Fri, 18 May 2007) $
  */
 public class DefaultModelResolverExtensionPoint implements ModelResolverExtensionPoint {
-    protected final Map<Class<?>, ModelResolver> resolversByModelType = new HashMap<Class<?>, ModelResolver>();
-
+    protected final Map<Class<?>, Class<? extends ModelResolver>> resolversByModelType = new HashMap<Class<?>, Class<? extends ModelResolver>>();
+    
     /**
      * Constructs a new model resolver registry.
      */
     public DefaultModelResolverExtensionPoint() {
     }
 
-    public void addResolver(Class<?> modelType, ModelResolver resolver) {
+    public void addResolver(Class<?> modelType, Class <? extends ModelResolver> resolver) {
+        
         resolversByModelType.put(modelType, resolver);
     }
     
@@ -43,14 +48,29 @@
         resolversByModelType.remove(modelType);
     }
 
-    public ModelResolver getResolver(Class<?> modelType) {
+    public Class <? extends ModelResolver> getResolver(Class<?> modelType) {
         Class<?>[] classes = modelType.getInterfaces();
         for (Class<?> c : classes) {
-            ModelResolver resolver = resolversByModelType.get(c);
+            Class <? extends ModelResolver> resolver = resolversByModelType.get(c);
             if (resolver != null) {
                 return resolver;
             }
         }
+        
         return resolversByModelType.get(modelType);
     }
+
+    @SuppressWarnings("unchecked")
+    public Collection<Class<?>> getResolverTypes() {
+        Collection<Class<?>> resolverTypes = new ArrayList<Class<?>>();
+        
+        Iterator typeIterator = resolversByModelType.keySet().iterator(); 
+        while (typeIterator.hasNext()) {
+            resolverTypes.add( (Class) typeIterator.next() );
+        }
+        
+        return resolverTypes;
+    }
+    
+    
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java Fri Jul 20 14:03:54 2007
@@ -19,39 +19,67 @@
 
 package org.apache.tuscany.sca.contribution.resolver;
 
-public class ExtensibleModelResolver implements ModelResolver {
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public class ExtensibleModelResolver extends DefaultModelResolver implements ModelResolver {
     private final ModelResolverExtensionPoint resolverRegistry;
-    private final ModelResolver defaultModelResolver;
+    private final Map<Class<?>, ModelResolver> resolverInstances = new HashMap<Class<?>, ModelResolver>();
+    
 
-    public ExtensibleModelResolver(ModelResolverExtensionPoint resolverRegistry, ModelResolver defaultModelResolver) {
+    public ExtensibleModelResolver(ModelResolverExtensionPoint resolverRegistry, ClassLoader cl) {
+        super(cl);
         this.resolverRegistry = resolverRegistry; 
-        this.defaultModelResolver = defaultModelResolver;
+        initializeModelResolverInstances();
+    }
+    
+    private void initializeModelResolverInstances() {
+        for (Class<?> resolverType : resolverRegistry.getResolverTypes()) {
+            Class<? extends ModelResolver> resolverInstanceType = resolverRegistry.getResolver(resolverType);
+            
+            ModelResolver resolverInstance = null;
+            try {
+                Constructor constructor = resolverInstanceType.getConstructor(ClassLoader.class);
+                if (constructor != null) {
+                    resolverInstance = (ModelResolver) constructor.newInstance(this.classLoader);
+                } else {
+                    resolverInstance = (ModelResolver) resolverInstanceType.newInstance();
+                }
+            } catch(Exception ex) {
+                //ignore, will use default resolver
+            } 
+            
+            resolverInstances.put(resolverType,  resolverInstance);
+            
+        }
     }
     
     public void addModel(Object resolved) {
-        ModelResolver resolver = this.resolverRegistry.getResolver(resolved.getClass());
-        if (resolver == null) {
-            resolver = defaultModelResolver;
+        ModelResolver resolver = resolverInstances.get(resolved.getClass());
+        if (resolver != null) {
+            resolver.addModel(resolved);
+        } else {
+            super.addModel(resolved);
         }
-        
-        resolver.addModel(resolved);
     }
 
     public Object removeModel(Object resolved) {
-        ModelResolver resolver = this.resolverRegistry.getResolver(resolved.getClass());
-        if (resolver == null) {
-            resolver = defaultModelResolver;
-        } 
-        
-        return resolver.removeModel(resolved);
+        ModelResolver resolver = resolverInstances.get(resolved.getClass());
+        if (resolver != null) {
+            return resolver.removeModel(resolved);
+        } else {
+            return super.removeModel(resolved);
+        }
     }
     
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
-        ModelResolver resolver = this.resolverRegistry.getResolver(modelClass);
-        if (resolver == null) {
-            resolver = defaultModelResolver;
-        } 
-        
-        return resolver.resolveModel(modelClass, unresolved);
+        ModelResolver resolver = resolverInstances.get(modelClass);
+        if (resolver != null) {
+            return resolver.resolveModel(modelClass, unresolved);
+        } else {
+            return super.resolveModel(modelClass, unresolved);
+        }
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ModelResolverExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ModelResolverExtensionPoint.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ModelResolverExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ModelResolverExtensionPoint.java Fri Jul 20 14:03:54 2007
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.sca.contribution.resolver;
 
+import java.util.Collection;
+
 /**
  * An extension point for Model Resolvers
  * 
@@ -27,25 +29,32 @@
 public interface ModelResolverExtensionPoint {
 
     /**
-     * Register a Model Resolver using the Artifact Type as the key
+     * Register a Model Resolver Class using the Artifact Type as the key
      * 
      * @param modelType The model artifact type
-     * @param resolver The model resolver
+     * @param resolver The model resolver Class
      */
-    void addResolver(Class<?> modelType, ModelResolver resolver);
+    void addResolver(Class<?> modelType, Class <? extends ModelResolver> resolver);
     
     /**
-     * Remove the Model Resolver for a specific Artifact Type
+     * Remove the Model Resolver Class for a specific Artifact Type
      * 
      * @param modelType The model artifact type
      */
     void removeResolver(Class<?> modelType);
     
     /**
-     * Retrieve a Model Resolver for a specific Artifact Type
+     * Retrieve a Model Resolver Class for a specific Artifact Type
      * 
      * @param modelType The model artifact type
-     * @return The model resolver
+     * @return The model resolver Class
+     */
+    Class <? extends ModelResolver> getResolver(Class<?> modelType);
+    
+    /**
+     * Retrieve a list registered Model Resolvers Classes
+     * 
+     * @return The list of registered Model Resolvers Class
      */
-    ModelResolver getResolver(Class<?> modelType);
+    Collection<Class<?>> getResolverTypes();
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionService.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionService.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionService.java Fri Jul 20 14:03:54 2007
@@ -48,9 +48,47 @@
      * @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,
+        IOException;
+    
+    /**
+     * Contribute an artifact to the SCA Domain. The type of the contribution is
+     * determined by the Content-Type of the resource or, if that is undefined,
+     * by some implementation-specific means (such as mapping an extension in
+     * the URL's path).
+     * 
+     * @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, ModelResolver modelResolver, boolean storeInRepository) throws ContributionException,
         IOException;
 
+    /**
+     * Contribute an artifact to the SCA Domain.
+     * 
+     * @param contributionURI The URI that is used as the contribution unique ID.
+     * @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
+     * @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 stream
+     */
+    Contribution contribute(String contributionURI, URL sourceURL, InputStream contributionContent)
+        throws ContributionException, IOException;
+    
     /**
      * Contribute an artifact to the SCA Domain.
      * 

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedRuntime.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedRuntime.java Fri Jul 20 14:03:54 2007
@@ -116,7 +116,8 @@
         factories.addFactory(contributionFactory);        
         
         // Create a contribution service
-        contributionService = createContributionService(registry,
+        contributionService = createContributionService(classLoader, 
+                                                        registry,
                                                         contributionFactory,
                                                         assemblyFactory,
                                                         policyFactory,
@@ -164,13 +165,15 @@
                                                       providerFactories);
     }
     
-    public  ContributionService createContributionService(ExtensionPointRegistry registry,
+    public  ContributionService createContributionService(ClassLoader classLoader,
+                                                          ExtensionPointRegistry registry,
                                                           ContributionFactory contributionFactory,
                                                           AssemblyFactory assemblyFactory,
                                                           PolicyFactory policyFactory,
                                                           InterfaceContractMapper mapper)
       throws ActivationException {        
-        return ReallySmallRuntimeBuilder.createContributionService(registry,
+        return ReallySmallRuntimeBuilder.createContributionService(classLoader,
+                                                                   registry,
                                                                    contributionFactory,
                                                                    assemblyFactory,
                                                                    policyFactory,

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntime.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntime.java Fri Jul 20 14:03:54 2007
@@ -97,13 +97,15 @@
      *  that the .node document processor is added instead of .composite
      */
     @Override
-    public ContributionService createContributionService(ExtensionPointRegistry registry,
+    public ContributionService createContributionService(ClassLoader classLoader,
+                                                         ExtensionPointRegistry registry,
                                                          ContributionFactory contributionFactory,
                                                          AssemblyFactory assemblyFactory,
                                                          PolicyFactory policyFactory,
                                                          InterfaceContractMapper mapper)
       throws ActivationException {        
-        return NodeRuntimeBuilder.createContributionService(registry,
+        return NodeRuntimeBuilder.createContributionService(classLoader, 
+                                                            registry,
                                                             contributionFactory,
                                                             assemblyFactory,
                                                             policyFactory,

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java Fri Jul 20 14:03:54 2007
@@ -44,6 +44,8 @@
 import org.apache.tuscany.sca.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;
+import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
@@ -70,7 +72,8 @@
      * 
      * @throws ActivationException
      */
-    public static ContributionService createContributionService(ExtensionPointRegistry registry,
+    public static ContributionService createContributionService(ClassLoader classLoader,
+                                                          ExtensionPointRegistry registry,
                                                           ContributionFactory contributionFactory,
                                                           AssemblyFactory assemblyFactory,
                                                           PolicyFactory policyFactory,
@@ -108,13 +111,18 @@
         // Create contribution package processor extension point
         PackageTypeDescriberImpl describer = new PackageTypeDescriberImpl();
         PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint();
-        PackageProcessor packageProcessor = new ExtensiblePackageProcessor(packageProcessors, describer);
         registry.addExtensionPoint(packageProcessors);
 
         // Register base package processors
         packageProcessors.addPackageProcessor(new JarContributionProcessor());
         packageProcessors.addPackageProcessor(new FolderContributionProcessor());
 
+        PackageProcessor packageProcessor = new ExtensiblePackageProcessor(packageProcessors, describer);
+        
+        //Create Contribution Model Resolver extension point
+        ModelResolverExtensionPoint modelResolverExtensionPoint = new DefaultModelResolverExtensionPoint();
+        registry.addExtensionPoint(modelResolverExtensionPoint);
+        
         //Create contribution postProcessor extension point
         DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
         ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
@@ -133,6 +141,7 @@
                                                                               packageProcessor,
                                                                               documentProcessor, 
                                                                               postProcessor,
+                                                                              modelResolverExtensionPoint,
                                                                               assemblyFactory,
                                                                               contributionFactory, 
                                                                               xmlFactory);

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java Fri Jul 20 14:03:54 2007
@@ -116,7 +116,8 @@
         factories.addFactory(contributionFactory);
         
         // Create a contribution service
-        contributionService = ReallySmallRuntimeBuilder.createContributionService(registry,
+        contributionService = ReallySmallRuntimeBuilder.createContributionService(classLoader,
+                                                                                  registry,
                                                                                   contributionFactory,
                                                                                   assemblyFactory,
                                                                                   policyFactory,

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=558143&r1=558142&r2=558143
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Fri Jul 20 14:03:54 2007
@@ -61,8 +61,9 @@
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.contribution.service.TypeDescriber;
@@ -156,7 +157,8 @@
      * 
      * @throws ActivationException
      */
-    public static ContributionService createContributionService(ExtensionPointRegistry registry,
+    public static ContributionService createContributionService(ClassLoader classLoader, 
+                                                                ExtensionPointRegistry registry,
                                                                 ContributionFactory contributionFactory,
                                                                 AssemblyFactory assemblyFactory,
                                                                 PolicyFactory policyFactory,
@@ -201,9 +203,8 @@
         PackageProcessor packageProcessor = new ExtensiblePackageProcessor(packageProcessors, describer);
 
         //Create Contribution Model Resolver extension point
-        ModelResolverExtensionPoint resolverExtensionPoint = new DefaultModelResolverExtensionPoint();
-        
-        registry.addExtensionPoint(resolverExtensionPoint);
+        ModelResolverExtensionPoint modelResolverExtensionPoint = new DefaultModelResolverExtensionPoint();
+        registry.addExtensionPoint(modelResolverExtensionPoint);
         
         //Create contribution postProcessor extension point
         DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
@@ -221,7 +222,7 @@
         ExtensibleURLArtifactProcessor documentProcessor = new ExtensibleURLArtifactProcessor(documentProcessors);
         ContributionService contributionService = new ContributionServiceImpl(repository, packageProcessor,
                                                                               documentProcessor, postProcessor, 
-                                                                              assemblyFactory,
+                                                                              modelResolverExtensionPoint, assemblyFactory,
                                                                               contributionFactory, xmlFactory);
         return contributionService;
     }



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