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 [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/>. */ /** * This is a JWS which demonstrates Exceptions. * * @author Davanum Srinivas ([EMAIL PROTECTED]) */ 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){