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