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