/** * Emulate the Spring WS MessageDispatcherServlet by calling the gateway * with a DOMSource object representing the payload of the original SOAP * 'echoRequest' message. Expect an 'echoResponse' DOMSource object * to be returned in synchronous fashion, which the MessageDispatcherServlet * would in turn wrap in a SOAP envelope and return to the client. */ @Test public void testSendAndReceive() throws Exception { String xml = "<echoRequest xmlns=\"http://www.springframework.org/spring-ws/samples/echo\">hello</echoRequest>"; DomPoxMessageFactory messageFactory = new DomPoxMessageFactory(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(new InputSource(new StringReader(xml))); Transformer transformer = TransformerFactory.newInstance().newTransformer(); DomPoxMessage request = new DomPoxMessage(document, transformer, "text/xml"); MessageContext messageContext = new DefaultMessageContext(request, messageFactory); gateway.invoke(messageContext); Object reply = messageContext.getResponse().getPayloadSource(); assertThat(reply, is(instanceOf(DOMSource.class))); DOMSource replySource = (DOMSource) reply; Element element = (Element) replySource.getNode().getFirstChild(); assertThat(element.getTagName(), equalTo("echoResponse")); } }
@Test public void sendString() throws Exception { when(context.getResponse()).thenReturn(response); when(context.getRequest()).thenReturn(request); when(request.getPayloadSource()).thenReturn(stringSource); when(response.getPayloadResult()).thenReturn(stringResult); gateway.invoke(context); assertTrue(output.toString().endsWith(input)); }
"The actual type was [" + replyPayload.getClass().getName() + "]"); WebServiceMessage response = messageContext.getResponse(); this.transformerSupportDelegate.transformSourceToResult(responseSource, response.getPayloadResult());
@Override protected void doInvoke(MessageContext messageContext) throws Exception { WebServiceMessage request = messageContext.getRequest(); Assert.notNull(request, "Invalid message context: request was null."); Object requestObject = MarshallingUtils.unmarshal(this.unmarshaller, request); AbstractIntegrationMessageBuilder<?> builder = this.getMessageBuilderFactory().withPayload(requestObject); this.fromSoapHeaders(messageContext, builder); Message<?> replyMessage = this.sendAndReceiveMessage(builder.build()); if (replyMessage != null) { WebServiceMessage response = messageContext.getResponse(); this.toSoapHeaders(response, replyMessage); MarshallingUtils.marshal(this.marshaller, replyMessage.getPayload(), response); } } }
@Before public void setup() { gateway.setRequestChannel(requestChannel); gateway.setReplyChannel(replyChannel); gateway.setBeanFactory(mock(BeanFactory.class)); gateway.start(); when(context.getResponse()).thenReturn(response); when(response.getPayloadResult()).thenReturn(payloadResult); when(context.getRequest()).thenReturn(request); }
Result payloadResult = new StreamResult(output); when(context.getResponse()).thenReturn(response); when(response.getPayloadResult()).thenReturn(payloadResult); when(response.getSoapBody()).thenReturn(soapBody);
private void createStreamWriter() throws XMLStreamException { if (streamWriter == null) { WebServiceMessage response = messageContext.getResponse(); streamWriter = getStreamWriter(response.getPayloadResult()); if (streamWriter == null) { // as a final resort, use a stream, and transform that at endDocument() os = new ByteArrayOutputStream(); streamWriter = getOutputFactory().createXMLStreamWriter(os); } } } }
private void createStreamWriter() throws XMLStreamException { if (streamWriter == null) { WebServiceMessage response = messageContext.getResponse(); streamWriter = getStreamWriter(response.getPayloadResult()); if (streamWriter == null) { // as a final resort, use a stream, and transform that at endDocument() os = new ByteArrayOutputStream(); streamWriter = getOutputFactory().createXMLStreamWriter(os); } } } }
private boolean handleAnonymousAddress(MessageContext messageContext, EndpointReference replyEpr) { if (version.hasAnonymousAddress(replyEpr)) { if (logger.isDebugEnabled()) { logger.debug("Request [" + messageContext.getRequest() + "] has [" + replyEpr + "] reply address; sending in-band reply [" + messageContext.getResponse() + "]"); } return true; } return false; }
private boolean handleAnonymousAddress(MessageContext messageContext, EndpointReference replyEpr) { if (version.hasAnonymousAddress(replyEpr)) { if (logger.isDebugEnabled()) { logger.debug("Request [" + messageContext.getRequest() + "] has [" + replyEpr + "] reply address; sending in-band reply [" + messageContext.getResponse() + "]"); } return true; } return false; }
@Override public boolean handleFault(MessageContext messageContext, Object endpoint) throws Exception { if (logFault && logger.isDebugEnabled()) { logMessageSource("Fault: ", getSource(messageContext.getResponse())); } return true; }
private void createEventWriter() throws XMLStreamException { if (eventWriter == null) { WebServiceMessage response = messageContext.getResponse(); eventWriter = getEventWriter(response.getPayloadResult()); if (eventWriter == null) { // as a final resort, use a stream, and transform that at endDocument() os = new ByteArrayOutputStream(); eventWriter = getOutputFactory().createXMLEventWriter(os); } } } }
private void createEventWriter() throws XMLStreamException { if (eventWriter == null) { WebServiceMessage response = messageContext.getResponse(); eventWriter = getEventWriter(response.getPayloadResult()); if (eventWriter == null) { // as a final resort, use a stream, and transform that at endDocument() os = new ByteArrayOutputStream(); eventWriter = getOutputFactory().createXMLEventWriter(os); } } } }
@Override public boolean handleFault(MessageContext messageContext, Object endpoint) throws Exception { if (logFault && isLogEnabled()) { logMessageSource("Fault: ", getSource(messageContext.getResponse())); } return true; }
@Override protected void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) throws Exception { WebServiceMessage request = messageContext.getRequest(); Object requestObject = unmarshalRequest(request); Object responseObject = methodEndpoint.invoke(new Object[]{requestObject}); if (responseObject != null) { WebServiceMessage response = messageContext.getResponse(); marshalResponse(responseObject, response); } }
public WebServiceMessage serialize(Object data) throws Exception { Assert.notNull(data, "data can not be null"); MethodParameter parameter = new SmockMethodParameter(getTargetClass(data),-1); MessageContext messageContext = new DefaultMessageContext(messageFactory); for (MethodReturnValueHandler methodReturnValueHandler : adapter.getMethodReturnValueHandlers()) { if (methodReturnValueHandler.supportsReturnType(parameter)) { methodReturnValueHandler.handleReturnValue(messageContext, parameter, data); return messageContext.getResponse(); } } return null; }
@Override protected void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) throws Exception { Source requestSource = messageContext.getRequest().getPayloadSource(); Object result = methodEndpoint.invoke(requestSource); if (result != null) { Source responseSource = (Source) result; WebServiceMessage response = messageContext.getResponse(); transform(responseSource, response.getPayloadResult()); } } }
@Override public void invoke(MessageContext messageContext, Object endpoint) throws Exception { PayloadEndpoint payloadEndpoint = (PayloadEndpoint) endpoint; Source requestSource = messageContext.getRequest().getPayloadSource(); Source responseSource = payloadEndpoint.invoke(requestSource); if (responseSource != null) { WebServiceMessage response = messageContext.getResponse(); transform(responseSource, response.getPayloadResult()); } } }
@Override protected void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) throws Exception { Element payloadElement = getRootElement(messageContext.getRequest().getPayloadSource()); Object[] args = getMethodArguments(payloadElement, methodEndpoint.getMethod()); Object result = methodEndpoint.invoke(args); if (result != null && result instanceof Source) { Source responseSource = (Source) result; WebServiceMessage response = messageContext.getResponse(); transform(responseSource, response.getPayloadResult()); } }
@Override protected void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) throws Exception { Element payloadElement = getRootElement(messageContext.getRequest().getPayloadSource()); Object[] args = getMethodArguments(payloadElement, methodEndpoint.getMethod()); Object result = methodEndpoint.invoke(args); if (result != null && result instanceof Source) { Source responseSource = (Source) result; WebServiceMessage response = messageContext.getResponse(); transform(responseSource, response.getPayloadResult()); } }