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 gd...@apache.org on 2001/07/17 14:41:24 UTC
cvs commit: xml-axis/java/test/RPCDispatch TestSerializedRPC.java
gdaniels 01/07/17 05:41:24
Modified: java/src/org/apache/axis/message RPCHandler.java
java/test/RPCDispatch TestSerializedRPC.java
Log:
Fix default type determination based on method name, and add a unit test
which exercises this functionality.
Revision Changes Path
1.5 +19 -4 xml-axis/java/src/org/apache/axis/message/RPCHandler.java
Index: RPCHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- RPCHandler.java 2001/07/17 01:53:03 1.4
+++ RPCHandler.java 2001/07/17 12:41:23 1.5
@@ -45,6 +45,11 @@
AxisClassLoader cl = msgContext.getClassLoader();
JavaClass jc = cl.lookup(clsName);
Class cls = jc.getJavaClass();
+
+ if (DEBUG_LOG) {
+ System.err.println("Looking up method '" + methodName +
+ "' in class " + clsName);
+ }
// try to find the method without knowing the number of
// parameters. If we are successful, we can make better
@@ -86,7 +91,7 @@
Vector params = call.getParams();
if (serviceDesc == null && params.isEmpty()) {
- determineDefaultParams(localName, context);
+ determineDefaultParams(call.getMethodName(), context);
}
// This is a param.
@@ -107,15 +112,25 @@
if (serviceDesc != null) {
String msgType = context.getEnvelope().getMessageType();
type = serviceDesc.getParamTypeByName(msgType, localName);
+ if (DEBUG_LOG) {
+ System.err.println("Type from service desc was " + type);
+ }
}
// and if we still don't know, check the introspected types
- if (type==null && defaultParamTypes!=null &&
- params.size()<defaultParamTypes.length) {
+ //
+ // NOTE : We don't check params.isEmpty() here because we
+ // must have added at least one above...
+ //
+ if (type==null && defaultParamTypes!=null &&
+ params.size()<=defaultParamTypes.length) {
TypeMappingRegistry typeMap = context.
getTypeMappingRegistry();
type = typeMap.getTypeQName(
- defaultParamTypes[params.size()]);
+ defaultParamTypes[params.size()-1]);
+ if (DEBUG_LOG) {
+ System.err.println("Type from default parms was " + type);
+ }
}
}
1.4 +18 -0 xml-axis/java/test/RPCDispatch/TestSerializedRPC.java
Index: TestSerializedRPC.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestSerializedRPC.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestSerializedRPC.java 2001/07/08 14:18:39 1.3
+++ TestSerializedRPC.java 2001/07/17 12:41:24 1.4
@@ -144,6 +144,24 @@
assertEquals(expected, rpc("reverseData", arg, true));
}
+ /**
+ * Test a method that reverses a data structure
+ */
+ public void testReverseDataWithUntypedParam() throws Exception {
+ BeanSerializer ser = new BeanSerializer(Data.class);
+ DeserializerFactory dSerFactory = BeanSerializer.getFactory();
+ QName qName = new QName("urn:foo", "Data");
+ engine.registerTypeMapping(qName, Data.class, dSerFactory,
+ ser);
+
+ // invoke the service and verify the result
+ String arg = "<arg0 xmlns:foo=\"urn:foo\">";
+ arg += "<field1>5</field1><field2>abc</field2><field3>3</field3>";
+ arg += "</arg0>";
+ Data expected = new Data(3, "cba", 5);
+ assertEquals(expected, rpc("reverseData", arg, true));
+ }
+
public static void main(String args[]) {
try {
TestSerializedRPC tester = new TestSerializedRPC("Test Serialized RPC");