Author: jboynes
Date: Tue Apr 25 16:48:55 2006
New Revision: 397023

URL: http://svn.apache.org/viewcvs?rev=397023&view=rev
Log:
add support for importing SDO's from WSDL

Modified:
    incubator/tuscany/java/samples/JavaScript/sample7/pom.xml
    
incubator/tuscany/java/samples/JavaScript/sample7/src/main/resources/sca.module
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
    
incubator/tuscany/java/sca/tomcat/src/test/resources/app1/WEB-INF/classes/sca.module
    
incubator/tuscany/java/sca/tomcat/src/test/resources/app2/WEB-INF/classes/sca.module

Modified: incubator/tuscany/java/samples/JavaScript/sample7/pom.xml
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/samples/JavaScript/sample7/pom.xml?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- incubator/tuscany/java/samples/JavaScript/sample7/pom.xml (original)
+++ incubator/tuscany/java/samples/JavaScript/sample7/pom.xml Tue Apr 25 
16:48:55 2006
@@ -43,6 +43,12 @@
             <version>${pom.version}</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany.databinding</groupId>
+            <artifactId>tuscany-databinding-sdo</artifactId>
+            <version>${pom.version}</version>
+            <scope>compile</scope>
+        </dependency>
 
         <dependency>
             <groupId>rhino</groupId>

Modified: 
incubator/tuscany/java/samples/JavaScript/sample7/src/main/resources/sca.module
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/samples/JavaScript/sample7/src/main/resources/sca.module?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- 
incubator/tuscany/java/samples/JavaScript/sample7/src/main/resources/sca.module 
(original)
+++ 
incubator/tuscany/java/samples/JavaScript/sample7/src/main/resources/sca.module 
Tue Apr 25 16:48:55 2006
@@ -20,12 +20,11 @@
 
         name="JavaScriptSample7">
 
+    <import.wsdl location="wsdl/helloworld.wsdl" 
namespace="http://helloworld.samples.tuscany.apache.org"/>
+    <import.sdo wsdlLocation="wsdl/helloworld.wsdl"/>
+
     <component name="HelloWorldComponent">
         <js:implementation.js style="e4x" 
scriptFile="sample/HelloWorldImpl.js"/>
     </component>
-
-    <import.wsdl
-               location="wsdl/helloworld.wsdl"
-               namespace="http://helloworld.samples.tuscany.apache.org"/>
 
 </module>

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java
 Tue Apr 25 16:48:55 2006
@@ -17,7 +17,6 @@
 package org.apache.tuscany.core.loader.assembly;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.URL;
 import javax.wsdl.Definition;
 import javax.wsdl.WSDLException;
@@ -25,21 +24,17 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import commonj.sdo.helper.XSDHelper;
-import org.osoa.sca.annotations.Scope;
-
 import org.apache.tuscany.common.resource.ResourceLoader;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.core.config.MissingResourceException;
 import org.apache.tuscany.core.config.SidefileLoadException;
+import org.apache.tuscany.core.loader.LoaderContext;
 import org.apache.tuscany.core.loader.StAXUtil;
 import org.apache.tuscany.core.loader.WSDLDefinitionRegistry;
-import org.apache.tuscany.core.loader.LoaderContext;
 import static 
org.apache.tuscany.core.loader.assembly.AssemblyConstants.IMPORT_WSDL;
 import org.apache.tuscany.core.system.annotation.Autowire;
-import org.apache.tuscany.model.assembly.AssemblyContext;
 import org.apache.tuscany.model.assembly.ImportWSDL;
-import org.apache.tuscany.sdo.util.SDOUtil;
+import org.osoa.sca.annotations.Scope;
 
 /**
  * Loader that handles &lt;import.wsdl&gt; elements.
@@ -86,21 +81,6 @@
             sfe.setResourceURI(location);
             throw sfe;
         } catch (WSDLException e) {
-            SidefileLoadException sfe = new 
SidefileLoadException(e.getMessage());
-            sfe.setResourceURI(location);
-            throw sfe;
-        }
-
-        try {
-            InputStream xsdInputStream = wsdlURL.openStream();
-            try {
-                AssemblyContext context = registry.getContext();
-                XSDHelper xsdHelper = 
SDOUtil.createXSDHelper(context.getTypeHelper());
-                xsdHelper.define(xsdInputStream, null);
-            } finally {
-                xsdInputStream.close();
-            }
-        } catch (IOException e) {
             SidefileLoadException sfe = new 
SidefileLoadException(e.getMessage());
             sfe.setResourceURI(location);
             throw sfe;

Modified: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
 (original)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
 Tue Apr 25 16:48:55 2006
@@ -16,16 +16,22 @@
  */
 package org.apache.tuscany.databinding.sdo;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import commonj.sdo.helper.XSDHelper;
 import org.apache.tuscany.common.resource.ResourceLoader;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.config.SidefileLoadException;
 import org.apache.tuscany.core.loader.LoaderContext;
 import org.apache.tuscany.core.loader.StAXUtil;
 import org.apache.tuscany.core.loader.assembly.AbstractLoader;
 import org.apache.tuscany.core.loader.assembly.AssemblyConstants;
+import org.apache.tuscany.model.assembly.AssemblyContext;
 import org.apache.tuscany.model.assembly.AssemblyObject;
 import org.apache.tuscany.sdo.util.SDOUtil;
 import org.osoa.sca.annotations.Scope;
@@ -45,25 +51,53 @@
 
     public AssemblyObject load(XMLStreamReader reader, LoaderContext 
loaderContext) throws XMLStreamException, ConfigurationLoadException {
         assert IMPORT_SDO.equals(reader.getName());
+        importFactory(reader, loaderContext);
+        importWSDL(reader, loaderContext);
+        StAXUtil.skipToEndElement(reader);
+        return null;
+    }
+
+    private void importFactory(XMLStreamReader reader, LoaderContext 
loaderContext) throws ConfigurationLoadException {
         String factoryName = reader.getAttributeValue(null, "factory");
         if (factoryName != null) {
-            Class<?> factoryClass = 
getFactoryClass(loaderContext.getResourceLoader(), factoryName);
-            SDOUtil.registerStaticTypes(factoryClass);
+            ResourceLoader resourceLoader = loaderContext.getResourceLoader();
+            ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
+            try {
+                // set TCCL as SDO needs it
+                
Thread.currentThread().setContextClassLoader(resourceLoader.getClassLoader());
+                Class<?> factoryClass = resourceLoader.loadClass(factoryName);
+                SDOUtil.registerStaticTypes(factoryClass);
+            } catch (ClassNotFoundException e) {
+                throw new ConfigurationLoadException(e.getMessage(), e);
+            } finally {
+                Thread.currentThread().setContextClassLoader(oldCL);
+            }
         }
-        StAXUtil.skipToEndElement(reader);
-        return null;
     }
 
-    protected Class<?> getFactoryClass(ResourceLoader resourceLoader, String 
typeName) throws ConfigurationLoadException {
-        ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
-        try {
-            // set TCCL as SDO needs it
-            
Thread.currentThread().setContextClassLoader(resourceLoader.getClassLoader());
-            return resourceLoader.loadClass(typeName);
-        } catch (ClassNotFoundException e) {
-            throw new ConfigurationLoadException(e.getMessage(), e);
-        } finally {
-            Thread.currentThread().setContextClassLoader(oldCL);
+    private void importWSDL(XMLStreamReader reader, LoaderContext 
loaderContext) throws ConfigurationLoadException {
+        String wsdLLocation = reader.getAttributeValue(null, "wsdlLocation");
+        if (wsdLLocation != null) {
+            ResourceLoader resourceLoader = loaderContext.getResourceLoader();
+            URL wsdlURL = resourceLoader.getResource(wsdLLocation);
+            ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
+            try {
+//                
Thread.currentThread().setContextClassLoader(resourceLoader.getClassLoader());
+                InputStream xsdInputStream = wsdlURL.openStream();
+                try {
+                    AssemblyContext context = registry.getContext();
+                    XSDHelper xsdHelper = 
SDOUtil.createXSDHelper(context.getTypeHelper());
+                    xsdHelper.define(xsdInputStream, null);
+                } finally {
+                    xsdInputStream.close();
+                }
+            } catch (IOException e) {
+                SidefileLoadException sfe = new 
SidefileLoadException(e.getMessage());
+                sfe.setResourceURI(wsdLLocation);
+                throw sfe;
+            } finally {
+                Thread.currentThread().setContextClassLoader(oldCL);
+            }
         }
     }
 }

Modified: 
incubator/tuscany/java/sca/tomcat/src/test/resources/app1/WEB-INF/classes/sca.module
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/test/resources/app1/WEB-INF/classes/sca.module?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tomcat/src/test/resources/app1/WEB-INF/classes/sca.module
 (original)
+++ 
incubator/tuscany/java/sca/tomcat/src/test/resources/app1/WEB-INF/classes/sca.module
 Tue Apr 25 16:48:55 2006
@@ -19,6 +19,7 @@
         name="testModule">
 
     <import.wsdl location="wsdl/helloworld.wsdl" 
namespace="http://helloworldaxis.samples.tuscany.apache.org"/>
+    <import.sdo wsdlLocation="wsdl/helloworld.wsdl"/>
 
     <entryPoint name="HelloWorldService">
         <interface.wsdl 
interface="http://helloworldaxis.samples.tuscany.apache.org#HelloWorldServiceImpl"/>

Modified: 
incubator/tuscany/java/sca/tomcat/src/test/resources/app2/WEB-INF/classes/sca.module
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/test/resources/app2/WEB-INF/classes/sca.module?rev=397023&r1=397022&r2=397023&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tomcat/src/test/resources/app2/WEB-INF/classes/sca.module
 (original)
+++ 
incubator/tuscany/java/sca/tomcat/src/test/resources/app2/WEB-INF/classes/sca.module
 Tue Apr 25 16:48:55 2006
@@ -19,6 +19,7 @@
         name="testModule">
 
     <import.wsdl location="wsdl/helloworld.wsdl" 
namespace="http://helloworldaxis.samples.tuscany.apache.org"/>
+    <import.sdo wsdlLocation="wsdl/helloworld.wsdl"/>
 
     <entryPoint name="HelloWorldService">
         <interface.wsdl 
interface="http://helloworldaxis.samples.tuscany.apache.org#HelloWorldServiceImpl"/>


Reply via email to