You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/05/05 13:12:42 UTC

svn commit: r400047 - in /incubator/tuscany/java/sca/bindings/binding.axis2/src: main/java/org/apache/tuscany/binding/axis2/builder/ main/java/org/apache/tuscany/binding/axis2/handler/ main/java/org/apache/tuscany/binding/axis2/util/ test/java/org/apac...

Author: antelder
Date: Fri May  5 04:12:38 2006
New Revision: 400047

URL: http://svn.apache.org/viewcvs?rev=400047&view=rev
Log:
Fix for TUSCANY-243 and TUSCANY-61 from Raymond

Added:
    incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLit.wsdl
    incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLitWrapped.wsdl
Modified:
    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/handler/WebServiceEntryPointServlet.java
    incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java
    incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java
    incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
    incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java
    incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/SDODataBindingTestCase.java

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=400047&r1=400046&r2=400047&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 Fri May  5 04:12:38 2006
@@ -36,6 +36,7 @@
 import org.apache.tuscany.binding.axis2.config.WSExternalServiceContextFactory;
 import org.apache.tuscany.binding.axis2.handler.Axis2OperationInvoker;
 import org.apache.tuscany.binding.axis2.handler.Axis2ServiceInvoker;
+import org.apache.tuscany.binding.axis2.handler.WebServiceOperationMetaData;
 import org.apache.tuscany.binding.axis2.handler.WebServicePortMetaData;
 import org.apache.tuscany.binding.axis2.util.DataBinding;
 import org.apache.tuscany.binding.axis2.util.SDODataBinding;
@@ -50,8 +51,7 @@
 import commonj.sdo.helper.TypeHelper;
 
 /**
- * Creates a <code>ContextFactory</code> for an external service configured with the {@link
- * WebServiceBinding}
+ * Creates a <code>ContextFactory</code> for an external service configured with the {@link WebServiceBinding}
  */
 @Scope("MODULE")
 public class ExternalWebServiceBuilder extends ExternalServiceBuilderSupport<WebServiceBinding> {
@@ -116,17 +116,25 @@
 
         for (Method m : sc.getMethods()) {
             String methodName = m.getName();
-            String wsdlOperationName = wsPortMetaData.getWSDLOperationName(methodName);
-            QName wsdlOperationQName = new QName(portTypeNS, wsdlOperationName);
-            DataBinding dataBinding = new SDODataBinding(typeHelper, wsdlOperationQName);
+
+            WebServiceOperationMetaData operationMetaData = wsPortMetaData.getOperationMetaData(methodName);
+            boolean isWrapped = operationMetaData.isDocLitWrapped();
+            DataBinding dataBinding = new SDODataBinding(typeHelper, (QName) operationMetaData.getOperationSignature().get(0), isWrapped);
+
             Options options = new Options();
             options.setTo(new EndpointReference(wsPortMetaData.getEndpoint()));
+            options.setProperty(MessageContextConstants.CHUNKED, Boolean.FALSE);
+
+            String wsdlOperationName = operationMetaData.getBindingOperation().getOperation().getName();
+
             String soapAction = wsPortMetaData.getOperationMetaData(wsdlOperationName).getSOAPAction();
-            if (soapAction != null && soapAction.length() >1) {
+            if (soapAction != null && soapAction.length() > 1) {
                 options.setAction(soapAction);
             }
-            options.setProperty(MessageContextConstants.CHUNKED, Boolean.FALSE);
+
+            QName wsdlOperationQName = new QName(portTypeNS, wsdlOperationName);
             Axis2OperationInvoker invoker = new Axis2OperationInvoker(wsdlOperationQName, options, dataBinding, soapFactory);
+
             invokers.put(methodName, invoker);
         }
 

Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java?rev=400047&r1=400046&r2=400047&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java Fri May  5 04:12:38 2006
@@ -39,7 +39,7 @@
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.WSDL2AxisServiceBuilder;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.transport.http.AxisServlet;
 import org.apache.axis2.wsdl.WSDLConstants;
@@ -111,9 +111,12 @@
         serviceGroup.setServiceGroupName(wsdlPortInfo.getServiceName().getLocalPart());
         axisConfig.addServiceGroup(serviceGroup);
 
-        AxisService axisService = new AxisService(entryPointName);
+        WSDL2AxisServiceBuilder builder = new WSDL2AxisServiceBuilder(definition, wsdlPortInfo.getServiceName(), wsdlPortInfo.getPort().getName());
+        builder.setServerSide(true);
+        AxisService axisService = builder.populateService();
+        
+        axisService.setName(entryPointName);
         axisService.setParent(serviceGroup);
-//        axisService.setWSDLDefinition(definition);
         axisService.setServiceDescription("Tuscany configured service EntryPoint name '" + entryPointName + '\'');
 
         TypeHelper typeHelper = wsBinding.getTypeHelper();
@@ -131,14 +134,13 @@
             QName responseTypeQN = omd.getOutputPart(0).getElementName();
 
             Method operationMethod = getMethod(serviceInterface, operationName);
-            DataBinding dataBinding = new SDODataBinding(typeHelper, responseTypeQN);
+            DataBinding dataBinding = new SDODataBinding(typeHelper, responseTypeQN, omd.isDocLitWrapped());
             WebServiceEntryPointInOutSyncMessageReceiver msgrec = new WebServiceEntryPointInOutSyncMessageReceiver(entryPointProxy, operationMethod,
                     dataBinding);
 
-            AxisOperation axisOp = new InOutAxisOperation(operationQN);
+            AxisOperation axisOp = axisService.getOperation(operationQN);
             axisOp.setMessageExchangePattern(WSDLConstants.MEP_URI_IN_OUT);
             axisOp.setMessageReceiver(msgrec);
-            axisService.addOperation(axisOp);
         }
 
         axisConfig.addService(axisService);

Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java?rev=400047&r1=400046&r2=400047&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java Fri May  5 04:12:38 2006
@@ -353,11 +353,15 @@
     }
 
     public WebServiceOperationMetaData getOperationMetaData(String operationName) {
+        StringBuilder sb = new StringBuilder(operationName);
+        sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
+        String capatalizedOpName = sb.toString();
+        
         for (Iterator it = getAllOperationMetaData().iterator(); it.hasNext();) {
             WebServiceOperationMetaData descriptor = (WebServiceOperationMetaData) it.next();
             String opName = descriptor.getBindingOperation().getOperation().getName();
 
-            if (opName.equals(operationName)) {
+            if (opName.equals(operationName) || opName.equals(capatalizedOpName)) {
                 return descriptor;
             }
         }

Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java?rev=400047&r1=400046&r2=400047&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java Fri May  5 04:12:38 2006
@@ -32,15 +32,16 @@
 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.sdo.helper.DataFactoryImpl;
-import org.apache.tuscany.sdo.helper.XMLHelperImpl;
-import org.apache.tuscany.sdo.helper.XSDHelperImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
 import org.osoa.sca.ServiceRuntimeException;
 
 import commonj.sdo.DataObject;
 import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
 import commonj.sdo.helper.TypeHelper;
 import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
 import commonj.sdo.helper.XSDHelper;
 
 /**
@@ -59,26 +60,38 @@
      * 
      * @param om
      *            the OMElement
+     * @param isWrapped
+     * 
      * @return the array of deserialized Java objects
      */
-    public static Object[] toObjects(TypeHelper typeHelper, OMElement om) {
+    public static Object[] toObjects(TypeHelper typeHelper, OMElement om, boolean isWrapped) {
         DataObject dataObject = toDataObject(typeHelper, om);
-        return toObjects(dataObject);
+        return toObjects(dataObject, isWrapped);
     }
 
     /**
      * Convert a typed DataObject to Java objects
      * 
      * @param dataObject
+     * @param isWrapped
      * @return the array of Objects from the DataObject
      */
-    public static Object[] toObjects(DataObject dataObject) {
-        List ips = dataObject.getInstanceProperties();
-        Object[] os = new Object[ips.size()];
-        for (int i = 0; i < ips.size(); i++) {
-            os[i] = dataObject.get((Property) ips.get(i));
+    public static Object[] toObjects(DataObject dataObject, boolean isWrapped) {
+        if (isWrapped) {
+            List ips = dataObject.getInstanceProperties();
+            Object[] os = new Object[ips.size()];
+            for (int i = 0; i < ips.size(); i++) {
+                os[i] = dataObject.get((Property) ips.get(i));
+            }
+            return os;
+        } else {
+            Object object = dataObject;
+            Type type = dataObject.getType();
+            if (type.isSequenced()) {
+                object = dataObject.getSequence().getValue(0);
+            }
+            return new Object[] { object };
         }
-        return os;
     }
 
     /**
@@ -89,9 +102,9 @@
      * @param typeName
      * @return an AXIOM OMElement
      */
-    public static OMElement toOMElement(TypeHelper typeHelper, Object[] os, QName typeQN) {
-        DataObject dataObject = toDataObject(typeHelper, os, typeQN);
-        return toOMElement(typeHelper, dataObject, typeQN);
+    public static OMElement toOMElement(TypeHelper typeHelper, Object[] os, QName elementQName, boolean isWrapped) {
+        DataObject dataObject = toDataObject(typeHelper, os, elementQName, isWrapped);
+        return toOMElement(typeHelper, dataObject, elementQName);
     }
 
     /**
@@ -104,11 +117,12 @@
      * @throws XMLStreamException
      * @throws IOException
      */
-    public static OMElement toOMElement(TypeHelper typeHelper, DataObject dataObject, QName typeQN) {
+    public static OMElement toOMElement(TypeHelper typeHelper, DataObject dataObject, QName elementQName) {
         try {
 
-            ByteArrayOutputStream pos = new java.io.ByteArrayOutputStream();
-            new XMLHelperImpl(typeHelper).save(dataObject, typeQN.getNamespaceURI(), typeQN.getLocalPart(), pos);
+            ByteArrayOutputStream pos = new ByteArrayOutputStream();
+            XMLHelper xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+            xmlHelper.save(dataObject, elementQName.getNamespaceURI(), elementQName.getLocalPart(), pos);
             pos.close();
 
             XMLStreamReader parser;
@@ -142,7 +156,7 @@
     public static DataObject toDataObject(TypeHelper typeHelper, OMElement omElement) {
         try {
 
-            ByteArrayOutputStream pos = new java.io.ByteArrayOutputStream();
+            ByteArrayOutputStream pos = new ByteArrayOutputStream();
 
             ClassLoader ccl = Thread.currentThread().getContextClassLoader();
             try {
@@ -155,7 +169,8 @@
             pos.flush();
             pos.close();
 
-            XMLDocument document = new XMLHelperImpl(typeHelper).load(new ByteArrayInputStream(pos.toByteArray()));
+            XMLHelper xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+            XMLDocument document = xmlHelper.load(new ByteArrayInputStream(pos.toByteArray()));
 
             return document.getRootObject();
 
@@ -174,18 +189,30 @@
      * @param os
      * @return the DataObject
      */
-    public static DataObject toDataObject(TypeHelper typeHelper, Object[] os, QName typeQN) {
-        XSDHelper xsdHelper = new XSDHelperImpl(typeHelper);
-        Property property = xsdHelper.getGlobalProperty(typeQN.getNamespaceURI(), typeQN.getLocalPart(), true);
-        if(null == property){
-            throw new InvocationRuntimeException("Type '" + typeQN.toString() + "' not found in registered SDO types." );
+    public static DataObject toDataObject(TypeHelper typeHelper, Object[] os, QName elementQName, boolean isWrapped) {
+        XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+
+        Property property = xsdHelper.getGlobalProperty(elementQName.getNamespaceURI(), elementQName.getLocalPart(), true);
+        if (null == property) {
+            throw new InvocationRuntimeException("Type '" + elementQName.toString() + "' not found in registered SDO types.");
         }
-        DataObject dataObject = new DataFactoryImpl(typeHelper).create(property.getType());
-        List ips = dataObject.getInstanceProperties();
-        for (int i = 0; i < ips.size(); i++) {
-            dataObject.set(i, os[i]);
+        if (isWrapped) {
+            DataFactory dataFactory = SDOUtil.createDataFactory(typeHelper);
+            DataObject dataObject = dataFactory.create(property.getType());
+            List ips = dataObject.getInstanceProperties();
+            for (int i = 0; i < ips.size(); i++) {
+                dataObject.set(i, os[i]);
+            }
+            return dataObject;
+        } else {
+            Object value = os[0];
+            Type type = property.getType();
+            if (!type.isDataType()) {
+                return (DataObject) value;
+            } else {
+                return SDOUtil.createDataTypeWrapper(type, value);
+            }
         }
-        return dataObject;
     }
 
 }

Modified: 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=400047&r1=400046&r2=400047&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java Fri May  5 04:12:38 2006
@@ -27,15 +27,18 @@
 
     private QName typeQN;
 
-    public SDODataBinding(TypeHelper typeHelper, QName typeQN) {
+    private boolean isWrapped;
+
+    public SDODataBinding(TypeHelper typeHelper, QName typeQN, boolean isWrapped) {
         this.typeHelper = typeHelper;
         this.typeQN = typeQN;
+        this.isWrapped = isWrapped;
     }
 
     public Object[] fromOMElement(OMElement omElement) {
         ClassLoader oldCL = ClassLoaderHelper.setApplicationClassLoader();
         try {
-            Object[] args = AxiomHelper.toObjects(typeHelper, omElement);
+            Object[] args = AxiomHelper.toObjects(typeHelper, omElement, isWrapped);
             return args;
         } finally {
             if (oldCL != null) {
@@ -47,7 +50,7 @@
     public OMElement toOMElement(Object[] args) {
         ClassLoader oldCL = ClassLoaderHelper.setApplicationClassLoader();
         try {
-            OMElement omElement = AxiomHelper.toOMElement(typeHelper, args, typeQN);
+            OMElement omElement = AxiomHelper.toOMElement(typeHelper, args, typeQN, isWrapped);
             return omElement;
         } finally {
             if (oldCL != null) {

Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java?rev=400047&r1=400046&r2=400047&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/util/AxiomHelperTestCase.java Fri May  5 04:12:38 2006
@@ -7,27 +7,28 @@
 import junit.framework.TestCase;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sdo.helper.XSDHelperImpl;
 import org.apache.tuscany.sdo.util.DataObjectUtil;
 import org.apache.tuscany.sdo.util.SDOUtil;
 
 import commonj.sdo.DataObject;
+import commonj.sdo.helper.DataFactory;
 import commonj.sdo.helper.TypeHelper;
-
+import commonj.sdo.helper.XSDHelper;
 
 public class AxiomHelperTestCase extends TestCase {
 
-    public static final QName GREETING_QN = new QName("http://helloworldaxis.samples.tuscany.apache.org",
-                                                      "getGreetings");
-    
+    public static final QName GREETING_QN = new QName("http://helloworldaxis.samples.tuscany.apache.org", "getGreetings");
+
+    public static final QName DOCLIT_QN = new QName("http://www.example.org/creditscore/doclit/", "getCreditScoreRequest");
+
     private TypeHelper typeHelper;
 
     public void testToObjects1() {
         String s = "petra";
-        OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] {s}, GREETING_QN);
+        OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] { s }, GREETING_QN, true);
         assertNotNull(omElement);
 
-        Object[] os = AxiomHelper.toObjects(typeHelper, omElement);
+        Object[] os = AxiomHelper.toObjects(typeHelper, omElement, true);
         assertNotNull(os);
         assertEquals(os.length, 1);
         assertEquals(os[0], s);
@@ -35,10 +36,10 @@
 
     public void testToObjects2() {
         String s = "sue";
-        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] {s}, GREETING_QN);
+        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] { s }, GREETING_QN, true);
         assertNotNull(dataObject);
 
-        Object[] os = AxiomHelper.toObjects(dataObject);
+        Object[] os = AxiomHelper.toObjects(dataObject, true);
         assertNotNull(os);
         assertEquals(os.length, 1);
         assertEquals(os[0], s);
@@ -46,25 +47,52 @@
 
     public void testToOMElement1() {
         String s = "beate";
-        OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] {s}, GREETING_QN);
+        OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] { s }, GREETING_QN, true);
         assertNotNull(omElement);
     }
 
     public void testToOMElement2() {
         String s = "emma";
-        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] {s}, GREETING_QN);
+        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] { s }, GREETING_QN, true);
         assertNotNull(dataObject);
 
         OMElement omElement = AxiomHelper.toOMElement(typeHelper, dataObject, GREETING_QN);
         assertNotNull(omElement);
     }
 
+    public void testToOMElement3() {
+        DataFactory dataFactory = SDOUtil.createDataFactory(typeHelper);
+        DataObject dataObject = dataFactory.create("http://www.example.org/creditscore/doclit/", "Customer");
+        dataObject.setString(0, "111-22-3333");
+        dataObject.setString(1, "John");
+        dataObject.setString(2, "Smith");
+
+        OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] { dataObject }, DOCLIT_QN, false);
+        assertNotNull(omElement);
+
+        Object[] os = AxiomHelper.toObjects(typeHelper, omElement, false);
+        assertNotNull(os);
+        assertEquals(os.length, 1);
+        assertTrue(os[0] instanceof DataObject);
+
+        dataObject = (DataObject) os[0];
+        assertEquals(dataObject.getString(0), "111-22-3333");
+        assertEquals(dataObject.getString(1), "John");
+        assertEquals(dataObject.getString(2), "Smith");
+
+        dataObject = AxiomHelper.toDataObject(typeHelper, omElement);
+        assertEquals(dataObject.getString(0), "111-22-3333");
+        assertEquals(dataObject.getString(1), "John");
+        assertEquals(dataObject.getString(2), "Smith");
+
+    }
+
     public void testToDataObject() {
         String s = "bersi";
-        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] {s}, GREETING_QN);
+        DataObject dataObject = AxiomHelper.toDataObject(typeHelper, new Object[] { s }, GREETING_QN, true);
         assertNotNull(dataObject);
 
-        Object[] os = AxiomHelper.toObjects(dataObject);
+        Object[] os = AxiomHelper.toObjects(dataObject, true);
         assertNotNull(os);
         assertEquals(os.length, 1);
         assertEquals(os[0], s);
@@ -77,8 +105,11 @@
         try {
             Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
             typeHelper = SDOUtil.createTypeHelper();
+            XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
             URL url = getClass().getResource("helloworld.wsdl");
-            new XSDHelperImpl(typeHelper).define(url.openStream(), null);
+            xsdHelper.define(url.openStream(), null);
+            url = getClass().getResource("CreditScoreDocLit.wsdl");
+            xsdHelper.define(url.openStream(), null);
         } finally {
             Thread.currentThread().setContextClassLoader(cl);
         }

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=400047&r1=400046&r2=400047&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 Fri May  5 04:12:38 2006
@@ -23,28 +23,77 @@
 import junit.framework.TestCase;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sdo.helper.XSDHelperImpl;
 import org.apache.tuscany.sdo.util.DataObjectUtil;
 import org.apache.tuscany.sdo.util.SDOUtil;
 
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.DataFactory;
 import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XSDHelper;
 
 public class SDODataBindingTestCase extends TestCase {
+    public static final QName DOCLITWRAPPED_QN = new QName("http://www.example.org/creditscore/doclitwrapped/", "getCreditScore");
 
-    private SDODataBinding dataBinding;
+    public static final QName DOCLIT_QN = new QName("http://www.example.org/creditscore/doclit/", "getCreditScoreRequest");
+
+    public static final QName GREETING_QN = new QName("http://helloworldaxis.samples.tuscany.apache.org", "getGreetings");
+
+    private TypeHelper typeHelper;
+
+    private SDODataBinding docLitWrappedDB;
+
+    private SDODataBinding docLitDB;
+
+    private SDODataBinding greetingDB;
 
     public void testToOMElement() {
         String s = "petra";
 
-        OMElement omElement = dataBinding.toOMElement(new Object[] { s });
+        OMElement omElement = greetingDB.toOMElement(new Object[] { s });
         assertNotNull(omElement);
 
-        Object[] os = dataBinding.fromOMElement(omElement);
+        Object[] os = greetingDB.fromOMElement(omElement);
         assertNotNull(os);
         assertEquals(1, os.length);
         assertEquals(s, os[0]);
     }
 
+    public void testDocLit() {
+        DataFactory dataFactory = SDOUtil.createDataFactory(typeHelper);
+        DataObject dataObject = dataFactory.create("http://www.example.org/creditscore/doclit/", "Customer");
+        dataObject.setString(0, "111-22-3333");
+        dataObject.setString(1, "John");
+        dataObject.setString(2, "Smith");
+
+        OMElement omElement = docLitDB.toOMElement(new Object[] { dataObject });
+        assertNotNull(omElement);
+
+        Object[] os = docLitDB.fromOMElement(omElement);
+        assertNotNull(os);
+        assertEquals(os.length, 1);
+        assertTrue(os[0] instanceof DataObject);
+
+        dataObject = (DataObject) os[0];
+        assertEquals(dataObject.getString(0), "111-22-3333");
+        assertEquals(dataObject.getString(1), "John");
+        assertEquals(dataObject.getString(2), "Smith");
+    }
+
+    public void testDocLitWrapped() {
+        Object[] args = new Object[] { "111-22-3333", "John", "Smith" };
+
+        OMElement omElement = docLitWrappedDB.toOMElement(args);
+        assertNotNull(omElement);
+
+        Object[] os = docLitWrappedDB.fromOMElement(omElement);
+        assertNotNull(os);
+        assertEquals(os.length, 3);
+
+        assertEquals(os[0], "111-22-3333");
+        assertEquals(os[1], "John");
+        assertEquals(os[2], "Smith");
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
         DataObjectUtil.initRuntime();
@@ -52,13 +101,19 @@
         try {
             Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
 
-            TypeHelper typeHelper = SDOUtil.createTypeHelper();
+            typeHelper = SDOUtil.createTypeHelper();
+            XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
             URL url = getClass().getResource("helloworld.wsdl");
-            new XSDHelperImpl(typeHelper).define(url.openStream(), null);
+            xsdHelper.define(url.openStream(), null);
+            url = getClass().getResource("CreditScoreDocLitWrapped.wsdl");
+            xsdHelper.define(url.openStream(), null);
+            url = getClass().getResource("CreditScoreDocLit.wsdl");
+            xsdHelper.define(url.openStream(), null);
 
-            QName getGreetingsQName = new QName("http://helloworldaxis.samples.tuscany.apache.org", "getGreetings");
+            this.greetingDB = new SDODataBinding(typeHelper, GREETING_QN, true);
+            this.docLitWrappedDB = new SDODataBinding(typeHelper, DOCLITWRAPPED_QN, true);
 
-            this.dataBinding = new SDODataBinding(typeHelper, getGreetingsQName);
+            this.docLitDB = new SDODataBinding(typeHelper, DOCLIT_QN, false);
 
         } finally {
             Thread.currentThread().setContextClassLoader(cl);

Added: incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLit.wsdl
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLit.wsdl?rev=400047&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLit.wsdl (added)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLit.wsdl Fri May  5 04:12:38 2006
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://www.example.org/creditscore/doclit/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreditScore"
+	targetNamespace="http://www.example.org/creditscore/doclit/">
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://www.example.org/creditscore/doclit/"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+			<xsd:element name="getCreditScoreRequest" type="tns:Customer" />
+			<xsd:complexType name="Customer">
+				<xsd:sequence>
+					<xsd:element name="ssn" type="xsd:string" />
+					<xsd:element name="firstName" type="xsd:string" />
+					<xsd:element name="lastName" type="xsd:string" />
+				</xsd:sequence>
+			</xsd:complexType>				
+			<xsd:element name="getCreditScoreResponse" type="tns:CreditReport"/>
+			<xsd:complexType name="CreditReport">
+				<xsd:sequence>
+					<xsd:element name="score" type="xsd:int"/>
+				</xsd:sequence>
+			</xsd:complexType>				
+		</xsd:schema>
+	</wsdl:types>
+	<wsdl:message name="getCreditScoreResponse">
+		<wsdl:part element="tns:getCreditScoreResponse"
+			name="getCreditScoreResponse" />
+	</wsdl:message>
+	<wsdl:message name="getCreditScoreRequest">
+		<wsdl:part element="tns:getCreditScoreRequest"
+			name="getCreditScoreRequest" />
+	</wsdl:message>
+	<wsdl:portType name="CreditScoreDocLit">
+		<wsdl:operation name="getCreditScore">
+			<wsdl:input message="tns:getCreditScoreRequest" />
+			<wsdl:output message="tns:getCreditScoreResponse" />
+		</wsdl:operation>
+	</wsdl:portType>
+	<wsdl:binding name="CreditScoreDocLitSOAP" type="tns:CreditScoreDocLit">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<wsdl:operation name="getCreditScore">
+			<soap:operation
+				soapAction="http://www.example.org/creditscore/doclit/getCreditScore" />
+			<wsdl:input>
+				<soap:body parts="getCreditScoreRequest" use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body parts="getCreditScoreResponse" use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="CreditScore">
+		<wsdl:port binding="tns:CreditScoreDocLitSOAP"
+			name="CreditScoreDocLitSOAP">
+			<soap:address location="http://www.example.org/" />
+		</wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>

Added: incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLitWrapped.wsdl
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLitWrapped.wsdl?rev=400047&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLitWrapped.wsdl (added)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/test/resources/org/apache/tuscany/binding/axis2/util/CreditScoreDocLitWrapped.wsdl Fri May  5 04:12:38 2006
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://www.example.org/creditscore/doclitwrapped/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreditScore"
+	targetNamespace="http://www.example.org/creditscore/doclitwrapped/">
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://www.example.org/creditscore/doclitwrapped/"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+			<xsd:element name="getCreditScoreResponse">
+			<xsd:complexType>
+				<xsd:sequence>
+					<xsd:element name="score" type="xsd:int" />
+				</xsd:sequence>
+			</xsd:complexType>			
+			</xsd:element>
+			<xsd:element name="getCreditScore">
+			<xsd:complexType>
+				<xsd:sequence>
+					<xsd:element name="ssn" type="xsd:string" />
+					<xsd:element name="firstName" type="xsd:string" />
+					<xsd:element name="lastName" type="xsd:string" />
+				</xsd:sequence>
+			</xsd:complexType>
+			</xsd:element>
+		</xsd:schema>
+	</wsdl:types>
+	<wsdl:message name="getCreditScoreResponse">
+		<wsdl:part element="tns:getCreditScoreResponse"
+			name="getCreditScoreResponse" />
+	</wsdl:message>
+	<wsdl:message name="getCreditScoreRequest">
+		<wsdl:part element="tns:getCreditScore"
+			name="getCreditScoreRequest" />
+	</wsdl:message>
+	<wsdl:portType name="CreditScoreDocLitWrapped">
+		<wsdl:operation name="getCreditScore">
+			<wsdl:input message="tns:getCreditScoreRequest" />
+			<wsdl:output message="tns:getCreditScoreResponse" />
+		</wsdl:operation>
+	</wsdl:portType>
+	<wsdl:binding name="CreditScoreDocLitWrappedSOAP" type="tns:CreditScoreDocLitWrapped">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<wsdl:operation name="getCreditScore">
+			<soap:operation
+				soapAction="http://www.example.org/creditscore/doclitwrapped/getCreditScore" />
+			<wsdl:input>
+				<soap:body parts="getCreditScoreRequest" use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body parts="getCreditScoreResponse" use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="CreditScore">
+		<wsdl:port binding="tns:CreditScoreDocLitWrappedSOAP"
+			name="CreditScoreDocLitWrappedSOAP">
+			<soap:address location="http://localhost:8080/CreditScoreService/services/CreditScoreDocLitWrappedSOAP"/>
+		</wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>