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 <import.wsdl> 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"/>