diff --git a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/Axiom14NonCachingPayload.java b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/Axiom14NonCachingPayload.java index a289239a..691c9f1e 100644 --- a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/Axiom14NonCachingPayload.java +++ b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/Axiom14NonCachingPayload.java @@ -17,7 +17,6 @@ package org.springframework.ws.soap.axiom; import java.io.ByteArrayOutputStream; -import java.io.UnsupportedEncodingException; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; @@ -26,10 +25,11 @@ import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.Result; +import org.apache.axiom.blob.Blobs; import org.apache.axiom.om.OMDataSource; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMNamespace; -import org.apache.axiom.om.ds.StringOMDataSource; +import org.apache.axiom.om.ds.BlobOMDataSource; import org.apache.axiom.om.util.StAXUtils; import org.apache.axiom.soap.SOAPBody; import org.apache.axiom.soap.SOAPFactory; @@ -137,14 +137,10 @@ class Axiom14NonCachingPayload extends AxiomAbstractPayload { delegate.flush(); if (baos.size() > 0) { SOAPFactory axiomFactory = getAxiomFactory(); - try { - OMDataSource dataSource = new StringOMDataSource(baos.toString(encoding)); - OMNamespace namespace = axiomFactory.createOMNamespace(name.getNamespaceURI(), name.getPrefix()); - OMElement payloadElement = axiomFactory.createOMElement(dataSource, name.getLocalPart(), namespace); - getAxiomBody().addChild(payloadElement); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } + OMDataSource dataSource = new BlobOMDataSource(Blobs.createBlob(baos.toByteArray()), encoding); + OMNamespace namespace = axiomFactory.createOMNamespace(name.getNamespaceURI(), name.getPrefix()); + OMElement payloadElement = axiomFactory.createOMElement(dataSource, name.getLocalPart(), namespace); + getAxiomBody().addChild(payloadElement); payloadAdded = true; } }