001: package org.objectweb.celtix.systest.type_test.soap;
002:
003: import java.util.List;
004:
005: import javax.xml.namespace.QName;
006: import javax.xml.soap.SOAPElement;
007: import javax.xml.soap.SOAPFactory;
008: import javax.xml.ws.Holder;
009:
010: import junit.framework.Test;
011: import junit.framework.TestSuite;
012:
013: import org.objectweb.celtix.systest.common.ClientServerSetupBase;
014: import org.objectweb.celtix.systest.type_test.AbstractTypeTestClient4;
015: import org.objectweb.type_test.types2.StructWithAnyArrayLax;
016: import org.objectweb.type_test.types2.StructWithAnyStrict;
017:
018: public class SOAPRpcLitClientTypeTest extends AbstractTypeTestClient4 {
019: static final String WSDL_PATH = "/wsdl/type_test/type_test_rpclit_soap.wsdl";
020: static final QName SERVICE_NAME = new QName(
021: "http://objectweb.org/type_test/rpc", "SOAPService");
022: static final QName PORT_NAME = new QName(
023: "http://objectweb.org/type_test/rpc", "SOAPPort");
024:
025: public SOAPRpcLitClientTypeTest(String name) {
026: super (name, SERVICE_NAME, PORT_NAME, WSDL_PATH);
027: }
028:
029: public static Test suite() throws Exception {
030: TestSuite suite = new TestSuite(SOAPRpcLitClientTypeTest.class);
031: return new ClientServerSetupBase(suite) {
032: public void startServers() throws Exception {
033: boolean ok = launchServer(SOAPRpcLitServerImpl.class);
034: assertTrue("failed to launch server", ok);
035: }
036: };
037: }
038:
039: public void testStructWithAnyStrict() throws Exception {
040: SOAPFactory factory = SOAPFactory.newInstance();
041: SOAPElement elem = factory.createElement(
042: "StringElementQualified", "tns",
043: "http://objectweb.org/type_test/types1");
044: elem.addNamespaceDeclaration("tns",
045: "http://objectweb.org/type_test/types1");
046: elem.addTextNode("This is the text of the node");
047:
048: StructWithAnyStrict x = new StructWithAnyStrict();
049: x.setName("Name x");
050: x.setAddress("Some Address x");
051: x.setAny(elem);
052:
053: elem = factory.createElement("StringElementQualified", "tns",
054: "http://objectweb.org/type_test/types1");
055: elem.addNamespaceDeclaration("tns",
056: "http://objectweb.org/type_test/types1");
057: elem.addTextNode("This is the text of the second node");
058:
059: StructWithAnyStrict yOrig = new StructWithAnyStrict();
060: yOrig.setName("Name y");
061: yOrig.setAddress("Some Address y");
062: yOrig.setAny(elem);
063:
064: Holder<StructWithAnyStrict> y = new Holder<StructWithAnyStrict>(
065: yOrig);
066: Holder<StructWithAnyStrict> z = new Holder<StructWithAnyStrict>();
067: StructWithAnyStrict ret = rpcClient.testStructWithAnyStrict(x,
068: y, z);
069: if (!perfTestOnly) {
070: assertEqualsStructWithAnyStrict(x, y.value);
071: assertEqualsStructWithAnyStrict(yOrig, z.value);
072: assertEqualsStructWithAnyStrict(x, ret);
073: }
074: }
075:
076: public void testStructWithAnyStrictComplex() throws Exception {
077: SOAPFactory factory = SOAPFactory.newInstance();
078: SOAPElement elem = factory.createElement(
079: "AnonTypeElementQualified", "tns",
080: "http://objectweb.org/type_test/types1");
081: elem.addNamespaceDeclaration("tns",
082: "http://objectweb.org/type_test/types1");
083: SOAPElement floatElem = factory.createElement("varFloat",
084: "tns", "http://objectweb.org/type_test/types1");
085: floatElem.addTextNode("12.5");
086: elem.addChildElement(floatElem);
087: SOAPElement intElem = factory.createElement("varInt", "tns",
088: "http://objectweb.org/type_test/types1");
089: intElem.addTextNode("34");
090: elem.addChildElement(intElem);
091: SOAPElement stringElem = factory.createElement("varString",
092: "tns", "http://objectweb.org/type_test/types1");
093: stringElem.addTextNode("test string within any");
094: elem.addChildElement(stringElem);
095:
096: StructWithAnyStrict x = new StructWithAnyStrict();
097: x.setName("Name x");
098: x.setAddress("Some Address x");
099: x.setAny(elem);
100:
101: elem = factory.createElement("AnonTypeElementQualified", "tns",
102: "http://objectweb.org/type_test/types1");
103: elem.addNamespaceDeclaration("tns",
104: "http://objectweb.org/type_test/types1");
105: floatElem = factory.createElement("varFloat", "tns",
106: "http://objectweb.org/type_test/types1");
107: floatElem.addTextNode("12.76");
108: elem.addChildElement(floatElem);
109: intElem = factory.createElement("varInt", "tns",
110: "http://objectweb.org/type_test/types1");
111: intElem.addTextNode("56");
112: elem.addChildElement(intElem);
113: stringElem = factory.createElement("varString", "tns",
114: "http://objectweb.org/type_test/types1");
115: stringElem.addTextNode("test string");
116: elem.addChildElement(stringElem);
117:
118: StructWithAnyStrict yOrig = new StructWithAnyStrict();
119: yOrig.setName("Name y");
120: yOrig.setAddress("Some Address y");
121: yOrig.setAny(elem);
122:
123: Holder<StructWithAnyStrict> y = new Holder<StructWithAnyStrict>(
124: yOrig);
125: Holder<StructWithAnyStrict> z = new Holder<StructWithAnyStrict>();
126: StructWithAnyStrict ret = rpcClient.testStructWithAnyStrict(x,
127: y, z);
128: if (!perfTestOnly) {
129: assertEqualsStructWithAnyStrict(x, y.value);
130: assertEqualsStructWithAnyStrict(yOrig, z.value);
131: assertEqualsStructWithAnyStrict(x, ret);
132: }
133: }
134:
135: public void testStructWithAnyArrayLax() throws Exception {
136: SOAPFactory factory = SOAPFactory.newInstance();
137: SOAPElement elem = factory.createElement(
138: "StringElementQualified", "tns",
139: "http://objectweb.org/type_test/types1");
140: elem.addNamespaceDeclaration("tns",
141: "http://objectweb.org/type_test/types1");
142: elem.addTextNode("This is the text of the node");
143:
144: StructWithAnyArrayLax x = new StructWithAnyArrayLax();
145: x.setName("Name x");
146: x.setAddress("Some Address x");
147: x.getAny().add(elem);
148:
149: elem = factory.createElement("StringElementQualified", "tns",
150: "http://objectweb.org/type_test/types1");
151: elem.addNamespaceDeclaration("tns",
152: "http://objectweb.org/type_test/types1");
153: elem
154: .addTextNode("This is the text of the node for the second struct");
155:
156: StructWithAnyArrayLax yOrig = new StructWithAnyArrayLax();
157: yOrig.setName("Name y");
158: yOrig.setAddress("Some Other Address y");
159: yOrig.getAny().add(elem);
160:
161: Holder<StructWithAnyArrayLax> y = new Holder<StructWithAnyArrayLax>(
162: yOrig);
163: Holder<StructWithAnyArrayLax> z = new Holder<StructWithAnyArrayLax>();
164: StructWithAnyArrayLax ret = rpcClient
165: .testStructWithAnyArrayLax(x, y, z);
166: if (!perfTestOnly) {
167: assertEqualsStructWithAnyArrayLax(x, y.value);
168: assertEqualsStructWithAnyArrayLax(yOrig, z.value);
169: assertEqualsStructWithAnyArrayLax(x, ret);
170: }
171: }
172:
173: public void testStructWithAnyArrayLaxComplex() throws Exception {
174: SOAPFactory factory = SOAPFactory.newInstance();
175: SOAPElement elem = factory.createElement(
176: "AnonTypeElementQualified", "tns",
177: "http://objectweb.org/type_test/types1");
178: elem.addNamespaceDeclaration("tns",
179: "http://objectweb.org/type_test/types1");
180: SOAPElement floatElem = factory.createElement("varFloat",
181: "tns", "http://objectweb.org/type_test/types1");
182: floatElem.addTextNode("12.76");
183: elem.addChildElement(floatElem);
184: SOAPElement intElem = factory.createElement("varInt", "tns",
185: "http://objectweb.org/type_test/types1");
186: intElem.addTextNode("56");
187: elem.addChildElement(intElem);
188: SOAPElement stringElem = factory.createElement("varString",
189: "tns", "http://objectweb.org/type_test/types1");
190: stringElem.addTextNode("test string");
191: elem.addChildElement(stringElem);
192:
193: StructWithAnyArrayLax x = new StructWithAnyArrayLax();
194: x.setName("Name x");
195: x.setAddress("Some Address x");
196: x.getAny().add(elem);
197: StructWithAnyArrayLax yOrig = new StructWithAnyArrayLax();
198: yOrig.setName("Name y");
199: yOrig.setAddress("Some Other Address y");
200: yOrig.getAny().add(elem);
201:
202: Holder<StructWithAnyArrayLax> y = new Holder<StructWithAnyArrayLax>(
203: yOrig);
204: Holder<StructWithAnyArrayLax> z = new Holder<StructWithAnyArrayLax>();
205: StructWithAnyArrayLax ret = rpcClient
206: .testStructWithAnyArrayLax(x, y, z);
207: if (!perfTestOnly) {
208: assertEqualsStructWithAnyArrayLax(x, y.value);
209: assertEqualsStructWithAnyArrayLax(yOrig, z.value);
210: assertEqualsStructWithAnyArrayLax(x, ret);
211: }
212: }
213:
214: public void assertEqualsStructWithAnyStrict(StructWithAnyStrict a,
215: StructWithAnyStrict b) throws Exception {
216: assertEquals("StructWithAnyStrict names don't match", a
217: .getName(), b.getName());
218: assertEquals("StructWithAnyStrict addresses don't match", a
219: .getAddress(), b.getAddress());
220: if (a.getAny() instanceof SOAPElement
221: && b.getAny() instanceof SOAPElement) {
222: assertEquals((SOAPElement) a.getAny(), (SOAPElement) b
223: .getAny());
224: }
225: }
226:
227: public void assertEqualsStructWithAnyArrayLax(
228: StructWithAnyArrayLax a, StructWithAnyArrayLax b)
229: throws Exception {
230: assertEquals("StructWithAnyArrayLax names don't match", a
231: .getName(), b.getName());
232: assertEquals("StructWithAnyArrayLax addresses don't match", a
233: .getAddress(), b.getAddress());
234:
235: List<Object> ae = a.getAny();
236: List<Object> be = b.getAny();
237: assertEquals(
238: "StructWithAnyArrayLax soap element lengths don't match",
239: ae.size(), be.size());
240: for (int i = 0; i < ae.size(); i++) {
241: if (ae.get(i) instanceof SOAPElement
242: && be.get(i) instanceof SOAPElement) {
243: assertEquals(ae.get(i), be.get(i));
244: }
245: }
246: }
247: }
|