KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > bindings > soap > SoapBindingImplHeaderTest


1 package org.objectweb.celtix.bus.bindings.soap;
2
3 import java.io.InputStream JavaDoc;
4 import java.lang.reflect.Method JavaDoc;
5
6 import javax.xml.soap.SOAPMessage JavaDoc;
7 import javax.xml.ws.Holder;
8
9 import org.w3c.dom.Element JavaDoc;
10 import org.w3c.dom.NodeList JavaDoc;
11 import org.w3c.dom.Text JavaDoc;
12
13 import junit.framework.TestCase;
14
15 import org.objectweb.celtix.bindings.DataBindingCallback;
16 import org.objectweb.celtix.bus.jaxws.JAXBDataBindingCallback;
17 import org.objectweb.celtix.context.ObjectMessageContext;
18 import org.objectweb.celtix.context.ObjectMessageContextImpl;
19 import org.objectweb.header_test.TestHeader;
20 import org.objectweb.header_test.types.TestHeader1;
21 import org.objectweb.header_test.types.TestHeader2Response;
22 import org.objectweb.header_test.types.TestHeader3;
23 import org.objectweb.header_test.types.TestHeader5;
24
25 public class SoapBindingImplHeaderTest extends TestCase {
26     private SOAPBindingImpl binding;
27     private ObjectMessageContextImpl objContext;
28     private SOAPMessageContextImpl soapContext;
29     public SoapBindingImplHeaderTest(String JavaDoc arg0) {
30         super(arg0);
31     }
32
33     public static void main(String JavaDoc[] args) {
34         junit.textui.TestRunner.run(SoapBindingImplHeaderTest.class);
35     }
36
37     protected void setUp() throws Exception JavaDoc {
38         super.setUp();
39
40         binding = new SOAPBindingImpl(false);
41         objContext = new ObjectMessageContextImpl();
42         soapContext = new SOAPMessageContextImpl(objContext);
43     }
44
45     public void testMarshalHeaderDocLitInputMessage() throws Exception JavaDoc {
46         //Test The InputMessage of testHeader1 Operation
47
soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false);
48         Method JavaDoc testHeader1 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader1");
49         assertNotNull(testHeader1);
50         objContext.setMethod(testHeader1);
51         Object JavaDoc arg = new TestHeader1();
52         objContext.setMessageObjects(arg, arg);
53
54         binding.marshal(
55                    objContext,
56                    soapContext,
57                    new JAXBDataBindingCallback(testHeader1,
58                                                DataBindingCallback.Mode.PARTS,
59                                                null));
60         SOAPMessage JavaDoc msg = soapContext.getMessage();
61         
62         assertNotNull(msg);
63         //Test the Header Part Only
64
assertNotNull(msg.getSOAPHeader());
65         assertTrue(msg.getSOAPHeader().hasChildNodes());
66         NodeList JavaDoc list = msg.getSOAPHeader().getChildNodes();
67         assertEquals(1, list.getLength());
68         Element JavaDoc headerElement = (Element JavaDoc)list.item(0);
69         assertEquals("true", headerElement
70                      .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(),
71                                      SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart()));
72         //TestHeader1 has no child elements.
73
assertFalse(headerElement.hasChildNodes());
74         
75         //TestHeader3 InOutHeader
76
Method JavaDoc testHeader3 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader3");
77         assertNotNull(testHeader3);
78         objContext.setMethod(testHeader3);
79         TestHeader3 arg0 = new TestHeader3();
80         TestHeader3 arg1 = new TestHeader3();
81         arg1.setRequestType("HeaderVal");
82         Object JavaDoc[] args = SOAPMessageUtil.getMessageObjects(testHeader3, arg0, arg1);
83         objContext.setMessageObjects(args);
84         //Write soap headers for testHeader3 operation - tests inout headers
85
binding.marshal(
86                    objContext,
87                    soapContext,
88                    new JAXBDataBindingCallback(testHeader3,
89                                                DataBindingCallback.Mode.PARTS,
90                                                null));
91
92         msg = soapContext.getMessage();
93         assertNotNull(msg);
94
95         //Test the Header Part Only
96
assertNotNull(msg.getSOAPHeader());
97         assertTrue(msg.getSOAPHeader().hasChildNodes());
98         list = msg.getSOAPHeader().getChildNodes();
99         assertEquals(1, list.getLength());
100         headerElement = (Element JavaDoc)list.item(0);
101         //TestHeader3 has no child elements
102
assertTrue(headerElement.hasChildNodes());
103         list = headerElement.getChildNodes();
104         assertEquals(1, list.getLength());
105         headerElement = (Element JavaDoc)list.item(0);
106         assertTrue(headerElement.hasChildNodes());
107         list = headerElement.getChildNodes();
108         assertEquals(1, list.getLength());
109         Text JavaDoc text = (Text JavaDoc)list.item(0);
110         assertEquals(arg1.getRequestType(), text.getData());
111     }
112   
113     public void testMarshalHeaderDocLitOutputMessage() throws Exception JavaDoc {
114         //Test The InputMessage of testHeader1 Operation
115
soapContext.put(ObjectMessageContext.MESSAGE_INPUT, true);
116         Method JavaDoc testHeader2 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader2");
117         assertNotNull(testHeader2);
118         objContext.setMethod(testHeader2);
119         TestHeader2Response arg0 = new TestHeader2Response();
120         arg0.setResponseType("BodyVal2");
121         TestHeader2Response arg1 = new TestHeader2Response();
122         arg1.setResponseType("HeaderVal2");
123         
124         Object JavaDoc[] args = SOAPMessageUtil.getMessageObjects(testHeader2, null, arg0, arg1);
125         objContext.setMessageObjects(args);
126         //Write the SOAP Headers for testHeader2 operation - tests out headers
127
binding.marshal(
128                    objContext,
129                    soapContext,
130                    new JAXBDataBindingCallback(testHeader2,
131                                                DataBindingCallback.Mode.PARTS,
132                                                null));
133
134         SOAPMessage JavaDoc msg = soapContext.getMessage();
135         assertNotNull(msg);
136
137         //Test the Header Part Only
138
assertNotNull(msg.getSOAPHeader());
139         assertTrue(msg.getSOAPHeader().hasChildNodes());
140         NodeList JavaDoc list = msg.getSOAPHeader().getChildNodes();
141         assertEquals(1, list.getLength());
142         Element JavaDoc headerElement = (Element JavaDoc)list.item(0);
143         //Check for mustUndrstand Attribute
144
assertEquals("true", headerElement
145                      .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(),
146                                      SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart()));
147         
148         //TestHeader3 has child elements.
149
assertTrue(headerElement.hasChildNodes());
150         list = headerElement.getChildNodes();
151         assertEquals(1, list.getLength());
152         assertEquals(arg1.getResponseType(), list.item(0).getFirstChild().getNodeValue());
153         
154         //TestHeader5 return Header
155
Method JavaDoc testHeader5 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader5");
156         assertNotNull(testHeader5);
157         objContext.setMethod(testHeader5);
158         
159         TestHeader5 arg2 = new TestHeader5();
160         arg2.setRequestType("HeaderVal5");
161         
162         objContext.setMessageObjects(new Object JavaDoc[0]);
163         objContext.setReturn(arg2);
164         //Write the SOAP Headers for testHeader5 operation - tests headers as return.
165
binding.marshal(
166                                      objContext,
167                                      soapContext,
168                                      new JAXBDataBindingCallback(testHeader5,
169                                                                  DataBindingCallback.Mode.PARTS,
170                                                                  null));
171
172         msg = soapContext.getMessage();
173         assertNotNull(msg);
174
175         //Test the Header Part Only
176
assertNotNull(msg.getSOAPHeader());
177         assertTrue(msg.getSOAPHeader().hasChildNodes());
178         list = msg.getSOAPHeader().getChildNodes();
179         assertEquals(1, list.getLength());
180         headerElement = (Element JavaDoc)list.item(0);
181         //Check for mustUndrstand Attribute
182
assertEquals("true", headerElement
183                      .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(),
184                                      SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart()));
185         
186         //TestHeader5 has child elements.
187
assertTrue(headerElement.hasChildNodes());
188         list = headerElement.getChildNodes();
189         assertEquals(1, list.getLength());
190         assertEquals(arg2.getRequestType(), list.item(0).getFirstChild().getNodeValue());
191         
192     }
193
194     public void testUnmarshalHeaderDocLitInputMessage() throws Exception JavaDoc {
195         
196         Method JavaDoc testHeader3 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader3");
197         assertNotNull(testHeader3);
198         objContext.setMethod(testHeader3);
199         objContext.setMessageObjects(SOAPMessageUtil.getMessageObjects(testHeader3));
200         
201         InputStream JavaDoc is = getClass().getResourceAsStream("resources/TestHeader3DocLitReq.xml");
202         assertNotNull(binding.getMessageFactory());
203         SOAPMessage JavaDoc headerMsg = binding.getMessageFactory().createMessage(null, is);
204         assertNotNull(headerMsg);
205         soapContext.setMessage(headerMsg);
206         soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false);
207         
208         //Test The InputMessage of testHeader3 Operation
209
binding.unmarshal(soapContext, objContext,
210                                  new JAXBDataBindingCallback(
211                                                              testHeader3,
212                                                              DataBindingCallback.Mode.PARTS,
213                                                              null));
214         
215         //Read the headers of testHeader3 Operation - tests inout headers
216
Object JavaDoc[] params = objContext.getMessageObjects();
217         assertNotNull(params);
218         assertNull(objContext.getReturn());
219         assertEquals(2, params.length);
220         assertTrue(params[1].getClass().isAssignableFrom(Holder.class));
221         Holder<?> holder = (Holder<?>)params[1];
222         assertNotNull(holder.value);
223         assertTrue(holder.value.getClass().isAssignableFrom(TestHeader3.class));
224         TestHeader3 header3 = (TestHeader3)holder.value;
225         assertNull(header3.getRequestType());
226     }
227     
228     public void testUnmarshalHeaderDocLitOutputMessage() throws Exception JavaDoc {
229         
230         Method JavaDoc testHeader2 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader2");
231         assertNotNull(testHeader2);
232         objContext.setMethod(testHeader2);
233         objContext.setMessageObjects(SOAPMessageUtil.getMessageObjects(testHeader2));
234         
235         InputStream JavaDoc is = getClass().getResourceAsStream("resources/TestHeader2DocLitResp.xml");
236         assertNotNull(binding.getMessageFactory());
237         SOAPMessage JavaDoc headerMsg = binding.getMessageFactory().createMessage(null, is);
238         soapContext.setMessage(headerMsg);
239         soapContext.put(ObjectMessageContext.MESSAGE_INPUT, true);
240         
241         binding.unmarshal(soapContext, objContext,
242                                  new JAXBDataBindingCallback(
243                                                              testHeader2,
244                                                              DataBindingCallback.Mode.PARTS,
245                                                              null));
246                 
247         //Read the SOAP Headers
248
Object JavaDoc[] params = objContext.getMessageObjects();
249         assertNotNull(params);
250         assertNull(objContext.getReturn());
251         assertEquals(3, params.length);
252         //Test the Header method paramaters
253
assertTrue(params[2].getClass().isAssignableFrom(Holder.class));
254         Holder<?> holder = (Holder<?>)params[2];
255         assertNotNull(holder.value);
256         assertTrue(holder.value.getClass().isAssignableFrom(TestHeader2Response.class));
257         TestHeader2Response header2 = (TestHeader2Response)holder.value;
258         assertEquals("HeaderVal2", header2.getResponseType());
259         
260         //test for return header using TestHeader5 operation
261
Method JavaDoc testHeader5 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader5");
262         assertNotNull(testHeader5);
263         objContext.setMethod(testHeader5);
264         objContext.setMessageObjects(SOAPMessageUtil.getMessageObjects(testHeader5));
265         
266         is = getClass().getResourceAsStream("resources/TestHeader5DocLitResp.xml");
267         headerMsg = binding.getMessageFactory().createMessage(null, is);
268         soapContext.setMessage(headerMsg);
269         
270         //Test The InputMessage of testHeader3 Operation
271
binding.unmarshal(soapContext, objContext,
272                                  new JAXBDataBindingCallback(testHeader5,
273                                                              DataBindingCallback.Mode.PARTS,
274                                                              null));
275
276         
277         params = objContext.getMessageObjects();
278         assertNotNull(params);
279         assertEquals(1, params.length);
280  
281         //Test the Header method paramaters
282
assertNotNull(objContext.getReturn());
283         TestHeader5 header5 = (TestHeader5)objContext.getReturn();
284         assertEquals("HeaderVal5", header5.getRequestType());
285         
286     }
287 }
288
Popular Tags