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/29 01:42:46 UTC
svn commit: r560645 - in /incubator/tuscany/java/sca/modules: ./
contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/
contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/
contribution-java/src/main/...
Author: lresende
Date: Sat Jul 28 16:42:44 2007
New Revision: 560645
URL: http://svn.apache.org/viewvc?view=rev&rev=560645
Log:
[work in progress]
Contribution import/export java support based on new extensibility of contribution import/export
- Adding Classreference model resolver
- Cleaning up classLoader
- Integrating with runtime
Added:
incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java
incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java
- copied, changed from r560438, incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaExportProcessor.java
incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java
- copied, changed from r560438, incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaImportProcessor.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java
Removed:
incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/
incubator/tuscany/java/sca/modules/contribution-java/src/main/resources/META-INF/
Modified:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.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-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportImpl.java
incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportMetadataProcessorTestCase.java
incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportMetadataProcessorTestCase.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
incubator/tuscany/java/sca/modules/core/pom.xml
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/ReallySmallRuntimeBuilder.java
incubator/tuscany/java/sca/modules/pom.xml
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java Sat Jul 28 16:42:44 2007
@@ -30,6 +30,8 @@
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
import org.apache.tuscany.sca.contribution.NamespaceExport;
import org.apache.tuscany.sca.contribution.NamespaceImport;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
@@ -54,11 +56,14 @@
private final AssemblyFactory assemblyFactory;
private final ContributionFactory contributionFactory;
+
+ private final StAXArtifactProcessor extensionProcessor;
- public ContributionMetadataProcessor(AssemblyFactory assemblyFactory, ContributionFactory contributionFactory) {
+ public ContributionMetadataProcessor(AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, StAXArtifactProcessor extensionProcessor) {
super();
this.assemblyFactory = assemblyFactory;
this.contributionFactory = contributionFactory;
+ this.extensionProcessor = extensionProcessor;
}
@@ -131,6 +136,16 @@
NamespaceExport namespaceExport = this.contributionFactory.createNamespaceExport();
namespaceExport.setNamespace(ns);
contribution.getExports().add(namespaceExport);
+ } else{
+ //process extension
+ Object extension = extensionProcessor.read(reader);
+ if (extension != null) {
+ if (extension instanceof Import) {
+ contribution.getImports().add((Import)extension);
+ }else if (extension instanceof Export) {
+ contribution.getExports().add((Export)extension);
+ }
+ }
}
break;
case XMLStreamConstants.END_ELEMENT:
Added: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java?view=auto&rev=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceArtifactResolverTestCase.java Sat Jul 28 16:42:44 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.sca.contribution.resolver;
+
+import junit.framework.TestCase;
+
+/**
+ * Test ClassReferenceArtifactResolver.
+ *
+ * @version $Rev: 560435 $ $Date: 2007-07-27 18:26:55 -0700 (Fri, 27 Jul 2007) $
+ */
+public class ClassReferenceArtifactResolverTestCase extends TestCase {
+ private ModelResolverExtensionPoint resolverExtensionPoint;
+ private ExtensibleModelResolver resolver;
+
+ protected void setUp() throws Exception {
+
+ resolverExtensionPoint = new DefaultModelResolverExtensionPoint();
+ resolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
+
+ resolver = new ExtensibleModelResolver(null, resolverExtensionPoint);
+ }
+
+ protected void tearDown() throws Exception {
+ resolverExtensionPoint.removeResolver(ClassReference.class);
+ resolverExtensionPoint = null;
+ resolver = null;
+ }
+
+
+ public void testResolveClass() {
+ ClassReference ref = new ClassReference(getClass().getName());
+ ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
+ assertTrue(clazz.getJavaClass() == getClass());
+ }
+
+ public void testUnresolvedClass() {
+ ClassReference ref = new ClassReference("NonExistentClass");
+ ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
+ assertTrue(clazz.isUnresolved());
+ assertTrue(clazz.getJavaClass() == null);
+ }
+}
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=560645&r1=560644&r2=560645
==============================================================================
--- 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 Sat Jul 28 16:42:44 2007
@@ -81,19 +81,6 @@
assertTrue(x == y);
}
- public void testResolveClass() {
- ClassReference ref = new ClassReference(getClass().getName());
- ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
- assertTrue(clazz.getJavaClass() == getClass());
- }
-
- public void testUnresolvedClass() {
- ClassReference ref = new ClassReference("NonExistentClass");
- ClassReference clazz = resolver.resolveModel(ClassReference.class, ref);
- assertTrue(clazz.isUnresolved());
- assertTrue(clazz.getJavaClass() == null);
- }
-
public void testResolvedArtifact() {
DeployedArtifact artifact = factory.createDeployedArtifact();
artifact.setURI("foo/bar");
Modified: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportImpl.java?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportImpl.java Sat Jul 28 16:42:44 2007
@@ -23,6 +23,7 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
public class JavaExportImpl implements JavaExport {
+ private ModelResolver modelResolver;
private String packageName;
public JavaExportImpl() {
@@ -38,13 +39,11 @@
}
public ModelResolver getModelResolver() {
- // TODO Auto-generated method stub
- return null;
+ return modelResolver;
}
public void setModelResolver(ModelResolver modelResolver) {
- // TODO Auto-generated method stub
-
+ this.modelResolver = modelResolver;
}
}
Copied: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java (from r560438, incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaExportProcessor.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java?view=diff&rev=560645&p1=incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaExportProcessor.java&r1=560438&p2=incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaExportProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java Sat Jul 28 16:42:44 2007
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.tuscany.sca.contribution.service.impl;
+package org.apache.tuscany.sca.contribution.java.impl;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
@@ -28,7 +28,6 @@
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.contribution.java.JavaExport;
-import org.apache.tuscany.sca.contribution.java.impl.JavaExportImpl;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
Modified: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportImpl.java Sat Jul 28 16:42:44 2007
@@ -23,9 +23,11 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
public class JavaImportImpl implements JavaImport {
+ private ModelResolver modelResolver;
private String packageName;
private String location;
+
public JavaImportImpl() {
super();
@@ -48,13 +50,11 @@
}
public ModelResolver getModelResolver() {
- // TODO Auto-generated method stub
- return null;
+ return this.modelResolver;
}
public void setModelResolver(ModelResolver modelResolver) {
- // TODO Auto-generated method stub
-
+ this.modelResolver = modelResolver;
}
}
Copied: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java (from r560438, incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaImportProcessor.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java?view=diff&rev=560645&p1=incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaImportProcessor.java&r1=560438&p2=incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/service/impl/JavaImportProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java Sat Jul 28 16:42:44 2007
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.tuscany.sca.contribution.service.impl;
+package org.apache.tuscany.sca.contribution.java.impl;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
@@ -28,7 +28,6 @@
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.contribution.java.JavaImport;
-import org.apache.tuscany.sca.contribution.java.impl.JavaImportImpl;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
Modified: incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportMetadataProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportMetadataProcessorTestCase.java?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportMetadataProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportMetadataProcessorTestCase.java Sat Jul 28 16:42:44 2007
@@ -10,7 +10,6 @@
import org.apache.tuscany.sca.contribution.java.JavaExport;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.impl.JavaExportProcessor;
/**
* @version $Rev$ $Date$
Modified: incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportMetadataProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportMetadataProcessorTestCase.java?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportMetadataProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/test/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportMetadataProcessorTestCase.java Sat Jul 28 16:42:44 2007
@@ -10,7 +10,6 @@
import org.apache.tuscany.sca.contribution.java.JavaImport;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.impl.JavaImportProcessor;
/**
* @version $Rev$ $Date$
Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java?view=auto&rev=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ClassReferenceModelResolver.java Sat Jul 28 16:42:44 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.sca.contribution.resolver;
+
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+
+/**
+ * A Model Resolver for WSDL models.
+ *
+ * @version $Rev: 557916 $ $Date: 2007-07-20 01:04:40 -0700 (Fri, 20 Jul 2007) $
+ */
+public class ClassReferenceModelResolver implements ModelResolver {
+ private Contribution contribution;
+ protected WeakReference<ClassLoader> classLoader;
+ private Map<String, ClassReference> map = new HashMap<String, ClassReference>();
+
+ public ClassReferenceModelResolver(Contribution contribution) {
+ this.contribution = contribution;
+ this.classLoader = new WeakReference<ClassLoader>(Thread.currentThread().getContextClassLoader());
+ }
+
+ public void addModel(Object resolved) {
+ ClassReference clazz = (ClassReference)resolved;
+ map.put(clazz.getClassName(), clazz);
+ }
+
+ public Object removeModel(Object resolved) {
+ return map.remove(((ClassReference)resolved).getClassName());
+ }
+
+ public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+ Object resolved = map.get(unresolved);
+
+ if (resolved != null ){
+ return (T)resolved;
+ }
+
+ //Load a class on demand
+ Class clazz;
+ try {
+ clazz = Class.forName(((ClassReference)unresolved).getClassName(), true, classLoader.get());
+ } catch (ClassNotFoundException e) {
+
+ // Return the unresolved object
+ return unresolved;
+ }
+
+ // Store a new ClassReference wrappering the loaded class
+ ClassReference classReference = new ClassReference(clazz);
+ map.put(getPackageName(classReference), classReference);
+
+ // Return the resolved ClassReference
+ return (T)classReference;
+ }
+
+ /***************
+ * Helper methods
+ ***************/
+
+ private String getPackageName(ClassReference clazz) {
+ int pos = clazz.getClassName().lastIndexOf(".");
+ return clazz.getClassName().substring(0, pos - 1 );
+ }
+}
Modified: 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=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java Sat Jul 28 16:42:44 2007
@@ -19,7 +19,6 @@
package org.apache.tuscany.sca.contribution.resolver;
-import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
@@ -35,46 +34,20 @@
private Map<Object, Object> map = new HashMap<Object, Object>();
- protected WeakReference<ClassLoader> classLoader;
protected Contribution contribution;
- public DefaultModelResolver(ClassLoader classLoader, Contribution contribution) {
- this.classLoader = new WeakReference<ClassLoader>(classLoader);
+ public DefaultModelResolver(Contribution contribution) {
this.contribution = contribution;
}
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;
- }
+ }
+ // Return the unresolved object
+ return unresolved;
}
public void addModel(Object resolved) {
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=560645&r1=560644&r2=560645
==============================================================================
--- 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 Sat Jul 28 16:42:44 2007
@@ -49,22 +49,50 @@
/**
* Returns the proper resolver instance based on the interfaces of the model
+ * If one is not available on the registry, instantiate on demand
* @param modelType
* @return
*/
private ModelResolver getModelResolverInstance(Class<?> modelType) {
Class<?>[] classes = modelType.getInterfaces();
- for (Class<?> c : classes) {
-
+ if(classes.length > 0) {
+ for (Class<?> c : classes) {
+
+ // Look up a model resolver instance for the model class
+ ModelResolver resolverInstance = resolverInstances.get(c);
+ if (resolverInstance != null) {
+ return resolverInstance;
+ }
+
+ // We don't have an instance, lookup a model resolver class
+ // and instantiate it
+ Class<? extends ModelResolver> resolverClass = resolvers.getResolver(c);
+ if (resolverClass != null) {
+ try {
+ Constructor<? extends ModelResolver> constructor = resolverClass.getConstructor(new Class[]{Contribution.class});
+ if (constructor != null) {
+
+ // Construct the model resolver instance and cache it
+ resolverInstance = constructor.newInstance(this.contribution);
+ resolverInstances.put(c, resolverInstance);
+ return resolverInstance;
+ }
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ }
+ } else {
+ //simple pojo that does not implements any interface
// Look up a model resolver instance for the model class
- ModelResolver resolverInstance = resolverInstances.get(c);
+ ModelResolver resolverInstance = resolverInstances.get(modelType);
if (resolverInstance != null) {
return resolverInstance;
}
// We don't have an instance, lookup a model resolver class
// and instantiate it
- Class<? extends ModelResolver> resolverClass = resolvers.getResolver(c);
+ Class<? extends ModelResolver> resolverClass = resolvers.getResolver(modelType);
if (resolverClass != null) {
try {
Constructor<? extends ModelResolver> constructor = resolverClass.getConstructor(new Class[]{Contribution.class});
@@ -72,7 +100,7 @@
// Construct the model resolver instance and cache it
resolverInstance = constructor.newInstance(this.contribution);
- resolverInstances.put(c, resolverInstance);
+ resolverInstances.put(modelType, resolverInstance);
return resolverInstance;
}
} catch (Exception e) {
@@ -80,6 +108,7 @@
}
}
}
+
return null;
}
@@ -101,57 +130,18 @@
}
}
- //FIXME Replace this by a simple map lookup when the
- // Java resolver is in place
- public <T> T tempResolveModel(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, Thread.currentThread().getContextClassLoader());
- } 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 <T> T resolveModel(Class<T> modelClass, T unresolved) {
ModelResolver resolver = getModelResolverInstance(unresolved.getClass());
if (resolver != null) {
return resolver.resolveModel(modelClass, unresolved);
} else {
- //FIXME Replace this by a simple map lookup when the
- // Java resolver is in place
- Object resolved = tempResolveModel(modelClass, unresolved);
+ Object resolved = map.get(unresolved);
if (resolved != null) {
// Return the resolved object
return modelClass.cast(resolved);
- } else {
- return unresolved;
}
}
+
+ return unresolved;
}
}
Modified: incubator/tuscany/java/sca/modules/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/pom.xml?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/core/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/core/pom.xml Sat Jul 28 16:42:44 2007
@@ -43,6 +43,12 @@
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-contribution-java</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-interface-java</artifactId>
<version>1.0-incubating-SNAPSHOT</version>
</dependency>
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=560645&r1=560644&r2=560645
==============================================================================
--- 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 Sat Jul 28 16:42:44 2007
@@ -35,6 +35,8 @@
import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeModelResolver;
import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.java.impl.JavaExportProcessor;
+import org.apache.tuscany.sca.contribution.java.impl.JavaImportProcessor;
import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
import org.apache.tuscany.sca.contribution.processor.DefaultContributionPostProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.DefaultPackageProcessorExtensionPoint;
@@ -48,6 +50,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.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ClassReferenceModelResolver;
import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionRepository;
@@ -97,7 +101,11 @@
staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper, staxProcessor));
staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
- staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory));
+ //Register STAX processors for Contribution Metadata
+ staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory,contributionFactory, staxProcessor));
+ staxProcessors.addArtifactProcessor(new JavaImportProcessor());
+ staxProcessors.addArtifactProcessor(new JavaExportProcessor());
+
// Create URL artifact processor extension point
// FIXME use the interface instead of the class
@@ -128,6 +136,7 @@
modelResolverExtensionPoint.addResolver(Composite.class, CompositeModelResolver.class);
modelResolverExtensionPoint.addResolver(ConstrainingType.class, ConstrainingTypeModelResolver.class);
+ modelResolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
//Create contribution postProcessor extension point
DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
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=560645&r1=560644&r2=560645
==============================================================================
--- 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 Sat Jul 28 16:42:44 2007
@@ -50,6 +50,8 @@
import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
import org.apache.tuscany.sca.assembly.xml.SCABindingProcessor;
import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.java.impl.JavaExportProcessor;
+import org.apache.tuscany.sca.contribution.java.impl.JavaImportProcessor;
import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
import org.apache.tuscany.sca.contribution.processor.DefaultContributionPostProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.DefaultPackageProcessorExtensionPoint;
@@ -65,6 +67,8 @@
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.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ClassReferenceModelResolver;
import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionRepository;
@@ -180,7 +184,11 @@
staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper, staxProcessor));
staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
- staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory,contributionFactory));
+ //Register STAX processors for Contribution Metadata
+ staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory,contributionFactory, staxProcessor));
+ staxProcessors.addArtifactProcessor(new JavaImportProcessor());
+ staxProcessors.addArtifactProcessor(new JavaExportProcessor());
+
// Create URL artifact processor extension point
URLArtifactProcessorExtensionPoint documentProcessors = new DefaultURLArtifactProcessorExtensionPoint();
@@ -209,6 +217,7 @@
modelResolverExtensionPoint.addResolver(Composite.class, CompositeModelResolver.class);
modelResolverExtensionPoint.addResolver(ConstrainingType.class, ConstrainingTypeModelResolver.class);
+ modelResolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
//Create contribution postProcessor extension point
DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
Modified: incubator/tuscany/java/sca/modules/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/pom.xml?view=diff&rev=560645&r1=560644&r2=560645
==============================================================================
--- incubator/tuscany/java/sca/modules/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/pom.xml Sat Jul 28 16:42:44 2007
@@ -53,6 +53,7 @@
<module>commonj-api</module>
<module>contribution</module>
<module>contribution-impl</module>
+ <module>contribution-java</module>
<module>core</module>
<module>core-databinding</module>
<module>core-spi</module>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org