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 ; 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 arg0) { 37 super(arg0); 38 } 39 40 public static void main(String [] args) { 41 junit.textui.TestRunner.run(XMLBindingImplTest.class); 42 } 43 44 protected void setUp() throws Exception { 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 { 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 Definition wsdlDef = EndpointReferenceUtils.getWSDLDefinition(bus.getWSDLManager(), reference); 67 assertNotNull(wsdlDef); 68 QName wsdlName = new QName ("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 obj = ite.next(); 84 if (obj instanceof TBody) { 85 xmlBinding = (TBody)obj; 86 } 87 } 88 assertNotNull(xmlBinding); 89 assertEquals(new QName ("http://objectweb.org/hello_world_xml_http/bare", "sayHi"), 90 xmlBinding.getRootNode()); 91 } 92 93 public void testMarshalBareWithoutRootNode() throws Exception { 95 Bus bus = Bus.init(); 96 binding = getBindingImpl(bus, testUtils.getEndpointReference()); 97 98 xmlContext.put(ObjectMessageContext.MESSAGE_INPUT, false); 99 String arg0 = new String ("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 public void testMarshalBareWithRootNode() throws Exception { 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 arg0 = new String ("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 expect = xmlUtils.toString(expectDOM); 147 String result = xmlUtils.toString(resultDOM); 148 assertTrue(expect.equals(result)); 149 } 150 151 public void testUnmarshalBareInputMessage() throws Exception { 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 data = new String ("TestXMLInputMessage"); 160 161 objContext.setMethod(ClassUtils.getMethod(Greeter.class, "greetMe")); 163 objContext.setMessageObjects(new Object [1]); 164 binding.unmarshal(xmlContext, objContext, 165 new JAXBDataBindingCallback(objContext.getMethod(), 166 DataBindingCallback.Mode.PARTS, 167 null)); 168 169 Object [] params = objContext.getMessageObjects(); 170 assertNotNull(params); 171 assertNull(objContext.getReturn()); 172 assertEquals(1, params.length); 173 assertEquals(data, (String )params[0]); 174 } 175 176 public void testUnmarshalBareOutputMessage() throws Exception { 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 objContext.setMethod(ClassUtils.getMethod(Greeter.class, "greetMe")); 186 objContext.setMessageObjects(new Object [1]); 187 binding.unmarshal(xmlContext, objContext, 188 new JAXBDataBindingCallback(objContext.getMethod(), 189 DataBindingCallback.Mode.PARTS, 190 null)); 191 192 Object [] params = objContext.getMessageObjects(); 193 assertNotNull(params); 194 assertNotNull(objContext.getReturn()); 195 assertEquals("TestXMLOutputMessage", (String )objContext.getReturn()); 196 } 197 198 private XMLBindingImpl getBindingImpl(Bus bus, EndpointReferenceType ref) { 199 return new XMLBindingImpl(bus, ref, false); 200 } 201 } 202 | Popular Tags |