/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cxf.tools.corba.processors;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.Service;
import javax.wsdl.xml.WSDLWriter;
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.apache.cxf.binding.corba.wsdl.AddressType;
import org.apache.cxf.binding.corba.wsdl.Anonarray;
import org.apache.cxf.binding.corba.wsdl.Anonfixed;
import org.apache.cxf.binding.corba.wsdl.Anonsequence;
import org.apache.cxf.binding.corba.wsdl.Anonstring;
import org.apache.cxf.binding.corba.wsdl.Array;
import org.apache.cxf.binding.corba.wsdl.CorbaType;
import org.apache.cxf.binding.corba.wsdl.Struct;
import org.apache.cxf.binding.corba.wsdl.TypeMappingType;
import org.apache.cxf.binding.corba.wsdl.Union;
import org.apache.cxf.binding.corba.wsdl.Unionbranch;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.tools.corba.common.WSDLCorbaFactory;
import org.apache.cxf.tools.corba.processors.wsdl.WSDLToCorbaBinding;
import org.apache.cxf.tools.corba.processors.wsdl.WSDLToIDLAction;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class WSDLToCorbaBindingTypeTest extends Assert {
WSDLToCorbaBinding generator;
WSDLWriter writer;
@Before
public void setUp() {
generator = new WSDLToCorbaBinding();
try {
WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
.newInstance("org.apache.cxf.tools.corba.common.WSDLCorbaFactoryImpl");
writer = wsdlfactory.newWSDLWriter();
} catch (Exception ex) {
ex.printStackTrace();
}
}
private Element getElementNode(Document document, String elName) {
Element root = document.getDocumentElement();
for (Node nd = root.getFirstChild(); nd != null; nd = nd.getNextSibling()) {
if (Node.ELEMENT_NODE == nd.getNodeType() && (elName.equals(nd.getNodeName()))) {
return (Element)nd;
}
}
return null;
}
@Test
public void testWsAddressingAccountType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/wsaddressing_bank.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("Bank");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, DOMUtils.findAllElementsByTagNameNS(typemap,
"http://cxf.apache.org/bindings/corba",
"sequence").size());
assertEquals(2, DOMUtils.findAllElementsByTagNameNS(typemap,
"http://cxf.apache.org/bindings/corba",
"object").size());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("BankCORBABinding");
idlgen.setOutputFile("wsaddressing_bank.idl");
idlgen.generateIDL(model);
File f = new File("wsaddressing_bank.idl");
assertTrue("wsaddressing_bank.idl should be generated", f.exists());
} finally {
new File("wsaddressing_bank.idl").deleteOnExit();
}
}
@Test
public void testWsAddressingBankType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/wsaddressing_account.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("Account");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:object").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("AccountCORBABinding");
idlgen.setOutputFile("wsaddressing_account.idl");
idlgen.generateIDL(model);
File f = new File("wsaddressing_account.idl");
assertTrue("wsaddressing_account.idl should be generated", f.exists());
} finally {
new File("wsaddressing_account.idl").deleteOnExit();
}
}
@Test
public void testWsAddressingTypes() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/wsaddressing_server.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("TestServer");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:object").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("TestServerCORBABinding");
idlgen.setOutputFile("wsaddressing_server.idl");
idlgen.generateIDL(model);
File f = new File("wsaddressing_server.idl");
assertTrue("wsaddressing_server.idl should be generated", f.exists());
} finally {
new File("wsaddressing_server.idl").deleteOnExit();
}
}
@Test
public void testDateTimeTypes() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/datetime.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("BasePortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(2, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(2, typemap.getElementsByTagName("corba:struct").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("BaseCORBABinding");
idlgen.setOutputFile("datetime.idl");
idlgen.generateIDL(model);
File f = new File("datetime.idl");
assertTrue("datetime.idl should be generated", f.exists());
} finally {
new File("datetime.idl").deleteOnExit();
}
}
@Test
public void testNestedInterfaceTypes() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/nested_interfaces.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("C.C1");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:anonstring").getLength());
assertEquals(9, typemap.getElementsByTagName("corba:struct").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("C.C1CORBABinding");
idlgen.setOutputFile("nested_interfaces.idl");
idlgen.generateIDL(model);
File f = new File("nested_interfaces.idl");
assertTrue("nested_interfaces.idl should be generated", f.exists());
} finally {
new File("nested_interfaces.idl").deleteOnExit();
}
}
@Test
public void testNestedComplexTypes() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/nested_complex.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("X");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(6, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(14, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:enum").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:array").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("XCORBABinding");
idlgen.setOutputFile("nested_complex.idl");
idlgen.generateIDL(model);
File f = new File("nested_complex.idl");
assertTrue("nested_complex.idl should be generated", f.exists());
} finally {
new File("nested_complex.idl").deleteOnExit();
}
}
@Test
public void testNestedDerivedTypes() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/nested-derivedtypes.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("DerivedTypesPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(6, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(58, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(3, typemap.getElementsByTagName("corba:sequence").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("DerivedTypesCORBABinding");
idlgen.setOutputFile("nested-derivedtypes.idl");
idlgen.generateIDL(model);
File f = new File("nested-derivedtypes.idl");
assertTrue("nested-derivedtypes.idl should be generated", f.exists());
} finally {
new File("nested-derivedtypes.idl").deleteOnExit();
}
}
@Test
public void testNestedType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/nested.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("TypeInheritancePortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(4, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(23, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:anonstring").getLength());
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("TypeInheritanceCORBABinding");
idlgen.setOutputFile("nested.idl");
idlgen.generateIDL(model);
File f = new File("nested.idl");
assertTrue("nested.idl should be generated", f.exists());
} finally {
new File("nested.idl").deleteOnExit();
}
}
@Test
public void testNillableType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/nillable.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("NillablePortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(2, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:struct").getLength());
TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("NillableCORBABinding");
idlgen.setOutputFile("nillable.idl");
idlgen.generateIDL(model);
Union un = (Union)mapType.getStructOrExceptionOrUnion().get(2);
assertEquals("Name is incorrect for Union Type", "long_nil",
un.getName());
assertEquals("Type is incorrect for Union Type", "PEl",
un.getType().getLocalPart());
Unionbranch unbranch = un.getUnionbranch().get(0);
assertEquals("Name is incorrect for UnionBranch Type", "value",
unbranch.getName());
assertEquals("Type is incorrect for UnionBranch Type", "long",
unbranch.getIdltype().getLocalPart());
File f = new File("nillable.idl");
assertTrue("nillable.idl should be generated", f.exists());
} finally {
new File("nillable.idl").deleteOnExit();
}
}
// tests Type Inheritance and attributes.
@Test
public void testTypeInheritance() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/TypeInheritance.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("TypeInheritancePortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(3, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:anonstring").getLength());
assertEquals(17, typemap.getElementsByTagName("corba:struct").getLength());
TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("TypeInheritanceCORBABinding");
idlgen.setOutputFile("typeInherit.idl");
idlgen.generateIDL(model);
List<CorbaType> types = mapType.getStructOrExceptionOrUnion();
for (int i = 0; i < types.size(); i++) {
CorbaType type = types.get(i);
if ("Type5SequenceStruct".equals(type.getName())) {
assertTrue("Name is incorrect for Type5SequenceStruct Type", type instanceof Struct);
assertEquals("Type is incorrect for AnonSequence Type", "Type5",
type.getType().getLocalPart());
} else if ("attrib2Type".equals(type.getName())) {
assertTrue("Name is incorrect for attrib2Type Type", type instanceof Anonstring);
assertEquals("Type is incorrect for AnonString Type", "string",
type.getType().getLocalPart());
} else if ("attrib2Type_nil".equals(type.getName())) {
assertTrue("Name is incorrect for Struct Type", type instanceof Union);
assertEquals("Type is incorrect for AnonSequence Type", "attrib2",
type.getType().getLocalPart());
}
}
File f = new File("typeInherit.idl");
assertTrue("typeInherit.idl should be generated", f.exists());
} finally {
new File("typeInherit.idl").deleteOnExit();
}
}
// tests anonymous strings and fixed types.
@Test
public void testAnonFixedType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/anonfixed.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("X");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:anonfixed").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:anonstring").getLength());
assertEquals(3, typemap.getElementsByTagName("corba:struct").getLength());
TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("XCORBABinding");
idlgen.setOutputFile("atype.idl");
idlgen.generateIDL(model);
List<CorbaType> types = mapType.getStructOrExceptionOrUnion();
for (int i = 0; i < types.size(); i++) {
CorbaType type = types.get(i);
if (type instanceof Anonstring) {
Anonstring str = (Anonstring)type;
assertEquals("Name is incorrect for Array Type", "X._1_S",
str.getName());
assertEquals("Type is incorrect for AnonString Type", "string",
str.getType().getLocalPart());
} else if (type instanceof Anonfixed) {
Anonfixed fx = (Anonfixed)type;
assertEquals("Name is incorrect for Anon Array Type", "X._2_S",
fx.getName());
assertEquals("Type is incorrect for AnonFixed Type", "decimal",
fx.getType().getLocalPart());
} else if (type instanceof Struct) {
Struct struct = (Struct)type;
String[] testResult;
if ("X.op_a".equals(struct.getName())) {
testResult = new String[]{"X.op_a", "X.op_a", "p1",
"X.S", "p2", "X.S"};
} else if ("X.op_aResult".equals(struct.getName())) {
testResult = new String[]{"X.op_aResult",
"X.op_aResult", "return", "X.S", "p2", "X.S"};
} else {
testResult = new String[]{"X.S", "X.S", "str",
"X._1_S", "fx", "X._2_S"};
}
assertEquals("Name is incorrect for Anon Array Type",
testResult[0],
struct.getName());
assertEquals("Type is incorrect for Struct Type",
testResult[1],
struct.getType().getLocalPart());
assertEquals("Name for first Struct Member Type is incorrect",
testResult[2],
struct.getMember().get(0).getName());
assertEquals("Idltype for first Struct Member Type is incorrect",
testResult[3],
struct.getMember().get(0).getIdltype().getLocalPart());
assertEquals("Name for second Struct Member Type is incorrect",
testResult[4],
struct.getMember().get(1).getName());
assertEquals("Idltype for second Struct Member Type is incorrect",
testResult[5],
struct.getMember().get(1).getIdltype().getLocalPart());
} else {
//System.err.println("Type: " + i + " " + type.getClass().getName());
}
}
File f = new File("atype.idl");
assertTrue("atype.idl should be generated", f.exists());
} finally {
new File("atype.idl").deleteOnExit();
}
}
// tests anonymous arrays and sequences
@Test
public void testAnonType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/atype.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("X");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(3, typemap.getElementsByTagName("corba:anonsequence").getLength());
assertEquals(2, typemap.getElementsByTagName("corba:anonarray").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:array").getLength());
assertEquals(2, typemap.getElementsByTagName("corba:struct").getLength());
TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
Map<String, CorbaType> tmap = new HashMap<>();
for (CorbaType type : mapType.getStructOrExceptionOrUnion()) {
tmap.put(type.getName(), type);
}
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("XCORBABinding");
idlgen.setOutputFile("atype.idl");
idlgen.generateIDL(model);
Array arr = (Array)tmap.get("X.A");
assertNotNull(arr);
assertEquals("ElementType is incorrect for Array Type", "X._5_A",
arr.getElemtype().getLocalPart());
Anonarray arr2 = (Anonarray)tmap.get("X._5_A");
assertNotNull(arr2);
assertEquals("ElementType is incorrect for Anon Array Type", "X._4_A",
arr2.getElemtype().getLocalPart());
Anonarray arr3 = (Anonarray)tmap.get("X._4_A");
assertNotNull(arr3);
assertEquals("ElementType is incorrect for Anon Array Type", "X._1_A",
arr3.getElemtype().getLocalPart());
Anonsequence seq = (Anonsequence)tmap.get("X._1_A");
assertNotNull(seq);
assertEquals("ElementType is incorrect for Anon Sequence Type", "X._2_A",
seq.getElemtype().getLocalPart());
Anonsequence seq2 = (Anonsequence)tmap.get("X._2_A");
assertNotNull(seq2);
assertEquals("ElementType is incorrect for Anon Sequence Type", "X._3_A",
seq2.getElemtype().getLocalPart());
Anonsequence seq3 = (Anonsequence)tmap.get("X._3_A");
assertNotNull(seq3);
assertEquals("ElementType is incorrect for Anon Sequence Type", "long",
seq3.getElemtype().getLocalPart());
File f = new File("atype.idl");
assertTrue("atype.idl should be generated", f.exists());
} finally {
new File("atype.idl").deleteOnExit();
}
}
@Test
public void testAnyType() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/any.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("anyInterface");
Definition model = generator.generateCORBABinding();
TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
assertEquals(5, mapType.getStructOrExceptionOrUnion().size());
int strcnt = 0;
int unioncnt = 0;
for (CorbaType corbaType : mapType.getStructOrExceptionOrUnion()) {
if (corbaType instanceof Struct) {
strcnt++;
}
if (corbaType instanceof Union) {
unioncnt++;
}
}
assertNotNull(mapType);
assertEquals(3, strcnt);
assertEquals(2, unioncnt);
WSDLToIDLAction idlgen = new WSDLToIDLAction();
idlgen.setBindingName("anyInterfaceCORBABinding");
idlgen.setOutputFile("any.idl");
idlgen.generateIDL(model);
File f = new File("any.idl");
assertTrue("any.idl should be generated", f.exists());
} finally {
new File("any.idl").deleteOnExit();
}
}
@Test
public void testMultipleBindings() throws Exception {
String fileName = getClass().getResource("/wsdl/multiplePortTypes.wsdl").toString();
generator.setWsdlFile(fileName);
generator.setAllBindings(true);
Definition model = generator.generateCORBABinding();
assertEquals("All bindings should be generated.", 2, model.getAllBindings().size());
}
@Test
public void testAnonymousReturnParam() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/factory_pattern.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("Number");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(3, typemap.getElementsByTagName("corba:struct").getLength());
} finally {
new File("factory_pattern-corba.wsdl").deleteOnExit();
}
}
@Test
public void testComplextypeDerivedSimpletype() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/complex_types.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("TypeTestPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(8, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:fixed").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:array").getLength());
assertEquals(5, typemap.getElementsByTagName("corba:union").getLength());
assertEquals(3, typemap.getElementsByTagName("corba:sequence").getLength());
} finally {
new File("complex_types-corba.wsdl").deleteOnExit();
}
}
@Test
public void testCorbaExceptionComplextype() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/databaseService.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("Database");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(2, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:exception").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:anonsequence").getLength());
} finally {
new File("databaseService-corba.wsdl").deleteOnExit();
}
}
@Test
public void testSetCorbaAddress() throws Exception {
try {
String fileName = getClass().getResource("/wsdl/datetime.wsdl").toString();
generator.setWsdlFile(fileName);
generator.addInterfaceName("BasePortType");
Definition model = generator.generateCORBABinding();
QName name = new QName("http://schemas.apache.org/idl/datetime.idl",
"BaseCORBAService", "tns");
Service service = model.getService(name);
Port port = service.getPort("BaseCORBAPort");
AddressType addressType = (AddressType)port.getExtensibilityElements().get(0);
String address = addressType.getLocation();
assertEquals("file:./Base.ref", address);
generator.setAddress("corbaloc::localhost:40000/hw");
model = generator.generateCORBABinding();
service = model.getService(name);
port = service.getPort("BaseCORBAPort");
addressType = (AddressType)port.getExtensibilityElements().get(0);
address = addressType.getLocation();
assertEquals("corbaloc::localhost:40000/hw", address);
} finally {
new File("datetime-corba.wsdl").deleteOnExit();
}
}
@Test
public void testSetCorbaAddressFile() throws Exception {
try {
URI fileName = getClass().getResource("/wsdl/datetime.wsdl").toURI();
generator.setWsdlFile(new File(fileName).getAbsolutePath());
generator.addInterfaceName("BasePortType");
Definition model = generator.generateCORBABinding();
QName name = new QName("http://schemas.apache.org/idl/datetime.idl",
"BaseCORBAService", "tns");
Service service = model.getService(name);
Port port = service.getPort("BaseCORBAPort");
AddressType addressType = (AddressType)port.getExtensibilityElements().get(0);
String address = addressType.getLocation();
assertEquals("file:./Base.ref", address);
URL idl = getClass().getResource("/wsdl/addressfile.txt");
String filename = new File(idl.toURI()).getAbsolutePath();
generator.setAddressFile(filename);
model = generator.generateCORBABinding();
service = model.getService(name);
port = service.getPort("BaseCORBAPort");
addressType = (AddressType)port.getExtensibilityElements().get(0);
address = addressType.getLocation();
assertEquals("corbaloc::localhost:60000/hw", address);
} finally {
new File("datetime-corba.wsdl").deleteOnExit();
}
}
@Test
public void testRestrictedStruct() throws Exception {
try {
URI fileName = getClass().getResource("/wsdl/restrictedStruct.wsdl").toURI();
generator.setWsdlFile(new File(fileName).getAbsolutePath());
generator.addInterfaceName("TypeTestPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(7, typemap.getElementsByTagName("corba:struct").getLength());
assertEquals(3, typemap.getElementsByTagName("corba:union").getLength());
} finally {
new File("restrictedStruct-corba.wsdl").deleteOnExit();
}
}
@Test
public void testComplexRestriction() throws Exception {
try {
URI fileName = getClass().getResource("/wsdl/complexRestriction.wsdl").toURI();
generator.setWsdlFile(new File(fileName).getAbsolutePath());
generator.addInterfaceName("TypeTestPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:struct").getLength());
} finally {
new File("complexRestriction-corba.wsdl").deleteOnExit();
}
}
@Test
public void testListType() throws Exception {
try {
URI fileName = getClass().getResource("/wsdl/listType.wsdl").toURI();
generator.setWsdlFile(new File(fileName).getAbsolutePath());
generator.addInterfaceName("TypeTestPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:enum").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:sequence").getLength());
} finally {
new File("listType-corba.wsdl").deleteOnExit();
}
}
@Test
public void testImportSchemaInTypes() throws Exception {
try {
URI fileName = getClass().getResource("/wsdl/importType.wsdl").toURI();
generator.setWsdlFile(new File(fileName).getAbsolutePath());
generator.addInterfaceName("TypeTestPortType");
Definition model = generator.generateCORBABinding();
Document document = writer.getDocument(model);
Element typemap = getElementNode(document, "corba:typeMapping");
assertNotNull(typemap);
assertEquals(1, typemap.getElementsByTagName("corba:enum").getLength());
assertEquals(1, typemap.getElementsByTagName("corba:sequence").getLength());
} finally {
new File("importType-corba.wsdl").deleteOnExit();
}
}
}