1 package org.objectweb.celtix.bus.bindings.soap; 2 3 import java.io.ByteArrayInputStream ; 4 import java.io.InputStream ; 5 import java.lang.reflect.Method ; 6 7 import javax.jws.WebService; 8 import javax.xml.namespace.QName ; 9 import javax.xml.soap.SOAPMessage ; 10 11 import org.w3c.dom.Node ; 12 import org.w3c.dom.NodeList ; 13 14 import junit.framework.TestCase; 15 16 import org.objectweb.celtix.bindings.DataBindingCallback; 17 import org.objectweb.celtix.bus.bindings.TestInputStreamContext; 18 import org.objectweb.celtix.bus.jaxws.JAXBDataBindingCallback; 19 import org.objectweb.celtix.context.GenericMessageContext; 20 import org.objectweb.celtix.context.ObjectMessageContext; 21 import org.objectweb.celtix.context.ObjectMessageContextImpl; 22 import org.objectweb.hello_world_rpclit.GreeterRPCLit; 23 24 public class SoapBindingImplRPCLitTest extends TestCase { 25 26 private SOAPBindingImpl binding; 27 private ObjectMessageContextImpl objContext; 28 private SOAPMessageContextImpl soapContext; 29 30 public SoapBindingImplRPCLitTest(String arg0) { 31 super(arg0); 32 } 33 34 37 public static void main(String [] args) { 38 junit.textui.TestRunner.run(SoapBindingImplRPCLitTest.class); 39 } 40 41 protected void setUp() throws Exception { 42 super.setUp(); 43 44 binding = new SOAPBindingImpl(false); 45 objContext = new ObjectMessageContextImpl(); 46 soapContext = new SOAPMessageContextImpl(new GenericMessageContext()); 47 48 Method greetMe = SOAPMessageUtil.getMethod(GreeterRPCLit.class, "greetMe"); 49 objContext.setMethod(greetMe); 50 } 51 52 public void testMarshalRPCLitInputMessage() throws Exception { 53 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false); 55 56 String arg0 = new String ("TestSOAPInputPMessage"); 57 objContext.setMessageObjects(arg0); 58 59 binding.marshal(objContext, soapContext, 60 new JAXBDataBindingCallback(objContext.getMethod(), 61 DataBindingCallback.Mode.PARTS, 62 null)); 63 SOAPMessage msg = soapContext.getMessage(); 64 assertNotNull(msg); 65 assertTrue(msg.getSOAPBody().hasChildNodes()); 66 NodeList list = msg.getSOAPBody().getChildNodes(); 67 assertEquals(1, list.getLength()); 68 Node operationNode = list.item(0); 69 assertEquals(objContext.getMethod().getName(), operationNode.getLocalName()); 70 71 WebService wsAnnotation = objContext.getMethod().getDeclaringClass().getAnnotation(WebService.class); 72 String expectedNameSpace = wsAnnotation.targetNamespace(); 73 assertTrue(expectedNameSpace.equals(operationNode.getNamespaceURI())); 74 75 assertTrue(operationNode.hasChildNodes()); 76 assertEquals(arg0, operationNode.getFirstChild().getFirstChild().getNodeValue()); 77 } 78 79 public void testMarshalRPCLitOutputMessage() throws Exception { 80 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, true); 82 83 String arg0 = new String ("TestSOAPOutputMessage"); 84 objContext.setReturn(arg0); 85 86 binding.marshal(objContext, soapContext, 87 new JAXBDataBindingCallback(objContext.getMethod(), 88 DataBindingCallback.Mode.PARTS, 89 null)); 90 SOAPMessage msg = soapContext.getMessage(); 91 assertNotNull(msg); 92 assertTrue(msg.getSOAPBody().hasChildNodes()); 93 NodeList list = msg.getSOAPBody().getChildNodes(); 94 assertEquals(1, list.getLength()); 95 Node operationNode = list.item(0); 96 assertEquals(objContext.getMethod().getName() + "Response", operationNode.getLocalName()); 97 98 WebService wsAnnotation = objContext.getMethod().getDeclaringClass().getAnnotation(WebService.class); 99 String expectedNameSpace = wsAnnotation.targetNamespace(); 100 assertTrue(expectedNameSpace.equals(operationNode.getNamespaceURI())); 101 102 assertTrue(operationNode.hasChildNodes()); 103 assertEquals(arg0, operationNode.getFirstChild().getFirstChild().getNodeValue()); 104 } 105 106 public void testParseRPCLitInputMessage() throws Exception { 107 108 QName opName = new QName ("http://objectweb.org/hello_world_rpclit", "greetMe"); 109 QName elName = new QName ("http://objectweb.org/hello_world_rpclit", "in"); 110 String data = new String ("TestSOAPInputMessage"); 111 String str = SOAPMessageUtil.createRPCLitSOAPMessage(opName, elName, data); 112 113 TestInputStreamContext inCtx = new TestInputStreamContext(str.getBytes()); 114 binding.read(inCtx, soapContext); 115 116 SOAPMessage msg = soapContext.getMessage(); 117 assertNotNull(msg); 118 assertTrue(msg.getSOAPBody().hasChildNodes()); 119 NodeList list = msg.getSOAPBody().getChildNodes(); 120 121 assertEquals(1, list.getLength()); 122 Node operationNode = list.item(0); 123 assertEquals(objContext.getMethod().getName(), operationNode.getLocalName()); 124 assertTrue(operationNode.hasChildNodes()); 125 assertEquals(data, operationNode.getFirstChild().getFirstChild().getNodeValue()); 126 } 127 128 public void testUnmarshalRPCLitInputMessage() throws Exception { 129 InputStream is = getClass().getResourceAsStream("resources/GreetMeRpcLiteralReq.xml"); 131 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, false); 132 133 assertNotNull(binding.getMessageFactory()); 134 SOAPMessage soapMessage = binding.getMessageFactory().createMessage(null, is); 135 soapContext.setMessage(soapMessage); 136 objContext.setMessageObjects(new Object []{null}); 138 139 binding.unmarshal(soapContext, objContext, 140 new JAXBDataBindingCallback(objContext.getMethod(), 141 DataBindingCallback.Mode.PARTS, null)); 142 143 assertNull(objContext.getReturn()); 144 Object [] params = objContext.getMessageObjects(); 145 assertNotNull(params); 146 assertEquals(1, params.length); 147 assertEquals("TestSOAPRPCLitInputMessage", (String )params[0]); 148 } 149 150 public void testUnmarshalRPCLitOutputMessage() throws Exception { 151 QName opName = new QName ("http://objectweb.org/hello_world_rpclit", "greetMe"); 153 QName elName = new QName ("http://objectweb.org/hello_world_rpclit", "out"); 154 String data = new String ("TestSOAPOutputMessage"); 155 String str = SOAPMessageUtil.createRPCLitSOAPMessage(opName, elName, data); 156 ByteArrayInputStream in = new ByteArrayInputStream (str.getBytes()); 157 158 soapContext.put(ObjectMessageContext.MESSAGE_INPUT, true); 159 assertNotNull(binding.getMessageFactory()); 160 SOAPMessage soapMessage = binding.getMessageFactory().createMessage(null, in); 161 soapContext.setMessage(soapMessage); 162 163 binding.unmarshal(soapContext, objContext, 164 new JAXBDataBindingCallback(objContext.getMethod(), 165 DataBindingCallback.Mode.PARTS, null)); 166 167 assertNull(objContext.getMessageObjects()); 168 assertNotNull(objContext.getReturn()); 169 assertEquals(data, (String )objContext.getReturn()); 170 } 171 172 } 173 | Popular Tags |