You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by dm...@apache.org on 2006/09/15 17:35:49 UTC

svn commit: r446665 - in /incubator/yoko/trunk/bindings/src/test: java/org/apache/yoko/bindings/corba/TestUtils.java java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java resources/wsdl/ComplexTypes.wsdl

Author: dmiddlem
Date: Fri Sep 15 10:35:49 2006
New Revision: 446665

URL: http://svn.apache.org/viewvc?view=rev&rev=446665
Log:
Additional tests for the binding type handlers (YOKO-157)

Added:
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java   (with props)
    incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl   (with props)
Modified:
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/TestUtils.java

Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/TestUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/TestUtils.java?view=diff&rev=446665&r1=446664&r2=446665
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/TestUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/TestUtils.java Fri Sep 15 10:35:49 2006
@@ -37,4 +37,10 @@
         QName serviceName = new QName("http://yoko.apache.org/StaxTest", "StaxTestCORBAService");
         return EndpointReferenceUtils.getEndpointReference(wsdlUrl, serviceName, "StaxTestCORBAPort");
     }
+    
+    public EndpointReferenceType getComplexTypesEndpointReference() {
+        URL wsdlUrl = getClass().getResource("/wsdl/ComplexTypes.wsdl");
+        QName serviceName = new QName("http://yoko.apache.org/ComplexTypes", "ComplexTypesCORBAService");
+        return EndpointReferenceUtils.getEndpointReference(wsdlUrl, serviceName, "ComplexTypesCORBAPort");
+    }
 }

Added: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java?view=auto&rev=446665
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java (added)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java Fri Sep 15 10:35:49 2006
@@ -0,0 +1,175 @@
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.yoko.bindings.corba.CorbaBindingFactory;
+import org.apache.yoko.bindings.corba.CorbaBindingImpl;
+import org.apache.yoko.bindings.corba.CorbaConstants;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.apache.yoko.bindings.corba.TestUtils;
+
+import org.objectweb.celtix.Bus;
+import org.objectweb.celtix.bindings.BindingManager;
+import org.omg.CORBA.ORB;
+
+import junit.framework.TestCase;
+
+public class CorbaHandlerUtilsTest extends TestCase {
+
+    private final String complexTypesNamespaceURI = "http://yoko.apache.org/ComplexTypes/idl_types";
+    private final String complexTypesPrefix = "corbatm";
+
+    private TestUtils testUtils;
+    private ORB orb;
+    private Bus bus;
+    
+    public CorbaHandlerUtilsTest(String arg0) {
+        super(arg0);
+    }
+
+    public static void main(String[] args) {
+        junit.textui.TestRunner.run(CorbaHandlerUtilsTest.class);
+    }
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        testUtils = new TestUtils();
+
+        java.util.Properties props = System.getProperties();
+        props.put("org.omg.CORBA.ORBClass", "org.apache.yoko.orb.CORBA.ORB");
+        props.put("org.omg.CORBA.ORBSingletonClass", "org.apache.yoko.orb.CORBA.ORBSingleton");
+        props.put("yoko.orb.id", "Yoko-Server-Binding");
+        orb = ORB.init(new String[0], props);
+
+        bus = Bus.init(new String[0]);
+        
+        // programmatically add the corba binding factory
+        BindingManager manager = bus.getBindingManager();
+        CorbaBindingFactory corbaBF = new CorbaBindingFactory();
+        corbaBF.init(bus);
+        manager.registerBinding(CorbaConstants.NU_WSDL_CORBA, corbaBF);
+
+    }
+    
+    protected void tearDown() throws Exception {
+        if (orb != null) {
+            try {
+                orb.destroy();
+            } catch (Exception ex) {
+                // Do nothing.  Throw an Exception?
+            }
+        } 
+    }
+    
+    public void testCreateTypeHandler() {
+        CorbaBindingImpl bindingImpl = new CorbaBindingImpl(bus, 
+                                                            testUtils.getComplexTypesEndpointReference(),
+                                                            orb, 
+                                                            false);
+        QName objName = null;
+        QName objIdlType = null;
+        CorbaObjectHandler result = null;
+        List<CorbaTypeMap> typeMaps = bindingImpl.getCorbaTypeMaps();
+        
+        // Test for an array handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestArray", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaArrayHandler);
+
+        // Test for an enum handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestEnum", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaEnumHandler);
+
+        // Test for a fixed handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestFixed", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaFixedHandler);
+
+        // Test for a primitive handler
+        objName = new QName("object");
+        objIdlType = CorbaConstants.NT_CORBA_BOOLEAN;  
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaPrimitiveHandler);
+
+        // Test for a sequence handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestSequence", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaSequenceHandler);
+
+        // Test for a struct handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestStruct", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaStructHandler);
+
+        // Test for a union handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestUnion", complexTypesPrefix);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaUnionHandler);
+    }
+    
+    public void testInitializeObjectHandler() {
+        CorbaBindingImpl bindingImpl = new CorbaBindingImpl(bus, 
+                                                            testUtils.getComplexTypesEndpointReference(),
+                                                            orb, 
+                                                            false);
+        QName objName = null;
+        QName objIdlType = null;
+        CorbaObjectHandler result = null;
+        List<CorbaTypeMap> typeMaps = bindingImpl.getCorbaTypeMaps();
+
+        // Test for an array handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestArray", complexTypesPrefix);
+        result = CorbaHandlerUtils.initializeObjectHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaArrayHandler);
+        CorbaArrayHandler arrayHandler = (CorbaArrayHandler)result;
+        // WSDL defines the array to have 5 elements
+        assertTrue(arrayHandler.getElements().size() == 5);
+        
+
+        // Test for a sequence handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestSequence", complexTypesPrefix);
+        result = CorbaHandlerUtils.initializeObjectHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaSequenceHandler);
+        CorbaSequenceHandler seqHandler = (CorbaSequenceHandler)result;
+        // This is an unbounded sequence so make sure there are no elements and the template
+        // element has been set.
+        assertTrue(seqHandler.getElements().size() == 0);
+        assertNotNull(seqHandler.getTemplateElement());
+        
+        // Test for a bounded sequence handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestBoundedSequence", complexTypesPrefix);
+        result = CorbaHandlerUtils.initializeObjectHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaSequenceHandler);
+        CorbaSequenceHandler boundedSeqHandler = (CorbaSequenceHandler)result;
+        // This is a bounded sequence with WSDL defining 5 elements.
+        assertTrue(boundedSeqHandler.getElements().size() == 5);
+        
+        // Test for a struct handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestStruct", complexTypesPrefix);
+        result = CorbaHandlerUtils.initializeObjectHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaStructHandler);
+        CorbaStructHandler structHandler = (CorbaStructHandler)result;
+        // The WSDL defines this struct as having three members
+        assertTrue(structHandler.getMembers().size() == 3);
+
+        // Test for a union handler
+        objName = new QName("object");
+        objIdlType = new QName(complexTypesNamespaceURI, "TestUnion", complexTypesPrefix);
+        result = CorbaHandlerUtils.initializeObjectHandler(orb, objName, objIdlType, typeMaps);
+        assertTrue(result instanceof CorbaUnionHandler);
+    }
+}
\ No newline at end of file

Propchange: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl?view=auto&rev=446665
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl (added)
+++ incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl Fri Sep 15 10:35:49 2006
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- To be replace by a Yoko generated IDLtoWSDL once types supported -->
+<definitions
+ targetNamespace="http://yoko.apache.org/ComplexTypes"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://yoko.apache.org/ComplexTypes"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsd1="http://yoko.apache.org/ComplexTypes/types"
+ xmlns:corba="http://schemas.apache.org/yoko/bindings/corba"
+ xmlns:corbatm="http://yoko.apache.org/ComplexTypes/idl_types">
+  <types>
+    <schema targetNamespace="http://yoko.apache.org/ComplexTypes/types"
+     xmlns="http://www.w3.org/2001/XMLSchema"
+     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+      <xsd:complexType name="TestArray">
+        <xsd:sequence>
+          <xsd:element name="item" type="xsd:int" minOccurs="5" maxOccurs="5"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:complexType name="TestSequence">
+        <xsd:sequence>
+          <xsd:element name="item" type="xsd:short" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:complexType name="TestBoundedSequence">
+        <xsd:sequence>
+          <xsd:element name="item" type="xsd:short" minOccurs="0" maxOccurs="5"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:simpleType name="TestEnum">
+        <xsd:restriction base="xsd:string">
+          <xsd:enumeration value="RED"/>
+          <xsd:enumeration value="GREEN"/>
+          <xsd:enumeration value="BLUE"/>
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:complexType name="TestStruct">
+        <xsd:sequence>
+          <xsd:element name="boolMember" type="xsd:boolean"/>
+          <xsd:element name="stringMember" type="xsd:string"/>
+          <xsd:element name="floatMember" type="xsd:float"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:complexType name="TestUnion">
+        <xsd:choice>
+          <xsd:element name="case0" type="xsd:unsignedByte"/>
+          <xsd:element name="case12" type="xsd:string"/>
+          <xsd:element name="caseDef" type="xsd:long"/>
+        </xsd:choice>
+      </xsd:complexType>
+      <xsd:complexType name="_omg_TestUnion">
+        <xsd:sequence>
+          <xsd:element minOccurs="1" maxOccurs="1" name="discriminator" type="xsd:short"/>
+          <xsd:choice minOccurs="0" maxOccurs="1">
+            <xsd:element name="case0" type="xsd:unsignedByte"/>
+            <xsd:element name="case12" type="xsd:string"/>
+            <xsd:element name="caseDef" type="xsd:long"/>
+          </xsd:choice>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="testOp">
+        <xsd:complexType>
+          <xsd:sequence>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="testOpResult">
+        <xsd:complexType>
+          <xsd:sequence>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </schema>
+  </types>
+  <message name="testOp">
+    <part name="parameters" element="xsd1:testOp"/>
+  </message>
+  <message name="testOpResponse">
+    <part name="parameters" element="xsd1:testOpResult"/>
+  </message>
+  <portType name="ComplexTypes">
+    <operation name="testOp">
+      <input message="tns:testOp" name="testOp"/>
+      <output message="tns:testOpResponse" name="testOpResponse"/>
+    </operation>
+  </portType>
+  <binding name="ComplexTypesCORBABinding" type="tns:ComplexTypes">
+    <corba:binding repositoryID="IDL:ComplexTypes:1.0"/>
+    <operation name="testOp">
+      <corba:operation name="testOp"/>
+      <input/>
+      <output/>
+    </operation>
+  </binding>
+  <service name="ComplexTypesCORBAService">
+    <port name="ComplexTypesCORBAPort" binding="tns:ComplexTypesCORBABinding">
+      <corba:address location="corbaloc::localhost:50000/ComplexTypes"/>
+    </port>
+  </service>
+  <corba:typeMapping targetNamespace="http://yoko.apache.org/ComplexTypes/idl_types">
+    <corba:array name="TestArray" repositoryID="IDL:TestArray:1.0" type="xsd1:TestArray" elemtype="corba:long" bound="5"/>
+    <corba:sequence name="TestSequence" repositoryID="IDL:TestSequence:1.0" type="xsd1:TestSequence" elemtype="corba:short" bound="0"/>
+    <corba:sequence name="TestBoundedSequence" repositoryID="IDL:TestBoundedSequence:1.0" type="xsd1:TestBoundedSequence" elemtype="corba:short" bound="5"/>
+    <corba:fixed name="TestFixed" repositoryID="IDL:TestFixed:1.0" type="xsd:decimal" digits="5" scale="2"/>
+    <corba:enum name="TestEnum" type="xsd1:TestEnum" repositoryID="IDL:TestEnum:1.0">
+      <corba:enumerator value="RED"/>
+      <corba:enumerator value="GREEN"/>
+      <corba:enumerator value="BLUE"/>
+    </corba:enum>
+    <corba:struct name="TestStruct" type="xsd1:TestStruct" repositoryID="IDL:TestStruct:1.0">
+      <corba:member name="boolMember" idltype="corba:boolean"/>
+      <corba:member name="stringMember" idltype="corba:string"/>
+      <corba:member name="floatMember" idltype="corba:float"/>
+    </corba:struct>
+    <corba:union name="TestUnion" type="xsd1:TestUnion" discriminator="corba:short" repositoryID="IDL:TestUnion:1.0">
+      <corba:unionbranch name="case0" idltype="corba:octet">
+        <corba:case label="0"/>
+      </corba:unionbranch>
+      <corba:unionbranch name="case12" idltype="corba:wchar">
+        <corba:case label="1"/>
+        <corba:case label="2"/>
+      </corba:unionbranch>
+      <corba:unionbranch name="caseDef" idltype="corba:longlong" default="true"/>
+    </corba:union>
+  </corba:typeMapping>
+</definitions>

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/ComplexTypes.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml