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 2005/01/26 01:52:48 UTC
cvs commit: ws-axis/java/src/org/apache/axis/message Text.java
dims 2005/01/25 16:52:48
Modified: java/test/wsdl/jaxrpchandler2 build.xml deploy.wsdd
EchoServiceServerHandler.java
JAXRPCHandler2TestCase.java
java/src/org/apache/axis/handlers JAXRPCHandler.java
java/src/org/apache/axis/message Text.java
Added: java/test/wsdl/jaxrpchandler2 EchoServiceServerHandler3.java
Log:
Fix for AXIS-1732 - JAXRPC Handler modification not propagated to actual service implmentation
AND
additional SAAJ problem reported by Michael Merz (working on JSR 181 impl in beehive)
Revision Changes Path
1.4 +1 -1 ws-axis/java/test/wsdl/jaxrpchandler2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdl/jaxrpchandler2/build.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- build.xml 2 Jun 2004 17:05:20 -0000 1.3
+++ build.xml 26 Jan 2005 00:52:48 -0000 1.4
@@ -59,7 +59,7 @@
<fileset dir="${axis.home}/test/wsdl/jaxrpchandler2">
<include name="*TestCase.java"/>
<include name="*Impl.java"/>
- <include name="*Handler.java"/>
+ <include name="*Handler*.java"/>
</fileset>
</copy>
1.3 +18 -9 ws-axis/java/test/wsdl/jaxrpchandler2/deploy.wsdd
Index: deploy.wsdd
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdl/jaxrpchandler2/deploy.wsdd,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- deploy.wsdd 10 Dec 2003 00:18:49 -0000 1.2
+++ deploy.wsdd 26 Jan 2005 00:52:48 -0000 1.3
@@ -1,12 +1,21 @@
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
- <service name="EchoService2" provider="java:RPC">
- <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceImpl" />
- <parameter name="allowedMethods" value="echo" />
- <requestFlow>
- <handler type="java:org.apache.axis.handlers.JAXRPCHandler">
- <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceServerHandler" />
- </handler>
- </requestFlow>
- </service>
+ <service name="EchoService2" provider="java:RPC">
+ <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceImpl"/>
+ <parameter name="allowedMethods" value="echo"/>
+ <requestFlow>
+ <handler type="java:org.apache.axis.handlers.JAXRPCHandler">
+ <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceServerHandler"/>
+ </handler>
+ </requestFlow>
+ </service>
+ <service name="EchoService3" provider="java:RPC">
+ <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceImpl"/>
+ <parameter name="allowedMethods" value="echo"/>
+ <requestFlow>
+ <handler type="java:org.apache.axis.handlers.JAXRPCHandler">
+ <parameter name="className" value="test.wsdl.jaxrpchandler2.EchoServiceServerHandler3"/>
+ </handler>
+ </requestFlow>
+ </service>
</deployment>
1.2 +0 -1 ws-axis/java/test/wsdl/jaxrpchandler2/EchoServiceServerHandler.java
Index: EchoServiceServerHandler.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdl/jaxrpchandler2/EchoServiceServerHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EchoServiceServerHandler.java 9 Dec 2003 18:42:20 -0000 1.1
+++ EchoServiceServerHandler.java 26 Jan 2005 00:52:48 -0000 1.2
@@ -28,7 +28,6 @@
SOAPElement argElement = echoElement.addChildElement("arg0");
argElement = argElement.addAttribute(soapEnvelope.createName("type", "xsi", "http://www.w3.org/2001/XMLSchema-instance"), "xsd:string");
argElement.addTextNode("my echo string");
- soapMsg.saveChanges();
} catch (Exception e) {
e.printStackTrace();
1.3 +54 -35 ws-axis/java/test/wsdl/jaxrpchandler2/JAXRPCHandler2TestCase.java
Index: JAXRPCHandler2TestCase.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdl/jaxrpchandler2/JAXRPCHandler2TestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JAXRPCHandler2TestCase.java 10 Dec 2003 00:18:49 -0000 1.2
+++ JAXRPCHandler2TestCase.java 26 Jan 2005 00:52:48 -0000 1.3
@@ -1,50 +1,69 @@
package test.wsdl.jaxrpchandler2;
-import java.rmi.RemoteException;
+import junit.framework.TestCase;
import javax.xml.namespace.QName;
-import javax.xml.rpc.*;
-
-import junit.framework.TestCase;
+import javax.xml.rpc.Call;
+import javax.xml.rpc.Service;
+import javax.xml.rpc.ServiceFactory;
+import java.rmi.RemoteException;
public class JAXRPCHandler2TestCase extends TestCase {
- protected String serviceEndpointUrl =
- "http://localhost:8080/axis/services/EchoService2";
- protected String qnameService = "EchoService2";
- protected String qnamePort = "EchoServicePort";
-
- protected Call call;
-
- protected String echoString = "my echo string";
-
public JAXRPCHandler2TestCase(String arg0) {
- super(arg0);
+ super(arg0);
}
- public void testJAXRPCHandler2() {
- call.setOperationName(new QName("http://soapinterop.org/", "echo"));
- String returnString = null;
- try {
- returnString = (String) call.invoke(new Object[] { echoString });
- } catch (RemoteException e) {
- e.printStackTrace();
- fail("Remote exception while calling invoke");
- }
-
- assertEquals(
- "returnString does not match echoString",
- echoString,
- returnString);
+ public void testJAXRPCHandler2() throws Exception {
+ String serviceEndpointUrl =
+ "http://localhost:8080/axis/services/EchoService2";
+ String qnameService = "EchoService2";
+ String qnamePort = "EchoServicePort";
+ Call call;
+ String echoString = "my echo string";
+ ServiceFactory serviceFactory = ServiceFactory.newInstance();
+ Service service = serviceFactory.createService(new QName(qnameService));
+ call = service.createCall(new QName(qnamePort));
+ call.setTargetEndpointAddress(serviceEndpointUrl);
+ call.setOperationName(new QName("http://soapinterop.org/", "echo"));
+ String returnString = null;
+ try {
+ returnString = (String) call.invoke(new Object[]{echoString});
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ fail("Remote exception while calling invoke");
+ }
+ assertEquals("returnString does not match echoString",
+ echoString,
+ returnString);
+ }
+
+ public void testJAXRPCHandler3() throws Exception {
+ String serviceEndpointUrl =
+ "http://localhost:8080/axis/services/EchoService3";
+ String qnameService = "EchoService3";
+ String qnamePort = "EchoServicePort";
+ Call call;
+ String echoString = "Joe";
+ ServiceFactory serviceFactory = ServiceFactory.newInstance();
+ Service service = serviceFactory.createService(new QName(qnameService));
+ call = service.createCall(new QName(qnamePort));
+ call.setTargetEndpointAddress(serviceEndpointUrl);
+ call.setOperationName(new QName("http://soapinterop.org/", "echo"));
+ String returnString = null;
+ try {
+ returnString = (String) call.invoke(new Object[]{echoString});
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ fail("Remote exception while calling invoke");
+ }
+ assertEquals(
+ "Sam",
+ returnString);
}
-
- protected void setUp() throws Exception {
- super.setUp();
- ServiceFactory serviceFactory = ServiceFactory.newInstance();
- Service service = serviceFactory.createService(new QName(qnameService));
- call = service.createCall(new QName(qnamePort));
- call.setTargetEndpointAddress(serviceEndpointUrl);
+ protected void setUp() throws Exception {
+ super.setUp();
}
}
1.1 ws-axis/java/test/wsdl/jaxrpchandler2/EchoServiceServerHandler3.java
Index: EchoServiceServerHandler3.java
===================================================================
package test.wsdl.jaxrpchandler2;
import org.w3c.dom.Node;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.Handler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.SOAPMessage;
public class EchoServiceServerHandler3 implements Handler {
private HandlerInfo info;
public void init(HandlerInfo handlerInfo) {
info = handlerInfo;
}
public void destroy() {
}
public QName[] getHeaders() {
return info.getHeaders();
}
public boolean handleRequest(MessageContext mc) {
try {
SOAPMessage msg = ((SOAPMessageContext) mc).getMessage();
Node child = msg.getSOAPPart().getEnvelope().getBody()
.getFirstChild()
.getFirstChild()
.getFirstChild();
String name = child.getNodeValue();
if (name != null && name.equals("Joe")) {
child.setNodeValue("Sam");
}
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
public boolean handleResponse(MessageContext mc) {
return true;
}
public boolean handleFault(MessageContext mc) {
return true;
}
}
1.14 +15 -4 ws-axis/java/src/org/apache/axis/handlers/JAXRPCHandler.java
Index: JAXRPCHandler.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/handlers/JAXRPCHandler.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- JAXRPCHandler.java 29 Oct 2004 21:03:23 -0000 1.13
+++ JAXRPCHandler.java 26 Jan 2005 00:52:48 -0000 1.14
@@ -21,6 +21,7 @@
import org.apache.axis.components.logger.LogFactory;
import org.apache.commons.logging.Log;
+import javax.xml.soap.SOAPException;
import java.util.Map;
@@ -48,10 +49,20 @@
public void invoke(MessageContext msgContext) throws AxisFault {
log.debug("Enter: JAXRPCHandler::enter invoke");
- if (!msgContext.getPastPivot()) {
- impl.handleRequest(msgContext);
- } else {
- impl.handleResponse(msgContext);
+ try {
+ if (!msgContext.getPastPivot()) {
+ impl.handleRequest(msgContext);
+ } else {
+ impl.handleResponse(msgContext);
+ }
+ } finally {
+ if (msgContext.getMessage().saveRequired()) {
+ try {
+ msgContext.getMessage().saveChanges();
+ } catch (SOAPException e) {
+ AxisFault.makeFault(e);
+ }
+ }
}
log.debug("Enter: JAXRPCHandler::exit invoke");
}
1.13 +1 -0 ws-axis/java/src/org/apache/axis/message/Text.java
Index: Text.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/message/Text.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Text.java 10 Aug 2004 02:36:45 -0000 1.12
+++ Text.java 26 Jan 2005 00:52:48 -0000 1.13
@@ -76,6 +76,7 @@
// Overriding the MessageElement Method, where it throws exeptions.
public void setNodeValue(String nodeValue) throws DOMException{
+ setDirty(true);
textRep.setNodeValue(nodeValue);
}