1 package org.controlhaus.xfire.client;
2
3 import org.apache.beehive.controls.api.bean.Control;
4 import org.apache.beehive.controls.api.events.EventHandler;
5 import org.apache.xmlbeans.XmlObject;
6 import org.codehaus.xfire.fault.XFireFault;
7 import org.controlhaus.xfire.client.XFireClientControl.Encoding;
8 import org.controlhaus.xfire.client.XFireClientControl.ServiceUrl;
9
10 /***
11 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
12 * @since Nov 5, 2004
13 */
14 public class XFireClientControlTest
15 extends AbstractControlTest
16 {
17 @Encoding("ENC")
18 @ServiceUrl("http://soap.amazon.com/onca/soap?Service=AWSECommerceService")
19 @Control XFireClientControl client;
20
21 @ServiceUrl("http://soap.amazon.com/onca/soap?Service=AWSECommerceService")
22 @Control XFireClientControl noEncClient;
23
24 private boolean receivedResponse = false;
25 private XmlObject[] response;
26
27 public void testProperties()
28 throws Exception
29 {
30 assertNotNull(client);
31
32 XFireClientControlBean bean = (XFireClientControlBean) client;
33 assertEquals("ENC", bean.getEncodingValue());
34 assertEquals("http://soap.amazon.com/onca/soap?Service=AWSECommerceService", bean.getServiceUrlValue());
35
36 assertNotNull(noEncClient);
37
38 bean = (XFireClientControlBean) noEncClient;
39 assertEquals("UTF-8", bean.getEncodingValue());
40 assertEquals("http://soap.amazon.com/onca/soap?Service=AWSECommerceService",
41 bean.getServiceUrlValue());
42 }
43
44 public void testInvoke()
45 throws Exception
46 {
47 assertNotNull(client);
48
49 XmlObject request = XmlObject.Factory.parse( getClass().getResourceAsStream("amazon.xml") );
50
51 response = client.invoke( new XmlObject[] { request } );
52 assertNotNull(response);
53 assertEquals(1, response.length);
54 assertEquals("ItemLookupResponse", response[0].getDomNode().getFirstChild().getLocalName());
55 }
56
57 public void testAsyncInvoke()
58 throws Exception
59 {
60 assertNotNull(client);
61
62 XmlObject request = XmlObject.Factory.parse( getClass().getResourceAsStream("amazon.xml") );
63
64 client.beginInvoke( new XmlObject[] { request }, null );
65
66 for ( int i = 0; i < 60; i++ )
67 {
68 if ( !receivedResponse )
69 wait(500);
70 else
71 break;
72 }
73
74 if ( !receivedResponse )
75 fail("Didn't receive async response.");
76
77 assertNotNull(response);
78 assertEquals(1, response.length);
79 assertEquals("ItemLookupResponse", response[0].getDomNode().getFirstChild().getLocalName());
80 }
81
82 @EventHandler(field="client",eventSet=XFireClientControl.EndInvokeCallback.class,eventName="endInvoke")
83 public void endInvoke( XmlObject[] response, XmlObject[] responseHeaders )
84 {
85 receivedResponse = true;
86 this.response = response;
87 }
88
89 @EventHandler(field="client",eventSet=XFireClientControl.EndInvokeCallback.class,eventName="handleFault")
90 public void handleFault( XFireFault fault )
91 {
92 receivedResponse = true;
93 }
94 }