use of org.apache.cxf.jaxws.handler.logical.LogicalMessageContextImpl in project cxf by apache.
the class HandlerChainInvokerTest method testHandleMessageThrowsProtocolExceptionOutbound.
@Test
public void testHandleMessageThrowsProtocolExceptionOutbound() {
message = new SoapMessage(message);
lmc = new LogicalMessageContextImpl(message);
pmc = new WrappedMessageContext(message);
ProtocolException pe = new ProtocolException("banzai");
protocolHandlers[2].setException(pe);
invoker.setRequestor(true);
assertTrue(invoker.isOutbound());
boolean continueProcessing = true;
invoker.setLogicalMessageContext(lmc);
continueProcessing = invoker.invokeLogicalHandlers(false, lmc);
assertTrue(continueProcessing);
// create an empty SOAP body for testing
try {
pmc = new SOAPMessageContextImpl(message);
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage soapMessage = factory.createMessage();
((SOAPMessageContext) pmc).setMessage(soapMessage);
} catch (SOAPException e) {
// do nothing
}
try {
invoker.setProtocolMessageContext(pmc);
continueProcessing = invoker.invokeProtocolHandlers(false, pmc);
fail("did not get expected exception");
} catch (ProtocolException e) {
assertEquals("banzai", e.getMessage());
}
assertFalse((Boolean) pmc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY));
assertFalse((Boolean) lmc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY));
assertTrue(invoker.isInbound());
// the message is replaced by fault message
Source responseMessage = lmc.getMessage().getPayload();
// System.out.println(getSourceAsString(responseMessage));
assertTrue(getSourceAsString(responseMessage).indexOf("banzai") > -1);
// assertFalse(continueProcessing);
assertEquals(1, logicalHandlers[0].getHandleMessageCount());
assertEquals(1, logicalHandlers[1].getHandleMessageCount());
assertEquals(1, logicalHandlers[2].getHandleMessageCount());
assertEquals(1, logicalHandlers[3].getHandleMessageCount());
assertEquals(1, protocolHandlers[0].getHandleMessageCount());
assertEquals(1, protocolHandlers[1].getHandleMessageCount());
assertEquals(1, protocolHandlers[2].getHandleMessageCount());
assertEquals(0, protocolHandlers[3].getHandleMessageCount());
assertTrue(logicalHandlers[3].getInvokeOrderOfHandleMessage() < protocolHandlers[0].getInvokeOrderOfHandleMessage());
assertTrue(protocolHandlers[1].getInvokeOrderOfHandleMessage() < protocolHandlers[2].getInvokeOrderOfHandleMessage());
assertEquals(1, logicalHandlers[0].getCloseCount());
assertEquals(1, logicalHandlers[1].getCloseCount());
assertEquals(1, logicalHandlers[2].getCloseCount());
assertEquals(1, logicalHandlers[3].getCloseCount());
assertEquals(1, protocolHandlers[0].getCloseCount());
assertEquals(1, protocolHandlers[1].getCloseCount());
assertEquals(1, protocolHandlers[2].getCloseCount());
assertEquals(0, protocolHandlers[3].getCloseCount());
assertTrue(protocolHandlers[2].getInvokeOrderOfClose() < protocolHandlers[1].getInvokeOrderOfClose());
assertTrue(protocolHandlers[0].getInvokeOrderOfClose() < logicalHandlers[3].getInvokeOrderOfClose());
assertEquals(1, logicalHandlers[0].getHandleFaultCount());
assertEquals(1, logicalHandlers[1].getHandleFaultCount());
assertEquals(1, logicalHandlers[2].getHandleFaultCount());
assertEquals(1, logicalHandlers[3].getHandleFaultCount());
assertEquals(1, protocolHandlers[0].getHandleFaultCount());
assertEquals(1, protocolHandlers[1].getHandleFaultCount());
assertEquals(0, protocolHandlers[2].getHandleFaultCount());
assertEquals(0, protocolHandlers[3].getHandleFaultCount());
assertTrue(protocolHandlers[0].getInvokeOrderOfHandleFault() < logicalHandlers[3].getInvokeOrderOfHandleFault());
assertTrue(protocolHandlers[2].getInvokeOrderOfHandleFault() < protocolHandlers[1].getInvokeOrderOfHandleFault());
}
use of org.apache.cxf.jaxws.handler.logical.LogicalMessageContextImpl in project cxf by apache.
the class LogicalMessageImplTest method testGetPayloadOfJAXB.
@Test
public void testGetPayloadOfJAXB() throws Exception {
// using Dispatch
JAXBContext ctx = JAXBContext.newInstance(ObjectFactory.class);
Message message = new MessageImpl();
Exchange e = new ExchangeImpl();
message.setExchange(e);
LogicalMessageContextImpl lmci = new LogicalMessageContextImpl(message);
JAXBElement<AddNumbers> el = new ObjectFactory().createAddNumbers(req);
LogicalMessageImpl lmi = new LogicalMessageImpl(lmci);
lmi.setPayload(el, ctx);
Object obj = lmi.getPayload(ctx);
assertTrue(obj instanceof JAXBElement);
JAXBElement<?> el2 = (JAXBElement<?>) obj;
assertTrue(el2.getValue() instanceof AddNumbers);
AddNumbers resp = (AddNumbers) el2.getValue();
assertEquals(req.getArg0(), resp.getArg0());
assertEquals(req.getArg1(), resp.getArg1());
}
use of org.apache.cxf.jaxws.handler.logical.LogicalMessageContextImpl in project cxf by apache.
the class HandlerChainInvokerTest method setUp.
@Before
public void setUp() {
AbstractHandlerBase.clear();
@SuppressWarnings("rawtypes") List<Handler> handlers = new ArrayList<>();
for (int i = 0; i < logicalHandlers.length; i++) {
logicalHandlers[i] = new TestLogicalHandler();
handlers.add(logicalHandlers[i]);
}
for (int i = 0; i < protocolHandlers.length; i++) {
protocolHandlers[i] = new TestProtocolHandler();
handlers.add(protocolHandlers[i]);
}
invoker = new HandlerChainInvoker(handlers);
message = new MessageImpl();
Exchange e = new ExchangeImpl();
message.setExchange(e);
lmc = new LogicalMessageContextImpl(message);
pmc = new WrappedMessageContext(message);
/*
payload = new DOMSource();
message.setContent(Source.class, payload);*/
}
Aggregations