diff --git a/core/src/main/java/org/springframework/ws/soap/SoapFaultDetail.java b/core/src/main/java/org/springframework/ws/soap/SoapFaultDetail.java
index 526c6f86..4fb077dd 100644
--- a/core/src/main/java/org/springframework/ws/soap/SoapFaultDetail.java
+++ b/core/src/main/java/org/springframework/ws/soap/SoapFaultDetail.java
@@ -17,8 +17,8 @@
package org.springframework.ws.soap;
import java.util.Iterator;
-
import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
/**
* Represents the detail element in a SOAP fault. A detail contains SoapFaultDetailElements,
@@ -37,6 +37,15 @@ public interface SoapFaultDetail extends SoapElement {
*/
SoapFaultDetailElement addFaultDetailElement(QName name);
+ /**
+ * Returns the Source of this element. This result does not include the element itself.
+ *
Result of this element
+ */
+ Result getResult();
+
/**
* Gets an iterator over all of the SoapFaultDetailElements in this detail.
*
diff --git a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapFaultDetail.java b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapFaultDetail.java
index 47ab1f16..5718856c 100644
--- a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapFaultDetail.java
+++ b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapFaultDetail.java
@@ -18,7 +18,9 @@ package org.springframework.ws.soap.axiom;
import java.util.Iterator;
import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
import javax.xml.transform.Source;
+import javax.xml.transform.sax.SAXResult;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
@@ -73,7 +75,10 @@ class AxiomSoapFaultDetail implements SoapFaultDetail {
catch (OMException ex) {
throw new AxiomSoapFaultException(ex);
}
+ }
+ public Result getResult() {
+ return new SAXResult(new AxiomContentHandler(axiomFaultDetail));
}
private class AxiomSoapFaultDetailElementIterator implements Iterator {
diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/Saaj12SoapFaultDetail.java b/core/src/main/java/org/springframework/ws/soap/saaj/Saaj12SoapFaultDetail.java
index 30523418..b08ede46 100644
--- a/core/src/main/java/org/springframework/ws/soap/saaj/Saaj12SoapFaultDetail.java
+++ b/core/src/main/java/org/springframework/ws/soap/saaj/Saaj12SoapFaultDetail.java
@@ -23,7 +23,9 @@ import javax.xml.soap.DetailEntry;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
+import javax.xml.transform.Result;
import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import org.springframework.util.Assert;
@@ -53,6 +55,10 @@ class Saaj12SoapFaultDetail implements SoapFaultDetail {
return new DOMSource(saajDetail);
}
+ public Result getResult() {
+ return new DOMResult(saajDetail);
+ }
+
public SoapFaultDetailElement addFaultDetailElement(QName name) {
try {
Name detailEntryName = SaajUtils.toName(name, saajDetail, getEnvelope());
diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/Saaj13SoapFaultDetail.java b/core/src/main/java/org/springframework/ws/soap/saaj/Saaj13SoapFaultDetail.java
index 20663941..6983beab 100644
--- a/core/src/main/java/org/springframework/ws/soap/saaj/Saaj13SoapFaultDetail.java
+++ b/core/src/main/java/org/springframework/ws/soap/saaj/Saaj13SoapFaultDetail.java
@@ -50,6 +50,10 @@ class Saaj13SoapFaultDetail implements SoapFaultDetail {
return new DOMSource(saajDetail);
}
+ public Result getResult() {
+ return new DOMResult(saajDetail);
+ }
+
public SoapFaultDetailElement addFaultDetailElement(QName name) {
try {
DetailEntry saajDetailEntry = saajDetail.addDetailEntry(name);
diff --git a/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11BodyTest.java b/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11BodyTest.java
index cad003ef..c1f1a2da 100644
--- a/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11BodyTest.java
+++ b/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11BodyTest.java
@@ -32,4 +32,8 @@ public class AxiomSoap11BodyTest extends AbstractSoap11BodyTestCase {
public void testAddFaultWithDetail() throws Exception {
// Overriden because of http://issues.apache.org/jira/browse/WSCOMMONS-38
}
+
+ public void testAddFaultWithDetailResult() throws Exception {
+ // Overriden because of http://issues.apache.org/jira/browse/WSCOMMONS-38
+ }
}
diff --git a/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11BodyTestCase.java b/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11BodyTestCase.java
index 4c6c9315..e047e6b3 100644
--- a/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11BodyTestCase.java
+++ b/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11BodyTestCase.java
@@ -36,15 +36,13 @@ public abstract class AbstractSoap11BodyTestCase extends AbstractSoapBodyTestCas
public void testGetSource() throws Exception {
StringResult result = new StringResult();
transformer.transform(soapBody.getSource(), result);
- assertXMLEqual("Invalid contents of body",
- "