KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > docStyle > NWBankTest


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2002 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "WSIF" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 2001, 2002, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package docStyle;
59
60 import http.net.pointwsp.www.ws.finance.ArrayOfCurrency;
61 import http.net.pointwsp.www.ws.finance.Currency;
62 import http.net.pointwsp.www.ws.finance.Currencyrates;
63 import java.io.StringReader JavaDoc;
64 import java.io.StringWriter JavaDoc;
65
66 import junit.framework.Test;
67 import junit.framework.TestCase;
68 import junit.framework.TestSuite;
69
70 import org.apache.wsif.WSIFConstants;
71 import org.apache.wsif.WSIFMessage;
72 import org.apache.wsif.WSIFOperation;
73 import org.apache.wsif.WSIFPort;
74 import org.apache.wsif.WSIFService;
75 import org.apache.wsif.WSIFServiceFactory;
76 import org.apache.xerces.parsers.DOMParser;
77 import org.apache.xml.serialize.OutputFormat;
78 import org.apache.xml.serialize.XMLSerializer;
79 import org.w3c.dom.Element JavaDoc;
80 import org.xml.sax.InputSource JavaDoc;
81 import util.TestUtilities;
82
83 import docStyle.wsifservice.PwspNoCentrbankCurRatesSoap;
84
85 /**
86  * Junit test to test out the AXIS provider docstyle support.
87  * Uses the norwegian central bank daily rates service
88  * (this has no input parts and returns complex types)
89  */

90 public class NWBankTest extends TestCase {
91     String JavaDoc wsdlLocation =
92         TestUtilities.getWsdlPath("java\\test\\docStyle\\wsifservice")
93             + "nwBank.wsdl";
94 // + "nwBankLocal.wsdl";
95

96     public NWBankTest(String JavaDoc name) {
97         super(name);
98     }
99
100     public static void main(String JavaDoc[] args) {
101         TestUtilities.startListeners(
102             TestUtilities.ADDRESSBOOK_LISTENER
103                 | TestUtilities.ASYNC_LISTENER
104                 | TestUtilities.NATIVEJMS_LISTENER);
105         junit.textui.TestRunner.run(suite());
106         TestUtilities.stopListeners();
107     }
108
109     public static Test suite() {
110         return new TestSuite(NWBankTest.class);
111     }
112
113     public void setUp() {
114         TestUtilities.setUpExtensionsAndProviders();
115     }
116
117     public void testDynamicAxis() {
118         doitDyn("pwspNoCentrbankCurRatesSoap", "axis");
119     }
120
121     public void testStubsAxis() {
122         doitStub("pwspNoCentrbankCurRatesSoap", "axis");
123     }
124
125     public void testMessagingAxis() {
126         doitMessaging("pwspNoCentrbankCurRatesSoap", "axis");
127     }
128
129     public void testDynJMS() {
130         doitDyn("pwspNoCentrbankCurRatesSoapJMS", "axis");
131     }
132
133     public void testStubsAxisJMS() {
134         doitStub("pwspNoCentrbankCurRatesSoapJMS", "axis");
135     }
136
137     private void doitDyn(String JavaDoc portName, String JavaDoc protocol) {
138         if (portName.toUpperCase().indexOf("JMS") != -1
139             && !TestUtilities.areWeTesting("jms"))
140             return;
141
142         TestUtilities.setProviderForProtocol(protocol);
143
144         try {
145             WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
146             WSIFService service =
147                 factory.getService(
148                     wsdlLocation,
149                     null,
150                     null,
151                     "http/www.pointwsp.net/ws/finance",
152                     "pwspNoCentrbankCurRatesSoap");
153
154             service.mapType(
155                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "currencyrates"),
156                Currencyrates.class );
157
158             service.mapType(
159                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "ArrayOfCurrency"),
160                ArrayOfCurrency.class);
161
162             service.mapType(
163                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "currency"),
164                Currency.class);
165
166             // force to use a 'wrapped' type operation
167
WSIFMessage context = service.getContext();
168             context.setObjectPart(WSIFConstants.CONTEXT_OPERATION_STYLE, WSIFConstants.CONTEXT_OPERATION_STYLE_WRAPPED);
169             service.setContext(context);
170
171             WSIFPort port = service.getPort(portName);
172
173             WSIFOperation operation = port.createOperation("GetRatesXML");
174
175             WSIFMessage inMsg = operation.createInputMessage();
176             WSIFMessage outMsg = operation.createOutputMessage();
177             WSIFMessage faultMsg = operation.createFaultMessage();
178             
179             boolean ok =
180                 operation.executeRequestResponseOperation(
181                     inMsg,
182                     outMsg,
183                     faultMsg);
184
185             assertTrue("operation returned false!!", ok);
186             Object JavaDoc o = outMsg.getObjectPart("GetRatesXMLResult");
187             assertTrue("unexpected result: " + o, o instanceof Currencyrates);
188           
189 // Currencyrates cr = (Currencyrates) o;
190
// System.out.println("source=" + cr.getSource());
191

192         } catch (Exception JavaDoc ex) {
193             ex.printStackTrace();
194             assertTrue(
195                 "AddressBookTest("
196                     + portName
197                     + ") caught exception "
198                     + ex.getLocalizedMessage(),
199                 false);
200         }
201     }
202
203     private void doitStub(String JavaDoc portName, String JavaDoc protocol) {
204         if (portName.toUpperCase().indexOf("JMS") != -1
205             && !TestUtilities.areWeTesting("jms"))
206             return;
207
208         TestUtilities.setProviderForProtocol(protocol);
209
210         try {
211             WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
212             WSIFService service =
213                 factory.getService(
214                     wsdlLocation,
215                     null,
216                     null,
217                     "http/www.pointwsp.net/ws/finance",
218                     "pwspNoCentrbankCurRatesSoap");
219
220             // force to use a 'wrapped' type operation
221
WSIFMessage context = service.getContext();
222             context.setObjectPart(WSIFConstants.CONTEXT_OPERATION_STYLE, WSIFConstants.CONTEXT_OPERATION_STYLE_WRAPPED);
223             service.setContext(context);
224
225             PwspNoCentrbankCurRatesSoap stub = (PwspNoCentrbankCurRatesSoap) service.getStub(portName, PwspNoCentrbankCurRatesSoap.class);
226
227             Object JavaDoc o = stub.GetRatesXML();
228             assertTrue("unexpected result: " + o, o instanceof Currencyrates);
229 // Currencyrates cr = (Currencyrates) o;
230
// System.out.println("source=" + cr.getSource());
231

232         } catch (Exception JavaDoc ex) {
233             ex.printStackTrace();
234             assertTrue(
235                 "AddressBookTest("
236                     + portName
237                     + ") caught exception "
238                     + ex.getLocalizedMessage(),
239                 false);
240         }
241     }
242
243     private void doitMessaging(String JavaDoc portName, String JavaDoc protocol) {
244         if (portName.toUpperCase().indexOf("JMS") != -1
245             && !TestUtilities.areWeTesting("jms"))
246             return;
247
248         TestUtilities.setProviderForProtocol(protocol);
249
250         try {
251             WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
252             WSIFService service =
253                 factory.getService(
254                     wsdlLocation,
255                     null,
256                     null,
257                     "http/www.pointwsp.net/ws/finance",
258                     "pwspNoCentrbankCurRatesSoap");
259
260             service.mapType(
261                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "currencyrates"),
262                Currencyrates.class );
263
264             service.mapType(
265                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "ArrayOfCurrency"),
266                ArrayOfCurrency.class);
267
268             service.mapType(
269                new javax.xml.namespace.QName JavaDoc("http/www.pointwsp.net/ws/finance", "currency"),
270                Currency.class);
271
272             WSIFPort port = service.getPort(portName);
273
274             WSIFOperation operation = port.createOperation("GetRatesXML");
275
276             WSIFMessage inMsg = operation.createInputMessage();
277             WSIFMessage outMsg = operation.createOutputMessage();
278             WSIFMessage faultMsg = operation.createFaultMessage();
279             
280             String JavaDoc inputDocument =
281                 "<GetRatesXML xmlns=\"http/www.pointwsp.net/ws/finance\"/>";
282
283             DOMParser parser = new DOMParser();
284             String JavaDoc xmlString = "<?xml version=\"1.0\"?>\n" + inputDocument;
285             parser.parse(new InputSource JavaDoc(new StringReader JavaDoc(xmlString)));
286             Element JavaDoc element = parser.getDocument().getDocumentElement();
287             //printElement(element);
288

289             inMsg.setObjectPart("parameters", element);
290             
291             boolean ok =
292                 operation.executeRequestResponseOperation(
293                     inMsg,
294                     outMsg,
295                     faultMsg);
296
297             assertTrue("operation returned false!!", ok);
298
299             Element JavaDoc responseElement =
300                 (Element JavaDoc) outMsg.getObjectPart("parameters");
301             //printElement(responseElement);
302
assertTrue("return element is null!!", responseElement != null);
303
304
305         } catch (Exception JavaDoc ex) {
306             ex.printStackTrace();
307             assertTrue(
308                 "AddressBookTest("
309                     + portName
310                     + ") caught exception "
311                     + ex.getLocalizedMessage(),
312                 false);
313         }
314     }
315
316     private void printElement(Element JavaDoc e) throws Exception JavaDoc {
317         OutputFormat of = new OutputFormat(e.getOwnerDocument(), "UTF-8", true);
318         XMLSerializer xmls = new XMLSerializer(of);
319         StringWriter JavaDoc sw = new StringWriter JavaDoc();
320         xmls.setOutputCharStream(sw);
321         xmls.serialize(e);
322         System.err.println("element=" + sw.toString());
323     }
324 }
325
Popular Tags