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 [EMAIL PROTECTED]
- * WebServiceBinding}
+ * Creates a <code>ContextFactory</code> for an external service configured 
with the [EMAIL PROTECTED] 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>


Reply via email to