1 package org.objectweb.celtix.bus.bindings.soap; 2 3 import java.io.InputStream ; 4 import java.lang.reflect.Method ; 5 6 import javax.xml.soap.SOAPMessage ; 7 import javax.xml.ws.Holder; 8 9 import org.w3c.dom.Element ; 10 import org.w3c.dom.NodeList ; 11 import org.w3c.dom.Text ; 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 arg0) { 30 super(arg0); 31 } 32 33 public static void main(String [] args) { 34 junit.textui.TestRunner.run(SoapBindingImplHeaderTest.class); 35 } 36 37 protected void setUp() throws Exception { 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 { 46 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false); 48 Method testHeader1 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader1"); 49 assertNotNull(testHeader1); 50 objContext.setMethod(testHeader1); 51 Object 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 msg = soapContext.getMessage(); 61 62 assertNotNull(msg); 63 assertNotNull(msg.getSOAPHeader()); 65 assertTrue(msg.getSOAPHeader().hasChildNodes()); 66 NodeList list = msg.getSOAPHeader().getChildNodes(); 67 assertEquals(1, list.getLength()); 68 Element headerElement = (Element )list.item(0); 69 assertEquals("true", headerElement 70 .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(), 71 SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart())); 72 assertFalse(headerElement.hasChildNodes()); 74 75 Method 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 [] args = SOAPMessageUtil.getMessageObjects(testHeader3, arg0, arg1); 83 objContext.setMessageObjects(args); 84 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 assertNotNull(msg.getSOAPHeader()); 97 assertTrue(msg.getSOAPHeader().hasChildNodes()); 98 list = msg.getSOAPHeader().getChildNodes(); 99 assertEquals(1, list.getLength()); 100 headerElement = (Element )list.item(0); 101 assertTrue(headerElement.hasChildNodes()); 103 list = headerElement.getChildNodes(); 104 assertEquals(1, list.getLength()); 105 headerElement = (Element )list.item(0); 106 assertTrue(headerElement.hasChildNodes()); 107 list = headerElement.getChildNodes(); 108 assertEquals(1, list.getLength()); 109 Text text = (Text )list.item(0); 110 assertEquals(arg1.getRequestType(), text.getData()); 111 } 112 113 public void testMarshalHeaderDocLitOutputMessage() throws Exception { 114 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, true); 116 Method 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 [] args = SOAPMessageUtil.getMessageObjects(testHeader2, null, arg0, arg1); 125 objContext.setMessageObjects(args); 126 binding.marshal( 128 objContext, 129 soapContext, 130 new JAXBDataBindingCallback(testHeader2, 131 DataBindingCallback.Mode.PARTS, 132 null)); 133 134 SOAPMessage msg = soapContext.getMessage(); 135 assertNotNull(msg); 136 137 assertNotNull(msg.getSOAPHeader()); 139 assertTrue(msg.getSOAPHeader().hasChildNodes()); 140 NodeList list = msg.getSOAPHeader().getChildNodes(); 141 assertEquals(1, list.getLength()); 142 Element headerElement = (Element )list.item(0); 143 assertEquals("true", headerElement 145 .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(), 146 SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart())); 147 148 assertTrue(headerElement.hasChildNodes()); 150 list = headerElement.getChildNodes(); 151 assertEquals(1, list.getLength()); 152 assertEquals(arg1.getResponseType(), list.item(0).getFirstChild().getNodeValue()); 153 154 Method 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 [0]); 163 objContext.setReturn(arg2); 164 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 assertNotNull(msg.getSOAPHeader()); 177 assertTrue(msg.getSOAPHeader().hasChildNodes()); 178 list = msg.getSOAPHeader().getChildNodes(); 179 assertEquals(1, list.getLength()); 180 headerElement = (Element )list.item(0); 181 assertEquals("true", headerElement 183 .getAttributeNS(SOAPConstants.HEADER_MUSTUNDERSTAND.getNamespaceURI(), 184 SOAPConstants.HEADER_MUSTUNDERSTAND.getLocalPart())); 185 186 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 { 195 196 Method testHeader3 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader3"); 197 assertNotNull(testHeader3); 198 objContext.setMethod(testHeader3); 199 objContext.setMessageObjects(SOAPMessageUtil.getMessageObjects(testHeader3)); 200 201 InputStream is = getClass().getResourceAsStream("resources/TestHeader3DocLitReq.xml"); 202 assertNotNull(binding.getMessageFactory()); 203 SOAPMessage headerMsg = binding.getMessageFactory().createMessage(null, is); 204 assertNotNull(headerMsg); 205 soapContext.setMessage(headerMsg); 206 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false); 207 208 binding.unmarshal(soapContext, objContext, 210 new JAXBDataBindingCallback( 211 testHeader3, 212 DataBindingCallback.Mode.PARTS, 213 null)); 214 215 Object [] 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 { 229 230 Method testHeader2 = SOAPMessageUtil.getMethod(TestHeader.class, "testHeader2"); 231 assertNotNull(testHeader2); 232 objContext.setMethod(testHeader2); 233 objContext.setMessageObjects(SOAPMessageUtil.getMessageObjects(testHeader2)); 234 235 InputStream is = getClass().getResourceAsStream("resources/TestHeader2DocLitResp.xml"); 236 assertNotNull(binding.getMessageFactory()); 237 SOAPMessage 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 Object [] params = objContext.getMessageObjects(); 249 assertNotNull(params); 250 assertNull(objContext.getReturn()); 251 assertEquals(3, params.length); 252 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 Method 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 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 assertNotNull(objContext.getReturn()); 283 TestHeader5 header5 = (TestHeader5)objContext.getReturn(); 284 assertEquals("HeaderVal5", header5.getRequestType()); 285 286 } 287 } 288 | Popular Tags |