Skip to content

Commit b00f53d

Browse files
committed
SWS-352 - Full streaming WebServiceMessage/SoapMessage
1 parent e842de9 commit b00f53d

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/AbstractJaxb2PayloadMethodProcessor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ private class JaxbStreamingPayload implements StreamingPayload {
314314
private JaxbStreamingPayload(Class<?> clazz, Object jaxbElement) throws JAXBException {
315315
JAXBContext jaxbContext = getJaxbContext(clazz);
316316
this.marshaller = jaxbContext.createMarshaller();
317+
this.marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
317318
this.jaxbElement = jaxbElement;
318319
JAXBIntrospector introspector = jaxbContext.createJAXBIntrospector();
319320
this.name = introspector.getElementName(jaxbElement);

core/src/test/java/org/springframework/ws/server/endpoint/adapter/method/jaxb/XmlRootElementPayloadMethodProcessorTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,29 @@ public void handleReturnValueAxiom() throws Exception {
139139

140140
}
141141

142+
@Test
143+
public void handleReturnValueAxiomNoPayloadCaching() throws Exception {
144+
AxiomSoapMessageFactory messageFactory = new AxiomSoapMessageFactory();
145+
messageFactory.setPayloadCaching(false);
146+
MessageContext messageContext = new DefaultMessageContext(messageFactory);
147+
148+
MyRootElement rootElement = new MyRootElement();
149+
rootElement.setString("Foo");
150+
151+
processor.handleReturnValue(messageContext, rootElementReturnType, rootElement);
152+
assertTrue("context has no response", messageContext.hasResponse());
153+
AxiomSoapMessage response = (AxiomSoapMessage) messageContext.getResponse();
154+
155+
ByteArrayOutputStream bos = new ByteArrayOutputStream();
156+
response.writeTo(bos);
157+
String messageResult = bos.toString("UTF-8");
158+
159+
assertXMLEqual("<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body>" +
160+
"<root xmlns='http://springframework.org'><string>Foo</string></root>" +
161+
"</soapenv:Body></soapenv:Envelope>", messageResult);
162+
163+
}
164+
142165
@ResponsePayload
143166
public MyRootElement rootElement(@RequestPayload MyRootElement rootElement) {
144167
return rootElement;

0 commit comments

Comments
 (0)