From b00f53d9b80c2077556ac159ee0361ccf2c04e09 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 10 Nov 2010 11:13:44 +0000 Subject: [PATCH] SWS-352 - Full streaming WebServiceMessage/SoapMessage --- .../AbstractJaxb2PayloadMethodProcessor.java | 1 + ...RootElementPayloadMethodProcessorTest.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/AbstractJaxb2PayloadMethodProcessor.java b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/AbstractJaxb2PayloadMethodProcessor.java index 8a9c6a5a..de9272e2 100644 --- a/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/AbstractJaxb2PayloadMethodProcessor.java +++ b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/AbstractJaxb2PayloadMethodProcessor.java @@ -314,6 +314,7 @@ public abstract class AbstractJaxb2PayloadMethodProcessor extends AbstractPayloa private JaxbStreamingPayload(Class clazz, Object jaxbElement) throws JAXBException { JAXBContext jaxbContext = getJaxbContext(clazz); this.marshaller = jaxbContext.createMarshaller(); + this.marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); this.jaxbElement = jaxbElement; JAXBIntrospector introspector = jaxbContext.createJAXBIntrospector(); this.name = introspector.getElementName(jaxbElement); diff --git a/core/src/test/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/XmlRootElementPayloadMethodProcessorTest.java b/core/src/test/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/XmlRootElementPayloadMethodProcessorTest.java index 7e2e94aa..e643fe7c 100644 --- a/core/src/test/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/XmlRootElementPayloadMethodProcessorTest.java +++ b/core/src/test/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/XmlRootElementPayloadMethodProcessorTest.java @@ -139,6 +139,29 @@ public class XmlRootElementPayloadMethodProcessorTest { } + @Test + public void handleReturnValueAxiomNoPayloadCaching() throws Exception { + AxiomSoapMessageFactory messageFactory = new AxiomSoapMessageFactory(); + messageFactory.setPayloadCaching(false); + MessageContext messageContext = new DefaultMessageContext(messageFactory); + + MyRootElement rootElement = new MyRootElement(); + rootElement.setString("Foo"); + + processor.handleReturnValue(messageContext, rootElementReturnType, rootElement); + assertTrue("context has no response", messageContext.hasResponse()); + AxiomSoapMessage response = (AxiomSoapMessage) messageContext.getResponse(); + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + response.writeTo(bos); + String messageResult = bos.toString("UTF-8"); + + assertXMLEqual("" + + "Foo" + + "", messageResult); + + } + @ResponsePayload public MyRootElement rootElement(@RequestPayload MyRootElement rootElement) { return rootElement;