dims        2002/06/23 07:25:52

  Modified:    java/src/org/apache/axis/message Detail.java
                        DetailEntry.java SOAPBody.java SOAPFault.java
               java/test/functional TestJAXMSamples.java
  Added:       java/samples/jaxm SOAPFaultTest.java
  Log:
  Hooking up Detail/DetailEntry etc of SAAJ.
  
  Revision  Changes    Path
  1.1                  xml-axis/java/samples/jaxm/SOAPFaultTest.java
  
  Index: SOAPFaultTest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package samples.jaxm;
  
  import javax.xml.soap.Detail;
  import javax.xml.soap.DetailEntry;
  import javax.xml.soap.MessageFactory;
  import javax.xml.soap.Name;
  import javax.xml.soap.SOAPBody;
  import javax.xml.soap.SOAPEnvelope;
  import javax.xml.soap.SOAPFault;
  import javax.xml.soap.SOAPMessage;
  import java.util.Iterator;
  
  public class SOAPFaultTest {
  
      public static void main(String[] args) throws Exception {
          MessageFactory msgFactory =
                  MessageFactory.newInstance();
          SOAPMessage msg = msgFactory.createMessage();
          SOAPEnvelope envelope =
                  msg.getSOAPPart().getEnvelope();
          SOAPBody body = envelope.getBody();
          SOAPFault fault = body.addFault();
  
          fault.setFaultCode("Client");
          fault.setFaultString(
                  "Message does not have necessary info");
          fault.setFaultActor("http://gizmos.com/order";);
  
          Detail detail = fault.addDetail();
  
          Name entryName = envelope.createName("order", "PO",
                  "http://gizmos.com/orders/";);
          DetailEntry entry = detail.addDetailEntry(entryName);
          entry.addTextNode(
                  "quantity element does not have a value");
  
          Name entryName2 = envelope.createName("confirmation",
                  "PO", "http://gizmos.com/confirm";);
          DetailEntry entry2 = detail.addDetailEntry(entryName2);
          entry2.addTextNode("Incomplete address: no zip code");
  
          msg.saveChanges();
  
          // Now retrieve the SOAPFault object and its contents
          //after checking to see that there is one
  
          if (body.hasFault()) {
              fault = body.getFault();
              String code = fault.getFaultCode();
              String string = fault.getFaultString();
              String actor = fault.getFaultActor();
  
              System.out.println("SOAP fault contains: ");
              System.out.println("    fault code = " + code);
              System.out.println("    fault string = " + string);
              if (actor != null) {
                  System.out.println("    fault actor = " + actor);
              }
  
              detail = fault.getDetail();
              if (detail != null) {
                  Iterator it = detail.getDetailEntries();
                  while (it.hasNext()) {
                      entry = (DetailEntry) it.next();
                      String value = entry.getValue();
                      System.out.println("    Detail entry = " + value);
                  }
              }
          }
      }
  }
  
  
  1.4       +5 -4      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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Detail.java       22 Jun 2002 23:14:04 -0000      1.3
  +++ Detail.java       23 Jun 2002 14:25:51 -0000      1.4
  @@ -63,6 +63,7 @@
   import javax.xml.soap.Name;
   import javax.xml.soap.SOAPException;
   import java.util.Iterator;
  +import java.util.Vector;
   
   /**
    * Detail Container implementation
  @@ -92,8 +93,9 @@
        * @throws SOAPException  thrown when there is a problem in adding a 
DetailEntry object to this Detail object.
        */
       public DetailEntry addDetailEntry(Name name) throws SOAPException {
  -        //TODO: Flesh this out.
  -        return null;
  +        DetailEntry entry = new org.apache.axis.message.DetailEntry(name);
  +        addChildElement(entry);
  +        return entry;
       }
   
       /**
  @@ -102,7 +104,6 @@
        *        objects in this <code>Detail</code> object
        */
       public Iterator getDetailEntries() {
  -        //TODO: Flesh this out.
  -        return null;
  +        return this.getChildElements();
       }
   }
  
  
  
  1.2       +3 -0      xml-axis/java/src/org/apache/axis/message/DetailEntry.java
  
  Index: DetailEntry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/DetailEntry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DetailEntry.java  29 May 2002 17:00:00 -0000      1.1
  +++ DetailEntry.java  23 Jun 2002 14:25:51 -0000      1.2
  @@ -61,4 +61,7 @@
    * @author Davanum Srinivas ([EMAIL PROTECTED])
    */
   public class DetailEntry extends MessageElement implements 
javax.xml.soap.DetailEntry {
  +    public DetailEntry(javax.xml.soap.Name name){
  +        super(name);
  +    }
   }
  
  
  
  1.21      +15 -5     xml-axis/java/src/org/apache/axis/message/SOAPBody.java
  
  Index: SOAPBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPBody.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- SOAPBody.java     11 Jun 2002 14:53:59 -0000      1.20
  +++ SOAPBody.java     23 Jun 2002 14:25:51 -0000      1.21
  @@ -222,17 +222,27 @@
       }
   
       public javax.xml.soap.SOAPFault addFault() throws SOAPException {
  -        // not yet implemented
  -        return null;
  +        SOAPFault fault = new SOAPFault(new AxisFault());
  +        addBodyElement(fault);
  +        return fault;
       }
   
       public javax.xml.soap.SOAPFault getFault() {
  -        // not yet implemented
  -        return null;
  +        try {
  +            return 
(javax.xml.soap.SOAPFault)getBodyByName(Constants.URI_SOAP11_ENV, 
Constants.ELEM_FAULT);
  +        } catch(AxisFault af){
  +            log.fatal(JavaUtils.getMessage("exception00"), af);
  +            return null;
  +        }
       }
   
       public boolean hasFault() {
  -        // not yet implemented
  +        try {
  +            if(getBodyByName(Constants.URI_SOAP11_ENV, Constants.ELEM_FAULT)!=null)
  +                return true;
  +        } catch(AxisFault af){
  +            log.fatal(JavaUtils.getMessage("exception00"), af);
  +        }
           return false;
       }
   }
  
  
  
  1.3       +9 -4      xml-axis/java/src/org/apache/axis/message/SOAPFault.java
  
  Index: SOAPFault.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFault.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SOAPFault.java    22 Jun 2002 23:14:04 -0000      1.2
  +++ SOAPFault.java    23 Jun 2002 14:25:51 -0000      1.3
  @@ -237,8 +237,9 @@
        *     application-specific error information
        */
       public javax.xml.soap.Detail getDetail() {
  -        //TODO: Flesh this out.
  -        return null;
  +        if(this.getChildren()==null || this.getChildren().size()<=0)
  +            return null;
  +        return (javax.xml.soap.Detail) this.getChildren().get(0);
       }
   
       /**
  @@ -255,7 +256,11 @@
        *     <CODE>Detail</CODE> object
        */
       public javax.xml.soap.Detail addDetail() throws javax.xml.soap.SOAPException {
  -        //TODO: Flesh this out.
  -        return null;
  +        if(getDetail()!=null){
  +            throw new 
javax.xml.soap.SOAPException(org.apache.axis.utils.JavaUtils.getMessage("valuePresent"));
  +        }
  +        Detail detail = new Detail(fault);
  +        addChildElement(detail);
  +        return detail;
       }
   }
  
  
  
  1.6       +11 -1     xml-axis/java/test/functional/TestJAXMSamples.java
  
  Index: TestJAXMSamples.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/TestJAXMSamples.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestJAXMSamples.java      22 Jun 2002 16:15:34 -0000      1.5
  +++ TestJAXMSamples.java      23 Jun 2002 14:25:52 -0000      1.6
  @@ -61,6 +61,7 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import samples.jaxm.UddiPing;
  +import samples.jaxm.SOAPFaultTest;
   
   import java.net.ConnectException;
   
  @@ -74,6 +75,15 @@
           super(name);
       } // ctor
   
  +    public void testSOAPFaultTest () throws Exception {
  +        try {
  +            SOAPFaultTest.main(new String[0]);
  +        } catch (Throwable t) {
  +            t.printStackTrace();
  +            throw new Exception("Fault returned from test: " + t);
  +        }
  +    }
  +
       public void testUddiPing() throws Exception {
           try {
               log.info("Testing JAXM UddiPing sample.");
  @@ -129,7 +139,7 @@
   
       public static void main(String args[]) throws Exception {
           TestJAXMSamples tester = new TestJAXMSamples("tester");
  -        tester.testUddiPing();
  +        tester.testSOAPFaultTest();
       } // main
   }
   
  
  
  


Reply via email to