KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > bindings > xml > XMLBindingImplBareTest


1 package org.objectweb.celtix.bus.bindings.xml;
2
3 import java.io.*;
4 import java.net.*;
5 import java.util.*;
6 import javax.wsdl.Binding;
7 import javax.wsdl.BindingInput;
8 import javax.wsdl.BindingOperation;
9 import javax.wsdl.Definition;
10 import javax.wsdl.Port;
11 import javax.xml.namespace.QName JavaDoc;
12
13 import org.w3c.dom.*;
14
15 import junit.framework.TestCase;
16
17 import org.objectweb.celtix.Bus;
18 import org.objectweb.celtix.bindings.DataBindingCallback;
19 import org.objectweb.celtix.bindings.xmlformat.TBody;
20 import org.objectweb.celtix.bus.jaxws.JAXBDataBindingCallback;
21 import org.objectweb.celtix.context.GenericMessageContext;
22 import org.objectweb.celtix.context.ObjectMessageContext;
23 import org.objectweb.celtix.context.ObjectMessageContextImpl;
24 import org.objectweb.celtix.helpers.XMLUtils;
25 import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
26 import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
27 import org.objectweb.hello_world_xml_http.bare.Greeter;
28
29 public class XMLBindingImplBareTest extends TestCase {
30     private XMLBindingImpl binding;
31     private ObjectMessageContextImpl objContext;
32     private XMLMessageContextImpl xmlContext;
33     private XMLUtils xmlUtils;
34     private TestUtils testUtils;
35     
36     public XMLBindingImplBareTest(String JavaDoc arg0) {
37         super(arg0);
38     }
39
40     public static void main(String JavaDoc[] args) {
41         junit.textui.TestRunner.run(XMLBindingImplTest.class);
42     }
43
44     protected void setUp() throws Exception JavaDoc {
45         super.setUp();
46         
47         xmlUtils = new XMLUtils();
48         testUtils = new TestUtils();
49         binding = new XMLBindingImpl(false);
50         objContext = new ObjectMessageContextImpl();
51         xmlContext = new XMLMessageContextImpl(new GenericMessageContext());
52         
53         objContext.setMethod(ClassUtils.getMethod(Greeter.class, "greetMe"));
54     }
55     
56     public void testBindingReference() throws Exception JavaDoc {
57         Bus bus = Bus.init();
58         binding = getBindingImpl(bus, testUtils.getEndpointReference());
59         
60         bus = binding.getBus();
61         assertNotNull(bus);
62         EndpointReferenceType reference = binding.getEndpointReference();
63         assertNotNull(reference);
64
65         // test wsdl definition from the endpoint reference
66
Definition wsdlDef = EndpointReferenceUtils.getWSDLDefinition(bus.getWSDLManager(), reference);
67         assertNotNull(wsdlDef);
68         QName JavaDoc wsdlName = new QName JavaDoc("http://objectweb.org/hello_world_xml_http/bare", "HelloWorld");
69         assertEquals(wsdlDef.getQName(), wsdlName);
70         
71         Port port = EndpointReferenceUtils.getPort(bus.getWSDLManager(), reference);
72         assertNotNull(port);
73         Binding b = port.getBinding();
74         assertNotNull(b);
75         BindingOperation operation = b.getBindingOperation("sayHi", "sayHiRequest", "sayHiResponse");
76         assertNotNull(operation);
77         BindingInput input = operation.getBindingInput();
78         assertNotNull(input);
79         
80         TBody xmlBinding = null;
81         Iterator ite = input.getExtensibilityElements().iterator();
82         while (ite.hasNext()) {
83             Object JavaDoc obj = ite.next();
84             if (obj instanceof TBody) {
85                 xmlBinding = (TBody)obj;
86             }
87         }
88         assertNotNull(xmlBinding);
89         assertEquals(new QName JavaDoc("http://objectweb.org/hello_world_xml_http/bare", "sayHi"),
90                      xmlBinding.getRootNode());
91     }
92
93     // Test greetMe which has one part in message
94
public void testMarshalBareWithoutRootNode() throws Exception JavaDoc {
95         Bus bus = Bus.init();
96         binding = getBindingImpl(bus, testUtils.getEndpointReference());
97         
98         xmlContext.put(ObjectMessageContext.MESSAGE_INPUT, false);
99         String JavaDoc arg0 = new String JavaDoc("TestXMLInputMessage");
100         objContext.setMessageObjects(arg0);
101
102         binding.marshal(objContext,
103                         xmlContext,
104                         new JAXBDataBindingCallback(objContext.getMethod(),
105                                                     DataBindingCallback.Mode.PARTS,
106                                                     null));
107         XMLMessage msg = xmlContext.getMessage();
108         assertNotNull(msg);
109
110         InputStream is = getClass().getResourceAsStream("resources/GreetMeBareReq.xml");
111         Document expectDOM = xmlUtils.parse(is);
112         Document resultDOM = msg.getRoot();
113
114         is.close();
115         assertTrue(expectDOM.isEqualNode(resultDOM));
116     }
117
118     // Test sayHi which has no parameter to passed in
119
public void testMarshalBareWithRootNode() throws Exception JavaDoc {
120         Bus bus = Bus.init();
121
122         binding = getBindingImpl(bus, testUtils.getEndpointReference());
123
124         objContext.setMethod(ClassUtils.getMethod(Greeter.class, "sayHi"));
125         xmlContext.put(ObjectMessageContext.MESSAGE_INPUT, false);
126         String JavaDoc arg0 = new String JavaDoc("TestXMLInputMessage");
127         objContext.setMessageObjects(arg0);
128
129         binding.marshal(objContext,
130                         xmlContext,
131                         new JAXBDataBindingCallback(objContext.getMethod(),
132                                                     DataBindingCallback.Mode.PARTS,
133                                                     null));
134
135         XMLMessage msg = xmlContext.getMessage();
136         assertNotNull(msg);
137         
138         InputStream is = getClass().getResourceAsStream("resources/SayHiBareReq.xml");
139         Document expectDOM = xmlUtils.parse(is);
140         Document resultDOM = msg.getRoot();
141         is.close();
142         
143         assertNotNull(expectDOM);
144         assertNotNull(resultDOM);
145         
146         String JavaDoc expect = xmlUtils.toString(expectDOM);
147         String JavaDoc result = xmlUtils.toString(resultDOM);
148         assertTrue(expect.equals(result));
149     }
150
151     // Test the greetMe Operation in message
152
public void testUnmarshalBareInputMessage() throws Exception JavaDoc {
153         xmlContext.put(ObjectMessageContext.MESSAGE_INPUT, false);
154         InputStream in = getClass().getResourceAsStream("resources/GreetMeBareReq.xml");
155         assertNotNull(binding.getMessageFactory());
156         XMLMessage xmlMessage = binding.getMessageFactory().createMessage(in);
157         xmlContext.setMessage(xmlMessage);
158
159         String JavaDoc data = new String JavaDoc("TestXMLInputMessage");
160
161         //testDocLitBare method has a IN parameter
162
objContext.setMethod(ClassUtils.getMethod(Greeter.class, "greetMe"));
163         objContext.setMessageObjects(new Object JavaDoc[1]);
164         binding.unmarshal(xmlContext, objContext,
165                           new JAXBDataBindingCallback(objContext.getMethod(),
166                                                       DataBindingCallback.Mode.PARTS,
167                                                       null));
168         
169         Object JavaDoc[] params = objContext.getMessageObjects();
170         assertNotNull(params);
171         assertNull(objContext.getReturn());
172         assertEquals(1, params.length);
173         assertEquals(data, (String JavaDoc)params[0]);
174     }
175
176     // Test the greetMe Operation out message
177
public void testUnmarshalBareOutputMessage() throws Exception JavaDoc {
178         xmlContext.put(ObjectMessageContext.MESSAGE_INPUT, true);
179         InputStream in = getClass().getResourceAsStream("resources/GreetMeBareResp.xml");
180         assertNotNull(binding.getMessageFactory());
181         XMLMessage xmlMessage = binding.getMessageFactory().createMessage(in);
182         xmlContext.setMessage(xmlMessage);
183
184         //testDocLitBare method has a IN parameter
185
objContext.setMethod(ClassUtils.getMethod(Greeter.class, "greetMe"));
186         objContext.setMessageObjects(new Object JavaDoc[1]);
187         binding.unmarshal(xmlContext, objContext,
188                           new JAXBDataBindingCallback(objContext.getMethod(),
189                                                       DataBindingCallback.Mode.PARTS,
190                                                       null));
191         
192         Object JavaDoc[] params = objContext.getMessageObjects();
193         assertNotNull(params);
194         assertNotNull(objContext.getReturn());
195         assertEquals("TestXMLOutputMessage", (String JavaDoc)objContext.getReturn());
196     }
197
198     private XMLBindingImpl getBindingImpl(Bus bus, EndpointReferenceType ref) {
199         return new XMLBindingImpl(bus, ref, false);
200     }
201 }
202
Popular Tags