Author: rfeng
Date: Mon Nov  5 21:38:57 2007
New Revision: 592289

URL: http://svn.apache.org/viewvc?rev=592289&view=rev
Log:
Use the Resource/Class Reference resolver to resolve location and factory

Modified:
    
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
    
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java

Modified: 
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java?rev=592289&r1=592288&r2=592289&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
 Mon Nov  5 21:38:57 2007
@@ -25,7 +25,6 @@
 import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.net.URI;
 import java.net.URL;
 
 import javax.xml.namespace.QName;
@@ -35,7 +34,9 @@
 
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ResourceReference;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
 import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
@@ -62,7 +63,7 @@
 
     public ImportSDO read(XMLStreamReader reader) throws 
ContributionReadException, XMLStreamException {
         assert IMPORT_SDO.equals(reader.getName());
- 
+
         // FIXME: How do we associate the application HelperContext with the 
one
         // imported by the composite
         ImportSDO importSDO = new 
ImportSDO(SDOContextHelper.getDefaultHelperContext());
@@ -84,13 +85,18 @@
         return importSDO;
     }
 
-    private void importFactory(ImportSDO importSDO) throws 
ContributionResolveException {
+    private void importFactory(ImportSDO importSDO, ModelResolver resolver) 
throws ContributionResolveException {
         String factoryName = importSDO.getFactoryClassName();
         if (factoryName != null) {
-            //FIXME The classloader should be passed in
-            ClassLoader cl = Thread.currentThread().getContextClassLoader();
+            ClassReference reference = new ClassReference(factoryName);
+            ClassReference resolved = 
resolver.resolveModel(ClassReference.class, reference);
+            if (resolved == null || resolved.isUnresolved()) {
+                ContributionResolveException loaderException =
+                    new ContributionResolveException("Fail to resolve class: " 
+ factoryName);
+                throw loaderException;
+            }
             try {
-                Class<?> factoryClass = cl.loadClass(factoryName);
+                Class<?> factoryClass = resolved.getJavaClass();
                 register(factoryClass, importSDO.getHelperContext());
             } catch (Exception e) {
                 throw new ContributionResolveException(e);
@@ -105,26 +111,24 @@
         Method method = factory.getClass().getMethod("register", new Class[] 
{HelperContext.class});
         method.invoke(factory, new Object[] {helperContext});
 
-//        HelperContext defaultContext = HelperProvider.getDefaultContext();
-//        method.invoke(factory, new Object[] {defaultContext});
+        //        HelperContext defaultContext = 
HelperProvider.getDefaultContext();
+        //        method.invoke(factory, new Object[] {defaultContext});
     }
 
-    private void importWSDL(ImportSDO importSDO) throws 
ContributionResolveException {
+    private void importWSDL(ImportSDO importSDO, ModelResolver resolver) 
throws ContributionResolveException {
         String location = importSDO.getSchemaLocation();
         if (location != null) {
             try {
                 URL wsdlURL = null;
-                URI uri = URI.create(location);
-                if (uri.isAbsolute()) {
-                    wsdlURL = uri.toURL();
-                }
-                //FIXME The classloader should be passed in
-                wsdlURL = 
Thread.currentThread().getContextClassLoader().getResource(location);
-                if (null == wsdlURL) {
-                    ContributionResolveException loaderException = new 
ContributionResolveException(
-                                                                               
                     "WSDL location error");
+                ResourceReference reference = new ResourceReference(location);
+                ResourceReference resolved = 
resolver.resolveModel(ResourceReference.class, reference);
+                if (resolved == null || resolved.isUnresolved()) {
+                    ContributionResolveException loaderException =
+                        new ContributionResolveException("Fail to resolve 
location: " + location);
                     throw loaderException;
                 }
+
+                wsdlURL = resolved.getResource();
                 InputStream xsdInputStream = wsdlURL.openStream();
                 try {
                     XSDHelper xsdHelper = 
importSDO.getHelperContext().getXSDHelper();
@@ -152,8 +156,8 @@
     }
 
     public void resolve(ImportSDO importSDO, ModelResolver resolver) throws 
ContributionResolveException {
-        importFactory(importSDO);
-        importWSDL(importSDO);
+        importFactory(importSDO, resolver);
+        importWSDL(importSDO, resolver);
         if (!importSDO.isUnresolved()) {
             resolver.addModel(importSDO);
         }

Modified: 
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java?rev=592289&r1=592288&r2=592289&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
 Mon Nov  5 21:38:57 2007
@@ -26,6 +26,9 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+
 import com.example.ipo.sdo.SdoFactory;
 
 /**
@@ -57,7 +60,9 @@
         assertFalse(inited);
         ImportSDO importSDO = loader.read(reader);
         assertNotNull(importSDO);
-        loader.resolve(importSDO, new TestModelResolver());
+        ModelResolver resolver = new TestModelResolver();
+        resolver.addModel(new ClassReference(MockFactory.class));
+        loader.resolve(importSDO, resolver);
         assertTrue(inited);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to