SWS-352 - Full streaming WebServiceMessage/SoapMessage
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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("<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body>" +
|
||||
"<root xmlns='http://springframework.org'><string>Foo</string></root>" +
|
||||
"</soapenv:Body></soapenv:Envelope>", messageResult);
|
||||
|
||||
}
|
||||
|
||||
@ResponsePayload
|
||||
public MyRootElement rootElement(@RequestPayload MyRootElement rootElement) {
|
||||
return rootElement;
|
||||
|
||||
Reference in New Issue
Block a user