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");