You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2002/11/03 17:51:49 UTC

cvs commit: xml-axis/java/src/org/apache/axis/soap SOAPConnectionImpl.java

dims        2002/11/03 08:51:49

  Modified:    java/test/functional build.xml TestJAXMSamples.java
               java/test build_functional_tests.xml
               java/src/org/apache/axis/client Call.java
               java/src/org/apache/axis/soap SOAPConnectionImpl.java
  Added:       java/test/functional FaultTest.jws
  Log:
  Fix and test case for Bug 14175 - SOAPConnection.call() not behaving properly when a SOAP Fault is returned
  
  Revision  Changes    Path
  1.15      +1 -0      xml-axis/java/test/functional/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/build.xml,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- build.xml	17 Oct 2002 20:41:09 -0000	1.14
  +++ build.xml	3 Nov 2002 16:51:48 -0000	1.15
  @@ -60,6 +60,7 @@
     <mkdir dir="${axis.home}/build/jws" />
     <copy file="${axis.home}/test/functional/AltStockQuoteService.jws" todir="${axis.home}/build/jws" />
     <copy file="${axis.home}/test/functional/GlobalTypeTest.jws" todir="${axis.home}/build/jws"/>
  +  <copy file="${axis.home}/test/functional/FaultTest.jws" todir="${axis.home}/build/jws"/>
   </target>
   
   <target name="junit-functional-prepare" if="junit.present">
  
  
  
  1.17      +37 -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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- TestJAXMSamples.java	11 Sep 2002 22:23:39 -0000	1.16
  +++ TestJAXMSamples.java	3 Nov 2002 16:51:48 -0000	1.17
  @@ -57,12 +57,25 @@
   
   import junit.framework.TestCase;
   import org.apache.axis.AxisFault;
  +import org.apache.axis.client.Call;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
   import samples.jaxm.DelayedStockQuote;
   import samples.jaxm.SOAPFaultTest;
   import samples.jaxm.UddiPing;
   
  +import javax.xml.soap.SOAPConnectionFactory;
  +import javax.xml.soap.SOAPConnection;
  +import javax.xml.soap.MessageFactory;
  +import javax.xml.soap.SOAPMessage;
  +import javax.xml.soap.SOAPPart;
  +import javax.xml.soap.SOAPEnvelope;
  +import javax.xml.soap.SOAPHeader;
  +import javax.xml.soap.SOAPBody;
  +import javax.xml.soap.Name;
  +import javax.xml.soap.SOAPBodyElement;
  +import javax.xml.soap.SOAPElement;
  +import javax.xml.messaging.URLEndpoint;
   import java.net.SocketException;
   
   
  @@ -137,10 +150,33 @@
               throw new Exception("Fault returned from test: " + t);
           }
       } // testGetQuote
  +    
  +    public void testJWSFault() throws Exception {
  +        SOAPConnectionFactory scFactory = SOAPConnectionFactory.newInstance();
  +        SOAPConnection con = scFactory.createConnection();
  +
  +        MessageFactory factory = MessageFactory.newInstance();
  +        SOAPMessage message = factory.createMessage();
  +
  +        SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
  +        SOAPBody body = envelope.getBody();
  +
  +        Name bodyName = envelope.createName("echo");
  +        SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
  +
  +        Name name = envelope.createName("arg0");
  +        SOAPElement symbol = bodyElement.addChildElement(name);
  +        symbol.addTextNode("Hello");
  +
  +        URLEndpoint endpoint = new URLEndpoint("http://localhost:8080/jws/FaultTest.jws");
  +        SOAPMessage response = con.call(message, endpoint);
  +        SOAPBody respBody = response.getSOAPPart().getEnvelope().getBody();
  +        assertTrue(respBody.hasFault());
  +    }
   
       public static void main(String args[]) throws Exception {
           TestJAXMSamples tester = new TestJAXMSamples("tester");
  -        tester.testSOAPFaultTest();
  +        tester.testJWSFault();
       } // main
   }
   
  
  
  
  1.1                  xml-axis/java/test/functional/FaultTest.jws
  
  Index: FaultTest.jws
  ===================================================================
  /*
   * 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 apache@apache.org.
   *
   * 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/>.
   */
  
  /**
   * This is a JWS which demonstrates Exceptions.
   *
   * @author Davanum Srinivas (dims@apache.org)
   */
  public class FaultTest {
      /**
       * Echo a bean.
       *
       * @param bean
       * @return the bean
       */
      public String echo(String s) throws Exception {
          throw new Exception("Exception from echo"); 
      }
  }
  
  
  
  1.59      +1 -0      xml-axis/java/test/build_functional_tests.xml
  
  Index: build_functional_tests.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/build_functional_tests.xml,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- build_functional_tests.xml	17 Oct 2002 20:41:09 -0000	1.58
  +++ build_functional_tests.xml	3 Nov 2002 16:51:48 -0000	1.59
  @@ -89,6 +89,7 @@
       <copy file="samples/stock/StockQuoteService.jws" todir="build/jws" />
       <copy file="test/functional/AltStockQuoteService.jws" todir="build/jws" />
       <copy file="test/functional/GlobalTypeTest.jws" todir="build/jws"/>
  +    <copy file="test/functional/FaultTest.jws" todir="build/jws"/>
   
       <!--...not to mention the sample user list -->
       <copy file="samples/stock/users.lst" todir="build"/>
  
  
  
  1.192     +2 -1      xml-axis/java/src/org/apache/axis/client/Call.java
  
  Index: Call.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
  retrieving revision 1.191
  retrieving revision 1.192
  diff -u -r1.191 -r1.192
  --- Call.java	29 Oct 2002 15:56:31 -0000	1.191
  +++ Call.java	3 Nov 2002 16:51:49 -0000	1.192
  @@ -2396,7 +2396,8 @@
   
           SOAPBodyElement respBody = resEnv.getFirstBody();
           if (respBody instanceof SOAPFault) {
  -            throw ((SOAPFault)respBody).getFault();
  +            if(returnJavaType == null || returnJavaType != javax.xml.soap.SOAPMessage.class) 
  +                throw ((SOAPFault)respBody).getFault();
           }
       }
   
  
  
  
  1.11      +1 -0      xml-axis/java/src/org/apache/axis/soap/SOAPConnectionImpl.java
  
  Index: SOAPConnectionImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/soap/SOAPConnectionImpl.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SOAPConnectionImpl.java	30 Oct 2002 17:31:29 -0000	1.10
  +++ SOAPConnectionImpl.java	3 Nov 2002 16:51:49 -0000	1.11
  @@ -101,6 +101,7 @@
                   Object attachment = iterator.next();
                   call.addAttachmentPart(attachment);
               }
  +            call.setReturnClass(SOAPMessage.class);
               call.invoke(env);
               return call.getResponseMessage();
           } catch (java.net.MalformedURLException mue){