Use BlobOMDataSource for Axiom 1.4.

Resolves #1286.
This commit is contained in:
Greg L. Turnquist
2023-04-05 15:35:08 -05:00
parent 722ee7d878
commit 58500e9c3b

View File

@@ -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;
}
}