use of javax.xml.soap.MessageFactory 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());
invoker.setLogicalMessageContext(lmc);
boolean 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);
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 javax.xml.soap.MessageFactory in project cxf by apache.
the class GreeterDOMSourceMessageProvider method invoke.
public DOMSource invoke(DOMSource request) {
DOMSource response = new DOMSource();
try {
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage soapReq = factory.createMessage();
soapReq.getSOAPPart().setContent(request);
System.out.println("Incoming Client Request as a DOMSource data in MESSAGE Mode");
soapReq.writeTo(System.out);
System.out.println("\n");
SOAPMessage greetMeResponse = null;
try (InputStream is = getClass().getResourceAsStream("/GreetMeDocLiteralResp2.xml")) {
greetMeResponse = factory.createMessage(null, is);
}
response.setNode(greetMeResponse.getSOAPPart());
} catch (Exception ex) {
ex.printStackTrace();
}
return response;
}
use of javax.xml.soap.MessageFactory in project cxf by apache.
the class GreeterSoapMessageProvider method invoke.
public SOAPMessage invoke(SOAPMessage request) {
SOAPMessage response = null;
try {
System.out.println("Incoming Client Request as a SOAPMessage");
MessageFactory factory = MessageFactory.newInstance();
try (InputStream is = getClass().getResourceAsStream("/GreetMeDocLiteralResp1.xml")) {
response = factory.createMessage(null, is);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return response;
}
use of javax.xml.soap.MessageFactory in project cxf by apache.
the class RMSoapOutInterceptorTest method setupOutboundMessage.
private SoapMessage setupOutboundMessage() throws Exception {
Exchange ex = new ExchangeImpl();
Message message = new MessageImpl();
SoapMessage soapMessage = new SoapMessage(message);
RMProperties rmps = new RMProperties();
rmps.exposeAs(RM10Constants.NAMESPACE_URI);
RMContextUtils.storeRMProperties(soapMessage, rmps, true);
AddressingProperties maps = new AddressingProperties();
RMContextUtils.storeMAPs(maps, soapMessage, true, false);
ex.setOutMessage(soapMessage);
soapMessage.setExchange(ex);
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage soap = factory.createMessage();
QName bodyName = new QName("http://cxf.apache.org", "dummy", "d");
soap.getSOAPBody().addBodyElement(bodyName);
soapMessage.setContent(SOAPMessage.class, soap);
return soapMessage;
}
use of javax.xml.soap.MessageFactory in project cxf by apache.
the class DispatchHandlerInvocationTest method testInvokeWithDOMSourcMessageMode.
@Test
public void testInvokeWithDOMSourcMessageMode() throws Exception {
URL wsdl = getClass().getResource("/wsdl/addNumbers.wsdl");
assertNotNull(wsdl);
AddNumbersService service = new AddNumbersService(wsdl, serviceName);
assertNotNull(service);
Dispatch<DOMSource> disp = service.createDispatch(portName, DOMSource.class, Mode.MESSAGE);
setAddress(disp, addNumbersAddress);
TestHandler handler = new TestHandler();
TestSOAPHandler soapHandler = new TestSOAPHandler();
addHandlersProgrammatically(disp, handler, soapHandler);
InputStream is = this.getClass().getResourceAsStream("resources/GreetMeDocLiteralReq.xml");
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage soapReq = factory.createMessage(null, is);
soapReq.saveChanges();
DOMSource domReqMessage = new DOMSource(soapReq.getSOAPPart());
DOMSource response = disp.invoke(domReqMessage);
// XMLUtils.writeTo(response, System.out);
assertNotNull(response);
}
Aggregations