Skip to content

Commit 58500e9

Browse files
committed
Use BlobOMDataSource for Axiom 1.4.
Resolves #1286.
1 parent 722ee7d commit 58500e9

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/Axiom14NonCachingPayload.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.ws.soap.axiom;
1818

1919
import java.io.ByteArrayOutputStream;
20-
import java.io.UnsupportedEncodingException;
2120

2221
import javax.xml.namespace.NamespaceContext;
2322
import javax.xml.namespace.QName;
@@ -26,10 +25,11 @@
2625
import javax.xml.stream.XMLStreamWriter;
2726
import javax.xml.transform.Result;
2827

28+
import org.apache.axiom.blob.Blobs;
2929
import org.apache.axiom.om.OMDataSource;
3030
import org.apache.axiom.om.OMElement;
3131
import org.apache.axiom.om.OMNamespace;
32-
import org.apache.axiom.om.ds.StringOMDataSource;
32+
import org.apache.axiom.om.ds.BlobOMDataSource;
3333
import org.apache.axiom.om.util.StAXUtils;
3434
import org.apache.axiom.soap.SOAPBody;
3535
import org.apache.axiom.soap.SOAPFactory;
@@ -137,14 +137,10 @@ private void addPayload() throws XMLStreamException {
137137
delegate.flush();
138138
if (baos.size() > 0) {
139139
SOAPFactory axiomFactory = getAxiomFactory();
140-
try {
141-
OMDataSource dataSource = new StringOMDataSource(baos.toString(encoding));
142-
OMNamespace namespace = axiomFactory.createOMNamespace(name.getNamespaceURI(), name.getPrefix());
143-
OMElement payloadElement = axiomFactory.createOMElement(dataSource, name.getLocalPart(), namespace);
144-
getAxiomBody().addChild(payloadElement);
145-
} catch (UnsupportedEncodingException e) {
146-
throw new RuntimeException(e);
147-
}
140+
OMDataSource dataSource = new BlobOMDataSource(Blobs.createBlob(baos.toByteArray()), encoding);
141+
OMNamespace namespace = axiomFactory.createOMNamespace(name.getNamespaceURI(), name.getPrefix());
142+
OMElement payloadElement = axiomFactory.createOMElement(dataSource, name.getLocalPart(), namespace);
143+
getAxiomBody().addChild(payloadElement);
148144
payloadAdded = true;
149145
}
150146
}

0 commit comments

Comments
 (0)