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();
      }
  }
  
  
  

Reply via email to