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){