dims 2003/06/10 09:27:34
Modified: java/src/org/apache/axis/message Detail.java
java/test/saaj PackageTests.java
Added: java/test/saaj TestSOAPFaults.java
Log:
Fix for Bug 20647 - Create Custom SOAP Fault(SAAJ spec violation)
Notes:
- Added a test case submitted by [EMAIL PROTECTED] (JohnSmith)
- Ran SAAJ TCK after this change with no problems.
Revision Changes Path
1.8 +8 -1 xml-axis/java/src/org/apache/axis/message/Detail.java
Index: Detail.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/Detail.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Detail.java 22 Apr 2003 19:35:15 -0000 1.7
+++ Detail.java 10 Jun 2003 16:27:34 -0000 1.8
@@ -94,8 +94,15 @@
* @throws SOAPException thrown when there is a problem in adding a
DetailEntry object to this Detail object.
*/
public DetailEntry addDetailEntry(Name name) throws SOAPException {
- DetailEntry entry = new org.apache.axis.message.DetailEntry(name);
+ org.apache.axis.message.DetailEntry entry = new
org.apache.axis.message.DetailEntry(name);
addChildElement(entry);
+ if(fault != null) {
+ try {
+ fault.addFaultDetail(entry.getAsDOM());
+ } catch (Exception e) {
+ throw new SOAPException(e);
+ }
+ }
return entry;
}
1.8 +1 -0 xml-axis/java/test/saaj/PackageTests.java
Index: PackageTests.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/saaj/PackageTests.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PackageTests.java 24 Mar 2003 13:50:15 -0000 1.7
+++ PackageTests.java 10 Jun 2003 16:27:34 -0000 1.8
@@ -22,6 +22,7 @@
suite.addTestSuite(test.saaj.TestSOAPFaultDetail.class);
suite.addTestSuite(test.saaj.TestHeaders.class);
suite.addTestSuite(test.saaj.TestPrefixes.class);
+ suite.addTestSuite(test.saaj.TestSOAPFaults.class);
return suite;
}
}
1.1 xml-axis/java/test/saaj/TestSOAPFaults.java
Index: TestSOAPFaults.java
===================================================================
package test.saaj;
import javax.xml.soap.Detail;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPMessage;
import java.io.ByteArrayOutputStream;
public class TestSOAPFaults extends junit.framework.TestCase {
public TestSOAPFaults(String name) {
super(name);
}
public void testQuick() throws Exception {
MessageFactory msgfactory = MessageFactory.newInstance();
SOAPFactory factory = SOAPFactory.newInstance();
SOAPMessage outputmsg = msgfactory.createMessage();
String valueCode = "faultcode";
String valueString = "faultString";
SOAPFault fault = outputmsg.getSOAPPart().getEnvelope().getBody().addFault();
fault.setFaultCode(valueCode);
fault.setFaultString(valueString);
Detail d;
d = fault.addDetail();
d.addDetailEntry(factory.createName("Hello"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (outputmsg != null) {
if (outputmsg.saveRequired()) {
outputmsg.saveChanges();
}
outputmsg.writeTo(baos);
}
String xml = new String(baos.toByteArray());
assertTrue(xml.indexOf("Hello")!=-1);
}
public static void main(String[] args) throws Exception {
TestSOAPFaults detailTest = new TestSOAPFaults("TestSOAPFaults");
detailTest.testQuick();
}
}