1 package org.objectweb.celtix.bus.context; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 import javax.xml.bind.JAXBContext; 6 import javax.xml.bind.JAXBException; 7 import javax.xml.ws.handler.MessageContext; 8 import junit.framework.TestCase; 9 10 import org.objectweb.celtix.context.ObjectMessageContext; 11 import org.objectweb.celtix.context.ObjectMessageContextImpl; 12 import org.objectweb.handler_test.HandlerTest; 13 import org.objectweb.handler_test.types.PingResponse; 14 import org.objectweb.hello_world_soap_http.Greeter; 15 import org.objectweb.hello_world_soap_http.types.GreetMe; 16 import org.objectweb.hello_world_soap_http.types.GreetMeResponse; 17 18 public class LogicalMessageImplTest extends TestCase { 19 20 private final ObjectMessageContextImpl ctx = new ObjectMessageContextImpl(); 21 private final LogicalMessageImpl lm = new LogicalMessageImpl(new LogicalMessageContextImpl(ctx)); 22 private JAXBContext jaxbCtx; 23 24 public void setUp() throws Exception { 25 26 ctx.setMethod(Greeter.class.getMethod("greetMe", String .class)); 27 jaxbCtx = JAXBContext.newInstance(GreetMe.class.getPackage().getName()); 28 } 29 30 31 public void testGetPayloadJAXBOutboundArguments() throws NoSuchMethodException , JAXBException { 32 33 ctx.put(ObjectMessageContext.MESSAGE_INPUT, false); 34 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, true); 35 36 doGetArgumentsFromPayloadTest(); 37 } 38 39 private void doGetArgumentsFromPayloadTest() { 40 Object [] args = {"test string parameter"}; 41 ctx.setMessageObjects(args); 42 43 Object payload = lm.getPayload(jaxbCtx); 44 assertNotNull(payload); 45 assertTrue(payload instanceof GreetMe); 46 assertEquals(args[0], ((GreetMe)payload).getRequestType()); 47 } 48 49 50 public void testGetPayloadJAXBOutboundNoArguments() throws NoSuchMethodException , JAXBException { 51 52 ctx.put(ObjectMessageContext.MESSAGE_INPUT, false); 53 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, true); 54 55 Object payload = lm.getPayload(jaxbCtx); 56 assertNull(payload); 57 } 58 59 60 public void testGetPayloadJAXBInboundReturn() { 61 62 ctx.put(ObjectMessageContext.MESSAGE_INPUT, true); 63 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, false); 64 65 final String returnValue = "test return value"; 66 ctx.setReturn(returnValue); 67 68 Object o = lm.getPayload(jaxbCtx); 69 assertNotNull(o); 70 assertTrue(o instanceof GreetMeResponse); 71 assertEquals(returnValue, ((GreetMeResponse)o).getResponseType()); 72 } 73 74 public void testSetPayloadJAXBOutboundArgs() { 75 76 ctx.put(ObjectMessageContext.MESSAGE_INPUT, false); 77 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, true); 78 79 final String testArg = "test argument set"; 80 GreetMe wrapper = new GreetMe(); 81 wrapper.setRequestType(testArg); 82 lm.setPayload(wrapper, jaxbCtx); 83 84 GreetMe payload = (GreetMe)lm.getPayload(jaxbCtx); 85 assertEquals(wrapper.getRequestType(), payload.getRequestType()); 86 87 Object [] args = ctx.getMessageObjects(); 88 89 assertNotNull(args); 90 assertEquals(1, args.length); 91 assertTrue(args[0] instanceof String ); 92 assertEquals(testArg, args[0]); 93 } 94 95 96 public void testSetPayloadJAXInboundReturn() { 97 98 ctx.put(ObjectMessageContext.MESSAGE_INPUT, true); 99 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, false); 100 101 final String testResponse = "test replaced response"; 102 GreetMeResponse wrapper = new GreetMeResponse(); 103 wrapper.setResponseType(testResponse); 104 lm.setPayload(wrapper, jaxbCtx); 105 106 GreetMeResponse payload = (GreetMeResponse)lm.getPayload(jaxbCtx); 107 assertEquals(wrapper.getResponseType(), payload.getResponseType()); 108 109 Object ret = ctx.getReturn(); 110 111 assertNotNull(ret); 112 assertTrue(ret instanceof String ); 113 assertEquals(testResponse, ret); 114 115 } 116 117 118 120 public void testSetPayloadJAXOutboundReturnListProperty() throws Exception { 121 122 ctx.put(ObjectMessageContext.MESSAGE_INPUT, true); 123 ctx.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, true); 124 ctx.setMethod(HandlerTest.class.getMethod("ping")); 125 126 List <String > l = new ArrayList <String >(); 127 l.add("foo"); 128 l.add("bar"); 129 l.add("baz"); 130 ctx.setReturn(l); 131 132 Object o = lm.getPayload(jaxbCtx); 133 134 assertNotNull(o); 135 assertEquals(PingResponse.class, o.getClass()); 136 assertEquals(l, ((PingResponse)o).getHandlersInfo()); 137 } 138 139 public void testGetPayloadJAXBInbountArgs() { 140 ctx.put(ObjectMessageContext.MESSAGE_INPUT, false); 141 } 142 } 143 | Popular Tags |