1 package org.controlhaus.amazon;
2
3 import java.io.File;
4 import java.lang.reflect.Method;
5
6 import org.apache.beehive.controls.api.bean.Control;
7 import org.apache.beehive.controls.api.context.ControlBeanContext;
8 import org.apache.beehive.controls.runtime.bean.ControlContainerContext;
9 import org.apache.beehive.controls.api.events.EventHandler;
10 import org.apache.xmlbeans.XmlObject;
11 import org.codehaus.xfire.fault.XFireFault;
12 import org.controlhaus.amazon.AmazonClientControl;
13 import org.controlhaus.xfire.client.XFireClientControl;
14
15 import com.amazon.webservices.awseCommerceService.x20041019.ItemLookupDocument;
16 import com.amazon.webservices.awseCommerceService.x20041019.ItemLookupRequest;
17 import com.amazon.webservices.awseCommerceService.x20041019.ItemLookupResponseDocument;
18 import com.amazon.webservices.awseCommerceService.x20041019.ItemLookupDocument.ItemLookup;
19 import com.amazon.webservices.awseCommerceService.x20041019.ItemsDocument.Items;
20
21 import junit.framework.TestCase;
22
23 /***
24 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
25 * @since Nov 2, 2004
26 */
27 public class AmazonClientTest
28 extends AbstractControlTest
29 {
30 @Control AmazonClientControl amazon;
31
32 private boolean receivedResponse;
33 private ItemLookupResponseDocument response;
34
35 public void testControl()
36 throws Exception
37 {
38 assertNotNull(amazon);
39
40 ItemLookupDocument doc = ItemLookupDocument.Factory.newInstance();
41 ItemLookup lookup = doc.addNewItemLookup();
42 lookup.setAssociateTag("dandiephosblo-20");
43 lookup.setSubscriptionId("1E5AY4ZG53H4AMC8QH82");
44
45 ItemLookupRequest request = lookup.addNewRequest();
46 request.addItemId("0486411214");
47 request.setIdType(ItemLookupRequest.IdType.ASIN);
48
49 response = amazon.ItemLookup(doc);
50
51 Items[] itemsArr = response.getItemLookupResponse().getItemsArray();
52 assertEquals(1, itemsArr.length);
53 System.out.println(response.xmlText());
54 assertEquals("0486411214", itemsArr[0].getItemArray()[0].getASIN());
55 }
56
57 public void testAsyncControl()
58 throws Exception
59 {
60 assertNotNull(amazon);
61
62 ItemLookupDocument doc = ItemLookupDocument.Factory.newInstance();
63 ItemLookup lookup = doc.addNewItemLookup();
64 lookup.setAssociateTag("dandiephosblo-20");
65 lookup.setSubscriptionId("1E5AY4ZG53H4AMC8QH82");
66
67 ItemLookupRequest request = lookup.addNewRequest();
68 request.addItemId("0486411214");
69 request.setIdType(ItemLookupRequest.IdType.ASIN);
70
71 amazon.beginItemLookup(doc);
72
73 for ( int i = 0; i < 60; i++ )
74 {
75 if ( !receivedResponse )
76 wait(500);
77 else
78 break;
79 }
80
81 if ( !receivedResponse )
82 fail("Didn't receive async response.");
83
84 Items[] itemsArr = response.getItemLookupResponse().getItemsArray();
85 assertEquals(1, itemsArr.length);
86 System.out.println(response.xmlText());
87 assertEquals("0486411214", itemsArr[0].getItemArray()[0].getASIN());
88 }
89
90 @EventHandler(field="amazon",
91 eventSet=XFireClientControl.EndInvokeCallback.class,
92 eventName="endInvoke")
93 public void endInvoke( XmlObject[] response, XmlObject[] responseHeaders )
94 {
95 receivedResponse = true;
96 this.response = (ItemLookupResponseDocument) response[0];
97 }
98
99 @EventHandler(field="amazon",
100 eventSet=XFireClientControl.EndInvokeCallback.class,
101 eventName="handleFault")
102 public void handleFault( XFireFault fault )
103 {
104 receivedResponse = true;
105 }
106 }