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