Author: antelder
Date: Sat May 13 02:26:52 2006
New Revision: 406055

URL: http://svn.apache.org/viewcvs?rev=406055&view=rev
Log:
Fixes for TUSCANY-333 and TUSCANY-307

Added:
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
Removed:
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/databinding/AxiomHelper.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/databinding/DataBinding.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/databinding/SDODataBinding.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/ClassLoaderHelper.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java
Modified:
    incubator/tuscany/java/sca/bindings/binding.axis2/pom.xml
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilder.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/config/WSEntryPointContextFactory.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/externalservice/Axis2OperationInvoker.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilderTestCase.java
    
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOXMLHelper.java
    
incubator/tuscany/java/sca/databinding/sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOXMLHelperTestCase.java

Modified: incubator/tuscany/java/sca/bindings/binding.axis2/pom.xml
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/pom.xml?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/pom.xml (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/pom.xml Sat May 13 
02:26:52 2006
@@ -37,6 +37,13 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.tuscany.databinding</groupId>
+            <artifactId>tuscany-databinding-sdo</artifactId> <!-- Reqd for E4X 
-->
+            <version>${pom.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.tuscany.sca.containers</groupId>
             <artifactId>tuscany-container-java</artifactId>
             <version>${pom.version}</version>

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilder.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilder.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilder.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilder.java
 Sat May 13 02:26:52 2006
@@ -35,10 +35,9 @@
 import org.apache.axis2.description.AxisService;
 import org.apache.tuscany.binding.axis2.assembly.WebServiceBinding;
 import org.apache.tuscany.binding.axis2.config.WSExternalServiceContextFactory;
-import org.apache.tuscany.binding.axis2.databinding.DataBinding;
-import org.apache.tuscany.binding.axis2.databinding.SDODataBinding;
 import org.apache.tuscany.binding.axis2.externalservice.Axis2OperationInvoker;
 import org.apache.tuscany.binding.axis2.externalservice.Axis2ServiceInvoker;
+import org.apache.tuscany.binding.axis2.util.SDODataBinding;
 import org.apache.tuscany.binding.axis2.util.TuscanyAxisConfigurator;
 import org.apache.tuscany.binding.axis2.util.WebServiceOperationMetaData;
 import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
@@ -72,8 +71,9 @@
         ServiceClient serviceClient = 
createServiceClient(externalService.getName(), wsdlDefinition, wsPortMetaData);
 
         TypeHelper typeHelper = wsBinding.getTypeHelper();
+        ClassLoader cl = wsBinding.getResourceLoader().getClassLoader();
         Class serviceInterface = 
externalService.getConfiguredService().getPort().getServiceContract().getInterface();
-        Map<String, Axis2OperationInvoker> invokers = 
createOperationInvokers(serviceInterface, typeHelper, wsPortMetaData);
+        Map<String, Axis2OperationInvoker> invokers = 
createOperationInvokers(serviceInterface, typeHelper, cl, wsPortMetaData);
 
         Axis2ServiceInvoker axis2Client = new 
Axis2ServiceInvoker(serviceClient, invokers);
 
@@ -110,7 +110,7 @@
     /**
      * Create and configure an Axis2OperationInvoker for each operation in the 
externalService
      */
-    protected Map<String, Axis2OperationInvoker> createOperationInvokers(Class 
sc, TypeHelper typeHelper, WebServicePortMetaData wsPortMetaData) {
+    protected Map<String, Axis2OperationInvoker> createOperationInvokers(Class 
sc, TypeHelper typeHelper, ClassLoader cl, WebServicePortMetaData 
wsPortMetaData) {
         SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
         String portTypeNS = wsPortMetaData.getPortTypeName().getNamespaceURI();
         Map<String, Axis2OperationInvoker> invokers = new HashMap<String, 
Axis2OperationInvoker>();
@@ -121,7 +121,7 @@
             WebServiceOperationMetaData operationMetaData = 
wsPortMetaData.getOperationMetaData(methodName);
             boolean isWrapped = operationMetaData.isDocLitWrapped();
             List<?> sig = operationMetaData.getOperationSignature();
-            DataBinding dataBinding = new SDODataBinding(typeHelper, 
sig.size() > 0 ? (QName) sig.get(0) : null, isWrapped);
+            SDODataBinding dataBinding = new SDODataBinding(cl, typeHelper, 
sig.size() > 0 ? (QName) sig.get(0) : null, isWrapped);
 
             Options options = new Options();
             options.setTo(new EndpointReference(wsPortMetaData.getEndpoint()));

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/config/WSEntryPointContextFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/config/WSEntryPointContextFactory.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/config/WSEntryPointContextFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/config/WSEntryPointContextFactory.java
 Sat May 13 02:26:52 2006
@@ -40,10 +40,9 @@
 import org.apache.axis2.description.WSDL2AxisServiceBuilder;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.tuscany.binding.axis2.assembly.WebServiceBinding;
-import org.apache.tuscany.binding.axis2.databinding.DataBinding;
-import org.apache.tuscany.binding.axis2.databinding.SDODataBinding;
 import 
org.apache.tuscany.binding.axis2.entrypoint.WebServiceEntryPointInOutSyncMessageReceiver;
 import org.apache.tuscany.binding.axis2.entrypoint.WebServiceEntryPointServlet;
+import org.apache.tuscany.binding.axis2.util.SDODataBinding;
 import org.apache.tuscany.binding.axis2.util.WebServiceOperationMetaData;
 import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
 import org.apache.tuscany.core.builder.BuilderConfigException;
@@ -230,6 +229,7 @@
         axisService.setServiceDescription("Tuscany configured AxisService for 
EntryPoint: '" + entryPointName + '\'');
 
         TypeHelper typeHelper = wsBinding.getTypeHelper();
+        ClassLoader cl = wsBinding.getResourceLoader().getClassLoader();
 
         Class<?> serviceInterface = entryPointContext.getServiceInterface();
 
@@ -244,9 +244,9 @@
             QName responseTypeQN = omd.getOutputPart(0).getElementName();
 
             Method operationMethod = getMethod(serviceInterface, 
operationName);
-            DataBinding dataBinding = new SDODataBinding(typeHelper, 
responseTypeQN, omd.isDocLitWrapped());
+            SDODataBinding dataBinding = new SDODataBinding(cl, typeHelper, 
responseTypeQN, omd.isDocLitWrapped());
             WebServiceEntryPointInOutSyncMessageReceiver msgrec = new 
WebServiceEntryPointInOutSyncMessageReceiver(entryPointProxy, operationMethod,
-                    dataBinding);
+                    dataBinding, cl);
 
             AxisOperation axisOp = axisService.getOperation(operationQN);
             axisOp.setMessageExchangePattern(WSDLConstants.MEP_URI_IN_OUT);

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java
 Sat May 13 02:26:52 2006
@@ -24,8 +24,7 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
-import org.apache.tuscany.binding.axis2.databinding.DataBinding;
-import org.apache.tuscany.binding.axis2.util.ClassLoaderHelper;
+import org.apache.tuscany.binding.axis2.util.SDODataBinding;
 import org.apache.tuscany.core.wire.InvocationRuntimeException;
 
 public class WebServiceEntryPointInOutSyncMessageReceiver extends 
AbstractInOutSyncMessageReceiver {
@@ -34,12 +33,15 @@
 
     protected Method operationMethod;
 
-    protected DataBinding dataBinding;
+    protected SDODataBinding dataBinding;
+    
+    protected ClassLoader classLoader;
 
-    public WebServiceEntryPointInOutSyncMessageReceiver(Object 
entryPointProxy, Method operationMethod, DataBinding dataBinding) {
+    public WebServiceEntryPointInOutSyncMessageReceiver(Object 
entryPointProxy, Method operationMethod, SDODataBinding dataBinding, 
ClassLoader classLoader) {
         this.entryPointProxy = entryPointProxy;
         this.operationMethod = operationMethod;
         this.dataBinding = dataBinding;
+        this.classLoader = classLoader;
     }
 
     @Override
@@ -50,14 +52,17 @@
             Object[] request = dataBinding.fromOMElement(requestOM);
             
             Object response;
-            ClassLoader oldCL = ClassLoaderHelper.setApplicationClassLoader();
+            ClassLoader tccl = Thread.currentThread().getContextClassLoader();
             try {
-                
+                if (tccl != classLoader) {
+                    Thread.currentThread().setContextClassLoader(classLoader);
+                }
+
                 response = operationMethod.invoke(entryPointProxy, request);
 
             } finally {
-                if (oldCL != null) {
-                    Thread.currentThread().setContextClassLoader(oldCL);
+                if (tccl != classLoader) {
+                    Thread.currentThread().setContextClassLoader(tccl);
                 }
             }
 

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java
 Sat May 13 02:26:52 2006
@@ -26,7 +26,6 @@
 
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.transport.http.AxisServlet;
-import org.apache.tuscany.binding.axis2.util.ClassLoaderHelper;
 
 /**
  * @version $Rev: 383148 $ $Date: 2006-03-04 08:07:17 -0800 (Sat, 04 Mar 2006) 
$
@@ -42,9 +41,13 @@
     }
 
     public void init(final ServletConfig config) throws ServletException {
-        ClassLoaderHelper.initApplicationClassLoader();
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        ClassLoader scl = this.getClass().getClassLoader();
         try {
-            ClassLoaderHelper.setSystemClassLoader();
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(scl);
+            }
+
             try {
 
                 super.init(config);
@@ -54,36 +57,57 @@
             } catch (Exception e) {
                 throw new ServletException(e);
             }
+
         } finally {
-            ClassLoaderHelper.setApplicationClassLoader();
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
         }
     }
 
     @Override
     protected void doGet(final HttpServletRequest arg0, final 
HttpServletResponse arg1) throws ServletException, IOException {
-        ClassLoaderHelper.initApplicationClassLoader();
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        ClassLoader scl = this.getClass().getClassLoader();
         try {
-            ClassLoaderHelper.setSystemClassLoader();
-            super.doGet(arg0, arg1);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new ServletException(e);
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(scl);
+            }
+
+            try {
+                super.doGet(arg0, arg1);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new ServletException(e);
+            }
+
         } finally {
-            ClassLoaderHelper.setApplicationClassLoader();
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
         }
     }
 
     @Override
     protected void doPost(final HttpServletRequest arg0, final 
HttpServletResponse arg1) throws ServletException, IOException {
-        ClassLoaderHelper.initApplicationClassLoader();
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        ClassLoader scl = this.getClass().getClassLoader();
         try {
-            ClassLoaderHelper.setSystemClassLoader();
-            super.doPost(arg0, arg1);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new ServletException(e);
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(scl);
+            }
+
+            try {
+                super.doPost(arg0, arg1);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new ServletException(e);
+            }
+
         } finally {
-            ClassLoaderHelper.setApplicationClassLoader();
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
         }
     }
 }

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/externalservice/Axis2OperationInvoker.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/externalservice/Axis2OperationInvoker.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/externalservice/Axis2OperationInvoker.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/externalservice/Axis2OperationInvoker.java
 Sat May 13 02:26:52 2006
@@ -25,8 +25,7 @@
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.tuscany.binding.axis2.databinding.DataBinding;
-import org.apache.tuscany.binding.axis2.util.ClassLoaderHelper;
+import org.apache.tuscany.binding.axis2.util.SDODataBinding;
 
 /**
  * Axis2OperationInvoker uses an Axis2 OperationClient to invoke a remote web 
service
@@ -37,11 +36,11 @@
 
     public Options options;
 
-    public DataBinding dataBinding;
+    public SDODataBinding dataBinding;
 
     private SOAPFactory soapFactory;
 
-    public Axis2OperationInvoker(QName wsdlOperationName, Options options, 
DataBinding dataBinding, SOAPFactory soapFactory) {
+    public Axis2OperationInvoker(QName wsdlOperationName, Options options, 
SDODataBinding dataBinding, SOAPFactory soapFactory) {
         this.wsdlOperationName = wsdlOperationName;
         this.options = options;
         this.dataBinding = dataBinding;
@@ -72,14 +71,18 @@
 
         operationClient.addMessageContext(requestMC);
 
-        ClassLoader oldCL = ClassLoaderHelper.setSystemClassLoader();
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        ClassLoader scl = this.getClass().getClassLoader();
         try {
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(scl);
+            }
 
             operationClient.execute(true);
 
         } finally {
-            if (oldCL != null) {
-                Thread.currentThread().setContextClassLoader(oldCL);
+            if (tccl != scl) {
+                Thread.currentThread().setContextClassLoader(tccl);
             }
         }
 

Added: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java?rev=406055&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
 (added)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
 Sat May 13 02:26:52 2006
@@ -0,0 +1,104 @@
+/**
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as 
applicable.
+ *
+ *  Licensed 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.binding.axis2.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.tuscany.core.wire.InvocationRuntimeException;
+import org.apache.tuscany.databinding.sdo.SDOXMLHelper;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.osoa.sca.ServiceRuntimeException;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+
+/**
+ * DataBinding for converting between AXIOM OMElement and Java Objects
+ */
+public class SDODataBinding {
+
+    private ClassLoader classLoader;
+
+    private TypeHelper typeHelper;
+
+    private QName elementQName;
+
+    private boolean isWrapped;
+
+    public SDODataBinding(ClassLoader classLoader, TypeHelper typeHelper, 
QName elementQName, boolean isWrapped) {
+        this.classLoader = classLoader;
+        this.typeHelper = typeHelper;
+        this.elementQName = elementQName;
+        this.isWrapped = isWrapped;
+    }
+
+    public Object[] fromOMElement(OMElement omElement) {
+        try {
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+            omElement.serialize(baos);
+
+            baos.flush();
+            baos.close();
+
+            return SDOXMLHelper.toObjects(classLoader,typeHelper, 
baos.toByteArray(), isWrapped);
+
+        } catch (IOException e) {
+            throw new InvocationRuntimeException(e);
+        } catch (XMLStreamException e) {
+            throw new InvocationRuntimeException(e);
+        }
+    }
+
+    public OMElement toOMElement(Object[] os) {
+        try {
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+            DataObject dataObject = SDOXMLHelper.toDataObject(classLoader, 
typeHelper, os, elementQName, isWrapped);
+            XMLHelper xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+            xmlHelper.save(dataObject, elementQName.getNamespaceURI(), 
elementQName.getLocalPart(), baos);
+            baos.close();
+
+            XMLStreamReader xsr = 
XMLInputFactory.newInstance().createXMLStreamReader(new 
ByteArrayInputStream(baos.toByteArray()));
+            OMXMLParserWrapper builder = 
OMXMLBuilderFactory.createStAXOMBuilder(OMAbstractFactory.getOMFactory(), xsr);
+            OMElement omElement = builder.getDocumentElement();
+
+            return omElement;
+
+        } catch (IOException e) {
+            throw new ServiceRuntimeException(e);
+        } catch (XMLStreamException e) {
+            throw new ServiceRuntimeException(e);
+        } catch (FactoryConfigurationError e) {
+            throw new ServiceRuntimeException(e);
+        }
+    }
+}

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilderTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilderTestCase.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilderTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/builder/ExternalWebServiceBuilderTestCase.java
 Sat May 13 02:26:52 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.binding.axis2.externalservice.Axis2ServiceInvoker;
 import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
 import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
 import org.apache.tuscany.core.extension.ExternalServiceContextFactory;
 import org.apache.tuscany.model.assembly.AssemblyContext;
 import org.apache.tuscany.model.assembly.AssemblyInitializationException;
@@ -65,7 +66,7 @@
         Port port = definition.getService(SERVICE_NAME).getPort(PORTNAME);
         WebServicePortMetaData wspmd = new WebServicePortMetaData(definition, 
port, null, false);
 
-        Map<String, Axis2OperationInvoker> invokers = 
builder.createOperationInvokers(Foo.class, null, wspmd);
+        Map<String, Axis2OperationInvoker> invokers = 
builder.createOperationInvokers(Foo.class, null, 
getClass().getClassLoader(),wspmd);
         assertNotNull(invokers);
         assertEquals(1, invokers.size());
 
@@ -335,8 +336,7 @@
             }
 
             public ResourceLoader getResourceLoader() {
-
-                return null;
+                return new 
ResourceLoaderImpl(Thread.currentThread().getContextClassLoader());
             }
 
             public void setResourceLoader(ResourceLoader resourceLoader) {

Modified: 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java
 Sat May 13 02:26:52 2006
@@ -23,7 +23,6 @@
 import junit.framework.TestCase;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.binding.axis2.databinding.SDODataBinding;
 import org.apache.tuscany.sdo.util.DataObjectUtil;
 import org.apache.tuscany.sdo.util.SDOUtil;
 
@@ -111,10 +110,10 @@
             url = getClass().getResource("CreditScoreDocLit.wsdl");
             xsdHelper.define(url.openStream(), null);
 
-            this.greetingDB = new SDODataBinding(typeHelper, GREETING_QN, 
true);
-            this.docLitWrappedDB = new SDODataBinding(typeHelper, 
DOCLITWRAPPED_QN, true);
+            this.greetingDB = new 
SDODataBinding(getClass().getClassLoader(),typeHelper, GREETING_QN, true);
+            this.docLitWrappedDB = new 
SDODataBinding(getClass().getClassLoader(),typeHelper, DOCLITWRAPPED_QN, true);
 
-            this.docLitDB = new SDODataBinding(typeHelper, DOCLIT_QN, false);
+            this.docLitDB = new 
SDODataBinding(getClass().getClassLoader(),typeHelper, DOCLIT_QN, false);
 
         } finally {
             Thread.currentThread().setContextClassLoader(cl);

Modified: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOXMLHelper.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOXMLHelper.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOXMLHelper.java
 (original)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOXMLHelper.java
 Sat May 13 02:26:52 2006
@@ -55,6 +55,7 @@
      * @param isWrapped
      * 
      * @return the array of deserialized Java objects
+     * @deprecated TUSCANY-333 use the method that takes a ClassLoader
      */
     public static Object[] toObjects(TypeHelper typeHelper, byte[] xmlBytes, 
boolean isWrapped) {
         DataObject dataObject = toDataObject(typeHelper, xmlBytes);
@@ -93,6 +94,7 @@
      * @param typeNS
      * @param typeName
      * @return a byte array containing the XML
+     * @deprecated TUSCANY-333 use the method that takes a ClassLoader
      */
     public static byte[] toXMLBytes(TypeHelper typeHelper, Object[] os, QName 
elementQName, boolean isWrapped) {
         DataObject dataObject = toDataObject(typeHelper, os, elementQName, 
isWrapped);
@@ -106,6 +108,7 @@
      * @param typeNS
      * @param typeName
      * @return a byte array containing the XML bytes
+     * @deprecated TUSCANY-333 use the method that takes a ClassLoader
      */
     public static byte[] toXMLbytes(TypeHelper typeHelper, DataObject 
dataObject, QName elementQName) {
         try {
@@ -127,6 +130,7 @@
      * 
      * @param xmlBytes
      * @return a DataObject
+     * @deprecated TUSCANY-333 use the method that takes a ClassLoader
      */
     public static DataObject toDataObject(TypeHelper typeHelper, byte[] 
xmlBytes) {
         try {
@@ -148,6 +152,7 @@
      * @param typeName
      * @param os
      * @return the DataObject
+     * @deprecated TUSCANY-333 use the method that takes a ClassLoader
      */
     public static DataObject toDataObject(TypeHelper typeHelper, Object[] os, 
QName elementQName, boolean isWrapped) {
         XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
@@ -174,5 +179,86 @@
             }
         }
     }
+    
+// ---    
 
+    public static DataObject toDataObject(ClassLoader classLoader, TypeHelper 
typeHelper, Object[] os, QName elementQName, boolean isWrapped) {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
+
+            return toDataObject(typeHelper, os, elementQName, isWrapped);
+
+        } finally {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
+        }
+    }
+
+    public static DataObject toDataObject(ClassLoader classLoader, TypeHelper 
typeHelper, byte[] xmlBytes) {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
+
+            return toDataObject(typeHelper, xmlBytes);
+
+        } finally {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
+        }
+    }
+    
+    public static byte[] toXMLbytes(ClassLoader classLoader, TypeHelper 
typeHelper, DataObject dataObject, QName elementQName) {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
+
+            return toXMLbytes(typeHelper, dataObject, elementQName);
+
+        } finally {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
+        }
+    }
+    
+    public static byte[] toXMLBytes(ClassLoader classLoader, TypeHelper 
typeHelper, Object[] os, QName elementQName, boolean isWrapped) {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
+
+            return toXMLBytes(typeHelper, os, elementQName, isWrapped);
+
+        } finally {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
+        }
+    }
+
+    public static Object[] toObjects(ClassLoader classLoader, TypeHelper 
typeHelper, byte[] xmlBytes, boolean isWrapped) {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
+
+            return toObjects(typeHelper, xmlBytes, isWrapped);
+
+        } finally {
+            if (tccl != classLoader) {
+                Thread.currentThread().setContextClassLoader(tccl);
+            }
+        }
+    }
 }

Modified: 
incubator/tuscany/java/sca/databinding/sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOXMLHelperTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOXMLHelperTestCase.java?rev=406055&r1=406054&r2=406055&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOXMLHelperTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOXMLHelperTestCase.java
 Sat May 13 02:26:52 2006
@@ -27,6 +27,8 @@
     private DataObject greetingDOB;
 
     private byte[] greetingXML;
+    
+    private ClassLoader appCL;
 
     public static final QName DOCLIT_QN = new 
QName("http://www.example.org/creditscore/doclit/";, "getCreditScoreRequest");
 
@@ -35,13 +37,13 @@
     private DataObject nonWrappedDOB;
 
     public void testXMLBytes1() {
-        byte[] xmlBytes = SDOXMLHelper.toXMLbytes(typeHelper, greetingDOB, 
GREETING_QN);
+        byte[] xmlBytes = SDOXMLHelper.toXMLbytes(appCL, typeHelper, 
greetingDOB, GREETING_QN);
         assertNotNull(xmlBytes);
         assertTrue(new 
String(xmlBytes).contains("<helloworldaxis:in0>petra</helloworldaxis:in0>"));
     }
 
     public void testXMLBytes2() {
-        byte[] xmlBytes = SDOXMLHelper.toXMLBytes(typeHelper, new Object[] { 
GREETING_NAME }, GREETING_QN, true);
+        byte[] xmlBytes = SDOXMLHelper.toXMLBytes(appCL, typeHelper, new 
Object[] { GREETING_NAME }, GREETING_QN, true);
         assertNotNull(xmlBytes);
         assertTrue(new String(xmlBytes).contains(GREETING_XML));
     }
@@ -54,13 +56,13 @@
     // }
 
     public void testToDataObject1() {
-        DataObject dataObject = SDOXMLHelper.toDataObject(typeHelper, 
greetingXML);
+        DataObject dataObject = SDOXMLHelper.toDataObject(appCL, typeHelper, 
greetingXML);
         assertNotNull(dataObject);
         assertEquals(GREETING_NAME, dataObject.getString(0));
     }
 
     public void testToDataObject2() {
-        DataObject dataObject = SDOXMLHelper.toDataObject(typeHelper, new 
Object[] { GREETING_NAME }, GREETING_QN, true);
+        DataObject dataObject = SDOXMLHelper.toDataObject(appCL, typeHelper, 
new Object[] { GREETING_NAME }, GREETING_QN, true);
         assertNotNull(dataObject);
         assertEquals(GREETING_NAME, dataObject.getString(0));
     }
@@ -75,7 +77,7 @@
     // }
 
     public void testToObjects1() {
-        Object[] os = SDOXMLHelper.toObjects(typeHelper, greetingXML, true);
+        Object[] os = SDOXMLHelper.toObjects(appCL, typeHelper, greetingXML, 
true);
         assertNotNull(os);
         assertEquals(1, os.length);
         assertEquals(GREETING_NAME, os[0]);
@@ -99,15 +101,16 @@
         DataObjectUtil.initRuntime();
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         try {
-            
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+            appCL = getClass().getClassLoader();
+            Thread.currentThread().setContextClassLoader(appCL);
             typeHelper = SDOUtil.createTypeHelper();
             XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
             URL url = getClass().getResource("helloworld.wsdl");
             xsdHelper.define(url.openStream(), null);
             url = getClass().getResource("CreditScoreDocLit.wsdl");
             xsdHelper.define(url.openStream(), null);
-            greetingDOB = SDOXMLHelper.toDataObject(typeHelper, new Object[] { 
GREETING_NAME }, GREETING_QN, true);
-            greetingXML = SDOXMLHelper.toXMLBytes(typeHelper, new Object[] { 
GREETING_NAME }, GREETING_QN, true);
+            greetingDOB = SDOXMLHelper.toDataObject(appCL, typeHelper, new 
Object[] { GREETING_NAME }, GREETING_QN, true);
+            greetingXML = SDOXMLHelper.toXMLBytes(appCL, typeHelper, new 
Object[] { GREETING_NAME }, GREETING_QN, true);
 
             DataFactory dataFactory = SDOUtil.createDataFactory(typeHelper);
             nonWrappedDOB = 
dataFactory.create("http://www.example.org/creditscore/doclit/";, "Customer");


Reply via email to