KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > systest > jms > JMSClientServerTest


1 package org.objectweb.celtix.systest.jms;
2
3 import java.lang.reflect.InvocationHandler JavaDoc;
4 import java.lang.reflect.Proxy JavaDoc;
5 import java.lang.reflect.UndeclaredThrowableException JavaDoc;
6 import java.net.URL JavaDoc;
7 import java.util.HashMap JavaDoc;
8 import java.util.Map JavaDoc;
9
10 import javax.xml.namespace.QName JavaDoc;
11 import javax.xml.ws.BindingProvider;
12
13 import junit.framework.Test;
14 import junit.framework.TestSuite;
15
16 import org.objectweb.celtix.bus.transports.jms.JMSConstants;
17 import org.objectweb.celtix.hello_world_jms.HelloWorldOneWayPort;
18 import org.objectweb.celtix.hello_world_jms.HelloWorldOneWayQueueService;
19 import org.objectweb.celtix.hello_world_jms.HelloWorldPortType;
20 import org.objectweb.celtix.hello_world_jms.HelloWorldPubSubPort;
21 import org.objectweb.celtix.hello_world_jms.HelloWorldPubSubService;
22 import org.objectweb.celtix.hello_world_jms.HelloWorldService;
23 import org.objectweb.celtix.systest.common.ClientServerSetupBase;
24 import org.objectweb.celtix.systest.common.ClientServerTestBase;
25 import org.objectweb.celtix.transports.jms.context.JMSMessageHeadersType;
26 import org.objectweb.celtix.transports.jms.context.JMSPropertyType;
27
28 public class JMSClientServerTest extends ClientServerTestBase {
29
30     private QName JavaDoc serviceName;
31     private QName JavaDoc portName;
32
33     public static Test suite() throws Exception JavaDoc {
34         TestSuite suite = new TestSuite(JMSClientServerTest.class);
35         return new ClientServerSetupBase(suite) {
36             public void startServers() throws Exception JavaDoc {
37                 Map JavaDoc<String JavaDoc, String JavaDoc> props = new HashMap JavaDoc<String JavaDoc, String JavaDoc>();
38                 if (System.getProperty("activemq.store.dir") != null) {
39                     props.put("activemq.store.dir", System.getProperty("activemq.store.dir"));
40                 }
41                 props.put("java.util.logging.config.file",
42                           System.getProperty("java.util.logging.config.file"));
43                 
44                 assertTrue("server did not launch correctly",
45                            launchServer(EmbeddedJMSBrokerLauncher.class, props, null));
46
47                 assertTrue("server did not launch correctly",
48                            launchServer(Server.class, false));
49             }
50         };
51     }
52
53     public void testBasicConnection() throws Exception JavaDoc {
54         serviceName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
55                                  "HelloWorldService");
56         portName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms", "HelloWorldPort");
57         URL JavaDoc wsdl = getClass().getResource("/wsdl/jms_test.wsdl");
58         assertNotNull(wsdl);
59
60         HelloWorldService service = new HelloWorldService(wsdl, serviceName);
61         assertNotNull(service);
62
63         String JavaDoc response1 = new String JavaDoc("Hello Milestone-");
64         String JavaDoc response2 = new String JavaDoc("Bonjour");
65         try {
66             HelloWorldPortType greeter = service.getPort(portName, HelloWorldPortType.class);
67             for (int idx = 0; idx < 5; idx++) {
68                 String JavaDoc greeting = greeter.greetMe("Milestone-" + idx);
69                 assertNotNull("no response received from service", greeting);
70                 String JavaDoc exResponse = response1 + idx;
71                 assertEquals(exResponse, greeting);
72
73                 String JavaDoc reply = greeter.sayHi();
74                 assertNotNull("no response received from service", reply);
75                 assertEquals(response2, reply);
76             }
77         } catch (UndeclaredThrowableException JavaDoc ex) {
78             throw (Exception JavaDoc)ex.getCause();
79         }
80     }
81     
82     public void testOneWayTopicConnection() throws Exception JavaDoc {
83         serviceName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
84                                  "HelloWorldPubSubService");
85         portName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
86                              "HelloWorldPubSubPort");
87         URL JavaDoc wsdl = getClass().getResource("/wsdl/jms_test.wsdl");
88         assertNotNull(wsdl);
89
90         HelloWorldPubSubService service = new HelloWorldPubSubService(wsdl, serviceName);
91         assertNotNull(service);
92
93         try {
94             HelloWorldPubSubPort greeter = service.getPort(portName, HelloWorldPubSubPort.class);
95             for (int idx = 0; idx < 5; idx++) {
96                 greeter.greetMeOneWay("JMS:PubSub:Milestone-" + idx);
97             }
98             //Give some time to complete one-way calls.
99
Thread.sleep(100L);
100         } catch (UndeclaredThrowableException JavaDoc ex) {
101             throw (Exception JavaDoc)ex.getCause();
102         }
103     }
104     
105     public void testOneWayQueueConnection() throws Exception JavaDoc {
106         serviceName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
107                                  "HelloWorldOneWayQueueService");
108         portName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
109                              "HelloWorldOneWayPort");
110         URL JavaDoc wsdl = getClass().getResource("/wsdl/jms_test.wsdl");
111         assertNotNull(wsdl);
112
113         HelloWorldOneWayQueueService service = new HelloWorldOneWayQueueService(wsdl, serviceName);
114         assertNotNull(service);
115
116         try {
117             HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class);
118             for (int idx = 0; idx < 5; idx++) {
119                 greeter.greetMeOneWay("JMS:Queue:Milestone-" + idx);
120             }
121             //Give some time to complete one-way calls.
122
Thread.sleep(100L);
123         } catch (UndeclaredThrowableException JavaDoc ex) {
124             throw (Exception JavaDoc)ex.getCause();
125         }
126     }
127     
128     public void testContextPropogation() throws Exception JavaDoc {
129         serviceName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms",
130                                  "HelloWorldService");
131         portName = new QName JavaDoc("http://celtix.objectweb.org/hello_world_jms", "HelloWorldPort");
132         URL JavaDoc wsdl = getClass().getResource("/wsdl/jms_test.wsdl");
133         assertNotNull(wsdl);
134
135         HelloWorldService service = new HelloWorldService(wsdl, serviceName);
136         assertNotNull(service);
137
138         try {
139             HelloWorldPortType greeter = service.getPort(portName, HelloWorldPortType.class);
140             InvocationHandler JavaDoc handler = Proxy.getInvocationHandler(greeter);
141             BindingProvider bp = null;
142             
143             if (handler instanceof BindingProvider) {
144                 bp = (BindingProvider)handler;
145                 //System.out.println(bp.toString());
146
Map JavaDoc<String JavaDoc, Object JavaDoc> requestContext = bp.getRequestContext();
147                 JMSMessageHeadersType requestHeader = new JMSMessageHeadersType();
148                 requestHeader.setJMSCorrelationID("JMS_SAMPLE_CORRELATION_ID");
149                 requestHeader.setJMSExpiration(3600000L);
150                 JMSPropertyType propType = new JMSPropertyType();
151                 propType.setName("Test.Prop");
152                 propType.setValue("mustReturn");
153                 requestHeader.getProperty().add(propType);
154                 requestContext.put(JMSConstants.JMS_CLIENT_REQUEST_HEADERS, requestHeader);
155             }
156  
157             String JavaDoc greeting = greeter.greetMe("Milestone-");
158             assertNotNull("no response received from service", greeting);
159
160             assertEquals("Hello Milestone-", greeting);
161
162             if (bp != null) {
163                 Map JavaDoc<String JavaDoc, Object JavaDoc> responseContext = bp.getResponseContext();
164                 JMSMessageHeadersType responseHdr =
165                      (JMSMessageHeadersType)responseContext.get(JMSConstants.JMS_CLIENT_RESPONSE_HEADERS);
166                 if (responseHdr == null) {
167                     fail("response Header should not be null");
168                 }
169                 
170                 assertTrue("CORRELATION ID should match :",
171                            "JMS_SAMPLE_CORRELATION_ID".equals(responseHdr.getJMSCorrelationID()));
172                 assertTrue("response Headers must conain the app specific property set by request context.",
173                            responseHdr.getProperty() != null);
174             }
175         } catch (UndeclaredThrowableException JavaDoc ex) {
176             throw (Exception JavaDoc)ex.getCause();
177         }
178     }
179     
180     
181     public static void main(String JavaDoc[] args) {
182         junit.textui.TestRunner.run(JMSClientServerTest.class);
183     }
184 }
185
Popular Tags