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 }