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/08/28 18:00:45 UTC

cvs commit: xml-axis/java/test/outparams PackageTests.java ServiceHandler.java TestOutParams.java

gdaniels    01/08/28 09:00:45

  Modified:    java/src/org/apache/axis/client ServiceClient.java
               java/src/org/apache/axis/handlers/soap SOAPService.java
               java/test/RPCDispatch TestRPC.java TestSerializedRPC.java
               java/test/encoding TestArrayListConversions.java
                        TestBody.java
  Added:       java/test/outparams PackageTests.java ServiceHandler.java
                        TestOutParams.java
  Log:
  * Add support for output parameters in ServiceClient.  If a SOAP response
    contains more than one param in the RPC element, we will return the first
    one as usual, and the user may call getOutputParams() to access a Vector
    containing all the others.  NOTE: the Vector contains the actual RPCParam
    objects, not their values.
  
  * Unit test for above.
  
  * Remove unused param in SOAPService constructor, and fix all refs (have I
    mentioned that IDEA *rocks* for refactoring? :))
  
  Revision  Changes    Path
  1.44      +35 -6     xml-axis/java/src/org/apache/axis/client/ServiceClient.java
  
  Index: ServiceClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceClient.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- ServiceClient.java	2001/08/18 21:18:22	1.43
  +++ ServiceClient.java	2001/08/28 16:00:43	1.44
  @@ -102,8 +102,9 @@
   
       private static Hashtable transports = new Hashtable();
       private static boolean initialized = false;
  -    
  -                                                        
  +
  +    private static FileProvider configProvider = new FileProvider("client-config.xml");
  +
       /** Register a Transport that should be used for URLs of the specified
        * protocol.
        * 
  @@ -176,9 +177,10 @@
       // Our Transport, if any
       private Transport transport;
       private String    transportName;
  -    
  -    private static FileProvider configProvider = new FileProvider("client-config.xml");
   
  +    // A place to store output parameters
  +    private Vector outParams = null;
  +
       /**
        * Basic, no-argument constructor.
        */
  @@ -373,8 +375,22 @@
       {
           this.serviceDesc = serviceDesc;
       }
  -    
  +
       /**
  +     * Get the output parameters (if any) from the last invocation.
  +     *
  +     * NOTE that the params returned are all RPCParams, containing
  +     * name and value - if you want the value, you'll need to call
  +     * param.getValue().
  +     *
  +     * @return a Vector of RPCParams
  +     */
  +    public Vector getOutputParams()
  +    {
  +        return this.outParams;
  +    }
  +
  +    /**
        * Map a type for serialization.
        * 
        * @param _class the Java class of the data type.
  @@ -472,7 +488,10 @@
           Message              resMsg = null ;
           Vector               resArgs = null ;
           Object               result = null ;
  -        
  +
  +        // Clear the output params
  +        outParams = null;
  +
           String uri = null;
           if (serviceDesc != null) uri = serviceDesc.getEncodingStyleURI();
           if (uri != null) reqEnv.setEncodingStyleURI(uri);
  @@ -540,6 +559,16 @@
           if (resArgs != null && resArgs.size() > 0) {
               RPCParam param = (RPCParam)resArgs.get(0);
               result = param.getValue();
  +
  +            /**
  +             * Are there out-params?  If so, return a Vector instead.
  +             */
  +            if (resArgs.size() > 1) {
  +                outParams = new Vector();
  +                for (int i = 1; i < resArgs.size(); i++) {
  +                    outParams.add(resArgs.get(i));
  +                }
  +            }
           }
           
           Debug.Print( 1, "Exit: ServiceClient::invoke(RPCElement)" );
  
  
  
  1.19      +1 -1      xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
  
  Index: SOAPService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- SOAPService.java	2001/08/03 19:12:59	1.18
  +++ SOAPService.java	2001/08/28 16:00:44	1.19
  @@ -121,7 +121,7 @@
       /** Convenience constructor for wrapping SOAP semantics around
        * "service handlers" which actually do work.
        */
  -    public SOAPService(Handler serviceHandler, String pivotName)
  +    public SOAPService(Handler serviceHandler)
       {
           this();
           setPivotHandler(serviceHandler);
  
  
  
  1.21      +4 -4      xml-axis/java/test/RPCDispatch/TestRPC.java
  
  Index: TestRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- TestRPC.java	2001/08/14 03:49:19	1.20
  +++ TestRPC.java	2001/08/28 16:00:44	1.21
  @@ -101,7 +101,7 @@
        */
       public void testReverseString() throws Exception {
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +        SOAPService reverse = new SOAPService(RPCDispatcher);
           reverse.addOption("className", "test.RPCDispatch.Service");
           reverse.addOption("methodName", "reverseString");
           sr.add(SOAPAction, reverse);
  @@ -115,7 +115,7 @@
        */
       public void testReverseData() throws Exception {
           // Register the reverseData service
  -        SOAPService reverse = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +        SOAPService reverse = new SOAPService(RPCDispatcher);
           reverse.addOption("className", "test.RPCDispatch.Service");
           reverse.addOption("methodName", "reverseData");
           sr.add(SOAPAction, reverse);
  @@ -131,7 +131,7 @@
        */
       public void testMessageContext() throws Exception {
           // Register the targetService service
  -        SOAPService tgtSvc = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
           tgtSvc.addOption("className", "test.RPCDispatch.Service");
           tgtSvc.addOption("methodName", "targetService");
           sr.add(SOAPAction, tgtSvc);
  @@ -145,7 +145,7 @@
        */
       public void testNull() throws Exception {
           // Register the echoInt service
  -        SOAPService echoInt = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +        SOAPService echoInt = new SOAPService(RPCDispatcher);
           echoInt.addOption("className", "test.RPCDispatch.Service");
           echoInt.addOption("methodName", "echoInt");
           sr.add(SOAPAction, echoInt);
  
  
  
  1.9       +1 -1      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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestSerializedRPC.java	2001/08/11 14:26:11	1.8
  +++ TestSerializedRPC.java	2001/08/28 16:00:44	1.9
  @@ -48,7 +48,7 @@
           RPCDispatcher = hr.find("RPCDispatcher");
           
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +        SOAPService reverse = new SOAPService(RPCDispatcher);
           reverse.addOption("className", "test.RPCDispatch.Service");
           reverse.addOption("methodName", "*");
           engine.deployService(SOAPAction, reverse);
  
  
  
  1.4       +1 -1      xml-axis/java/test/encoding/TestArrayListConversions.java
  
  Index: TestArrayListConversions.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestArrayListConversions.java	2001/07/01 12:38:47	1.3
  +++ TestArrayListConversions.java	2001/08/28 16:00:44	1.4
  @@ -46,7 +46,7 @@
       AxisServer server = new AxisServer();
       HandlerRegistry hr = (HandlerRegistry) server.getHandlerRegistry();
       Handler disp = hr.find("RPCDispatcher");    
  -    SOAPService service = new SOAPService(disp, "RPCDispatcher");
  +    SOAPService service = new SOAPService(disp);
       service.addOption("className", "test.encoding.TestArrayListConversions");
       service.addOption("methodName", "*");
       
  
  
  
  1.3       +1 -1      xml-axis/java/test/encoding/TestBody.java
  
  Index: TestBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestBody.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestBody.java	2001/07/10 16:04:59	1.2
  +++ TestBody.java	2001/08/28 16:00:44	1.3
  @@ -47,7 +47,7 @@
          
          // register the service with the engine
          Handler RPCDispatcher = hr.find("RPCDispatcher");
  -       SOAPService target = new SOAPService(RPCDispatcher, "RPCDispatcher");
  +       SOAPService target = new SOAPService(RPCDispatcher);
          sr.add(namespace, target);
   
          // create a message in context
  
  
  
  1.1                  xml-axis/java/test/outparams/PackageTests.java
  
  Index: PackageTests.java
  ===================================================================
  package test.outparams;
  
  import junit.framework.TestCase;
  import junit.framework.Test;
  import junit.framework.TestSuite;
  
  /**
   *  Test package for output params
   */
  public class PackageTests extends TestCase {
  
      public PackageTests(String name) {
          super(name);
      }
  
      public static Test suite() throws Exception {
          TestSuite suite = new TestSuite();
  
          suite.addTestSuite(TestOutParams.class);
  
          return suite;
      }
  }
  
  
  
  1.1                  xml-axis/java/test/outparams/ServiceHandler.java
  
  Index: ServiceHandler.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 1999 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/>.
   */
  
  package test.outparams;
  
  import org.apache.axis.handlers.BasicHandler;
  import org.apache.axis.MessageContext;
  import org.apache.axis.AxisFault;
  import org.apache.axis.Message;
  import org.apache.axis.message.SOAPEnvelope;
  import org.apache.axis.message.RPCElement;
  import org.apache.axis.message.RPCParam;
  
  public class ServiceHandler extends BasicHandler {
      public static final String OUTPARAM1 = "Output param value";
      public static final Float OUTPARAM2 = new Float(4.56);
  
      /** Must implement this in subclasses.
       */
      public void undo(MessageContext msgContext) {
      }
  
      public void invoke(MessageContext msgContext) throws AxisFault {
          SOAPEnvelope env = new SOAPEnvelope();
  
          RPCParam retVal = new RPCParam("return", new Integer(5));
          RPCParam outParam1 = new RPCParam("out1", OUTPARAM1);
          RPCParam outParam2 = new RPCParam("out2", OUTPARAM2);
  
          RPCElement rpc = new RPCElement("namespace", "response", new Object []
                              { retVal, outParam1, outParam2 });
  
          env.addBodyElement(rpc);
  
          msgContext.setResponseMessage(new Message(env));
      }
  }
  
  
  
  1.1                  xml-axis/java/test/outparams/TestOutParams.java
  
  Index: TestOutParams.java
  ===================================================================
  package test.outparams;
  
  import junit.framework.TestCase;
  
  import org.apache.axis.*;
  import org.apache.axis.transport.local.LocalTransport;
  import org.apache.axis.client.ServiceClient;
  import org.apache.axis.encoding.*;
  import org.apache.axis.handlers.soap.*;
  import org.apache.axis.message.*;
  import org.apache.axis.server.*;
  import org.apache.axis.registries.*;
  
  import java.util.Vector;
  
  import test.RPCDispatch.Data;
  
  /**
   * Test org.apache.axis.handlers.RPCDispatcher
   *
   * @author Sam Ruby <ru...@us.ibm.com>
   */
  public class TestOutParams extends TestCase {
      private final String serviceURN = "urn:X-test-outparams";
  
  
      /** A fixed message, since the return is hardcoded */
      private final String message =
          "<?xml version=\"1.0\"?>\n" +
          "<soap:Envelope " +
               "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
               "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" " +
               "xmlns:xsi=\"" + Constants.URI_CURRENT_SCHEMA_XSI + "\" " +
               "xmlns:xsd=\"" + Constants.URI_CURRENT_SCHEMA_XSD + "\">\n" +
               "<soap:Body>\n" +
               "<ns:someMethod xmlns:ns=\"" + serviceURN + "\"/>\n" +
               "</soap:Body>\n" +
          "</soap:Envelope>\n";
  
      private ServiceClient client = new ServiceClient();
      private AxisServer server = new AxisServer();
  
      private HandlerRegistry hr;
      private HandlerRegistry sr;
  
      public TestOutParams(String name) {
          super(name);
          server.init();
          hr = (HandlerRegistry) server.getHandlerRegistry();
          sr = (HandlerRegistry) server.getServiceRegistry();
      }
  
      /**
       * Test returning output params
       */
      public void testOutputParams() throws Exception {
          // Register the service
          Handler h = new ServiceHandler();
  
          // ??? Do we need to register the handler?
  
          SOAPService service = new SOAPService(h);
          sr.add(serviceURN, service);
  
          // Make sure the local transport uses the server we just configured
          client.setTransport(new LocalTransport(server));
  
          // Create the message context
          MessageContext msgContext = new MessageContext(server);
  
          // Construct the soap request
          SOAPEnvelope envelope = new SOAPEnvelope();
          msgContext.setRequestMessage(new Message(envelope));
  
          // Invoke the Axis server
          Object ret = client.invoke(serviceURN, "method",
                                  new Object [] { "test" });
  
          Vector outParams = client.getOutputParams();
          assertNotNull("Null outParams!", outParams);
  
          RPCParam param = (RPCParam)outParams.get(0);
          assertEquals(param.getValue(), ServiceHandler.OUTPARAM1);
  
          param = (RPCParam)outParams.get(1);
          assertEquals(param.getValue(), ServiceHandler.OUTPARAM2);
      }
  
      public static void main(String args[])
      {
        try {
          TestOutParams tester = new TestOutParams("RPC test");
          tester.testOutputParams();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
  }
  
  
  

Re: cvs commit: xml-axis/java/test/outparams PackageTests.java ServiceHandler.java TestOutParams.java

Posted by heplists <he...@yahoo.com>.
Thank you sir...this makes my life 1000 times easier.


----- Original Message -----
From: <gd...@apache.org>
To: <xm...@apache.org>
Sent: Tuesday, August 28, 2001 12:00 PM
Subject: cvs commit: xml-axis/java/test/outparams PackageTests.java
ServiceHandler.java TestOutParams.java


> gdaniels    01/08/28 09:00:45
>
>   Modified:    java/src/org/apache/axis/client ServiceClient.java
>                java/src/org/apache/axis/handlers/soap SOAPService.java
>                java/test/RPCDispatch TestRPC.java TestSerializedRPC.java
>                java/test/encoding TestArrayListConversions.java
>                         TestBody.java
>   Added:       java/test/outparams PackageTests.java ServiceHandler.java
>                         TestOutParams.java
>   Log:
>   * Add support for output parameters in ServiceClient.  If a SOAP
response
>     contains more than one param in the RPC element, we will return the
first
>     one as usual, and the user may call getOutputParams() to access a
Vector
>     containing all the others.  NOTE: the Vector contains the actual
RPCParam
>     objects, not their values.
>
>   * Unit test for above.
>
>   * Remove unused param in SOAPService constructor, and fix all refs (have
I
>     mentioned that IDEA *rocks* for refactoring? :))
>
>   Revision  Changes    Path
>   1.44      +35 -6
xml-axis/java/src/org/apache/axis/client/ServiceClient.java
>
>   Index: ServiceClient.java
>   ===================================================================
>   RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceClient.java,v
>   retrieving revision 1.43
>   retrieving revision 1.44
>   diff -u -r1.43 -r1.44
>   --- ServiceClient.java 2001/08/18 21:18:22 1.43
>   +++ ServiceClient.java 2001/08/28 16:00:43 1.44
>   @@ -102,8 +102,9 @@
>
>        private static Hashtable transports = new Hashtable();
>        private static boolean initialized = false;
>   -
>   -
>   +
>   +    private static FileProvider configProvider = new
FileProvider("client-config.xml");
>   +
>        /** Register a Transport that should be used for URLs of the
specified
>         * protocol.
>         *
>   @@ -176,9 +177,10 @@
>        // Our Transport, if any
>        private Transport transport;
>        private String    transportName;
>   -
>   -    private static FileProvider configProvider = new
FileProvider("client-config.xml");
>
>   +    // A place to store output parameters
>   +    private Vector outParams = null;
>   +
>        /**
>         * Basic, no-argument constructor.
>         */
>   @@ -373,8 +375,22 @@
>        {
>            this.serviceDesc = serviceDesc;
>        }
>   -
>   +
>        /**
>   +     * Get the output parameters (if any) from the last invocation.
>   +     *
>   +     * NOTE that the params returned are all RPCParams, containing
>   +     * name and value - if you want the value, you'll need to call
>   +     * param.getValue().
>   +     *
>   +     * @return a Vector of RPCParams
>   +     */
>   +    public Vector getOutputParams()
>   +    {
>   +        return this.outParams;
>   +    }
>   +
>   +    /**
>         * Map a type for serialization.
>         *
>         * @param _class the Java class of the data type.
>   @@ -472,7 +488,10 @@
>            Message              resMsg = null ;
>            Vector               resArgs = null ;
>            Object               result = null ;
>   -
>   +
>   +        // Clear the output params
>   +        outParams = null;
>   +
>            String uri = null;
>            if (serviceDesc != null) uri =
serviceDesc.getEncodingStyleURI();
>            if (uri != null) reqEnv.setEncodingStyleURI(uri);
>   @@ -540,6 +559,16 @@
>            if (resArgs != null && resArgs.size() > 0) {
>                RPCParam param = (RPCParam)resArgs.get(0);
>                result = param.getValue();
>   +
>   +            /**
>   +             * Are there out-params?  If so, return a Vector instead.
>   +             */
>   +            if (resArgs.size() > 1) {
>   +                outParams = new Vector();
>   +                for (int i = 1; i < resArgs.size(); i++) {
>   +                    outParams.add(resArgs.get(i));
>   +                }
>   +            }
>            }
>
>            Debug.Print( 1, "Exit: ServiceClient::invoke(RPCElement)" );
>
>
>
>   1.19      +1 -1
xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
>
>   Index: SOAPService.java
>   ===================================================================
>   RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
>   retrieving revision 1.18
>   retrieving revision 1.19
>   diff -u -r1.18 -r1.19
>   --- SOAPService.java 2001/08/03 19:12:59 1.18
>   +++ SOAPService.java 2001/08/28 16:00:44 1.19
>   @@ -121,7 +121,7 @@
>        /** Convenience constructor for wrapping SOAP semantics around
>         * "service handlers" which actually do work.
>         */
>   -    public SOAPService(Handler serviceHandler, String pivotName)
>   +    public SOAPService(Handler serviceHandler)
>        {
>            this();
>            setPivotHandler(serviceHandler);
>
>
>
>   1.21      +4 -4      xml-axis/java/test/RPCDispatch/TestRPC.java
>
>   Index: TestRPC.java
>   ===================================================================
>   RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v
>   retrieving revision 1.20
>   retrieving revision 1.21
>   diff -u -r1.20 -r1.21
>   --- TestRPC.java 2001/08/14 03:49:19 1.20
>   +++ TestRPC.java 2001/08/28 16:00:44 1.21
>   @@ -101,7 +101,7 @@
>         */
>        public void testReverseString() throws Exception {
>            // Register the reverseString service
>   -        SOAPService reverse = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +        SOAPService reverse = new SOAPService(RPCDispatcher);
>            reverse.addOption("className", "test.RPCDispatch.Service");
>            reverse.addOption("methodName", "reverseString");
>            sr.add(SOAPAction, reverse);
>   @@ -115,7 +115,7 @@
>         */
>        public void testReverseData() throws Exception {
>            // Register the reverseData service
>   -        SOAPService reverse = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +        SOAPService reverse = new SOAPService(RPCDispatcher);
>            reverse.addOption("className", "test.RPCDispatch.Service");
>            reverse.addOption("methodName", "reverseData");
>            sr.add(SOAPAction, reverse);
>   @@ -131,7 +131,7 @@
>         */
>        public void testMessageContext() throws Exception {
>            // Register the targetService service
>   -        SOAPService tgtSvc = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
>            tgtSvc.addOption("className", "test.RPCDispatch.Service");
>            tgtSvc.addOption("methodName", "targetService");
>            sr.add(SOAPAction, tgtSvc);
>   @@ -145,7 +145,7 @@
>         */
>        public void testNull() throws Exception {
>            // Register the echoInt service
>   -        SOAPService echoInt = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +        SOAPService echoInt = new SOAPService(RPCDispatcher);
>            echoInt.addOption("className", "test.RPCDispatch.Service");
>            echoInt.addOption("methodName", "echoInt");
>            sr.add(SOAPAction, echoInt);
>
>
>
>   1.9       +1 -1
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.8
>   retrieving revision 1.9
>   diff -u -r1.8 -r1.9
>   --- TestSerializedRPC.java 2001/08/11 14:26:11 1.8
>   +++ TestSerializedRPC.java 2001/08/28 16:00:44 1.9
>   @@ -48,7 +48,7 @@
>            RPCDispatcher = hr.find("RPCDispatcher");
>
>            // Register the reverseString service
>   -        SOAPService reverse = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +        SOAPService reverse = new SOAPService(RPCDispatcher);
>            reverse.addOption("className", "test.RPCDispatch.Service");
>            reverse.addOption("methodName", "*");
>            engine.deployService(SOAPAction, reverse);
>
>
>
>   1.4       +1 -1
xml-axis/java/test/encoding/TestArrayListConversions.java
>
>   Index: TestArrayListConversions.java
>   ===================================================================
>   RCS file:
/home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- TestArrayListConversions.java 2001/07/01 12:38:47 1.3
>   +++ TestArrayListConversions.java 2001/08/28 16:00:44 1.4
>   @@ -46,7 +46,7 @@
>        AxisServer server = new AxisServer();
>        HandlerRegistry hr = (HandlerRegistry) server.getHandlerRegistry();
>        Handler disp = hr.find("RPCDispatcher");
>   -    SOAPService service = new SOAPService(disp, "RPCDispatcher");
>   +    SOAPService service = new SOAPService(disp);
>        service.addOption("className",
"test.encoding.TestArrayListConversions");
>        service.addOption("methodName", "*");
>
>
>
>
>   1.3       +1 -1      xml-axis/java/test/encoding/TestBody.java
>
>   Index: TestBody.java
>   ===================================================================
>   RCS file: /home/cvs/xml-axis/java/test/encoding/TestBody.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- TestBody.java 2001/07/10 16:04:59 1.2
>   +++ TestBody.java 2001/08/28 16:00:44 1.3
>   @@ -47,7 +47,7 @@
>
>           // register the service with the engine
>           Handler RPCDispatcher = hr.find("RPCDispatcher");
>   -       SOAPService target = new SOAPService(RPCDispatcher,
"RPCDispatcher");
>   +       SOAPService target = new SOAPService(RPCDispatcher);
>           sr.add(namespace, target);
>
>           // create a message in context
>
>
>
>   1.1                  xml-axis/java/test/outparams/PackageTests.java
>
>   Index: PackageTests.java
>   ===================================================================
>   package test.outparams;
>
>   import junit.framework.TestCase;
>   import junit.framework.Test;
>   import junit.framework.TestSuite;
>
>   /**
>    *  Test package for output params
>    */
>   public class PackageTests extends TestCase {
>
>       public PackageTests(String name) {
>           super(name);
>       }
>
>       public static Test suite() throws Exception {
>           TestSuite suite = new TestSuite();
>
>           suite.addTestSuite(TestOutParams.class);
>
>           return suite;
>       }
>   }
>
>
>
>   1.1                  xml-axis/java/test/outparams/ServiceHandler.java
>
>   Index: ServiceHandler.java
>   ===================================================================
>   /*
>    * The Apache Software License, Version 1.1
>    *
>    *
>    * Copyright (c) 1999 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/>.
>    */
>
>   package test.outparams;
>
>   import org.apache.axis.handlers.BasicHandler;
>   import org.apache.axis.MessageContext;
>   import org.apache.axis.AxisFault;
>   import org.apache.axis.Message;
>   import org.apache.axis.message.SOAPEnvelope;
>   import org.apache.axis.message.RPCElement;
>   import org.apache.axis.message.RPCParam;
>
>   public class ServiceHandler extends BasicHandler {
>       public static final String OUTPARAM1 = "Output param value";
>       public static final Float OUTPARAM2 = new Float(4.56);
>
>       /** Must implement this in subclasses.
>        */
>       public void undo(MessageContext msgContext) {
>       }
>
>       public void invoke(MessageContext msgContext) throws AxisFault {
>           SOAPEnvelope env = new SOAPEnvelope();
>
>           RPCParam retVal = new RPCParam("return", new Integer(5));
>           RPCParam outParam1 = new RPCParam("out1", OUTPARAM1);
>           RPCParam outParam2 = new RPCParam("out2", OUTPARAM2);
>
>           RPCElement rpc = new RPCElement("namespace", "response", new
Object []
>                               { retVal, outParam1, outParam2 });
>
>           env.addBodyElement(rpc);
>
>           msgContext.setResponseMessage(new Message(env));
>       }
>   }
>
>
>
>   1.1                  xml-axis/java/test/outparams/TestOutParams.java
>
>   Index: TestOutParams.java
>   ===================================================================
>   package test.outparams;
>
>   import junit.framework.TestCase;
>
>   import org.apache.axis.*;
>   import org.apache.axis.transport.local.LocalTransport;
>   import org.apache.axis.client.ServiceClient;
>   import org.apache.axis.encoding.*;
>   import org.apache.axis.handlers.soap.*;
>   import org.apache.axis.message.*;
>   import org.apache.axis.server.*;
>   import org.apache.axis.registries.*;
>
>   import java.util.Vector;
>
>   import test.RPCDispatch.Data;
>
>   /**
>    * Test org.apache.axis.handlers.RPCDispatcher
>    *
>    * @author Sam Ruby <ru...@us.ibm.com>
>    */
>   public class TestOutParams extends TestCase {
>       private final String serviceURN = "urn:X-test-outparams";
>
>
>       /** A fixed message, since the return is hardcoded */
>       private final String message =
>           "<?xml version=\"1.0\"?>\n" +
>           "<soap:Envelope " +
>                "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" "
+
>
"xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" " +
>                "xmlns:xsi=\"" + Constants.URI_CURRENT_SCHEMA_XSI + "\" " +
>                "xmlns:xsd=\"" + Constants.URI_CURRENT_SCHEMA_XSD + "\">\n"
+
>                "<soap:Body>\n" +
>                "<ns:someMethod xmlns:ns=\"" + serviceURN + "\"/>\n" +
>                "</soap:Body>\n" +
>           "</soap:Envelope>\n";
>
>       private ServiceClient client = new ServiceClient();
>       private AxisServer server = new AxisServer();
>
>       private HandlerRegistry hr;
>       private HandlerRegistry sr;
>
>       public TestOutParams(String name) {
>           super(name);
>           server.init();
>           hr = (HandlerRegistry) server.getHandlerRegistry();
>           sr = (HandlerRegistry) server.getServiceRegistry();
>       }
>
>       /**
>        * Test returning output params
>        */
>       public void testOutputParams() throws Exception {
>           // Register the service
>           Handler h = new ServiceHandler();
>
>           // ??? Do we need to register the handler?
>
>           SOAPService service = new SOAPService(h);
>           sr.add(serviceURN, service);
>
>           // Make sure the local transport uses the server we just
configured
>           client.setTransport(new LocalTransport(server));
>
>           // Create the message context
>           MessageContext msgContext = new MessageContext(server);
>
>           // Construct the soap request
>           SOAPEnvelope envelope = new SOAPEnvelope();
>           msgContext.setRequestMessage(new Message(envelope));
>
>           // Invoke the Axis server
>           Object ret = client.invoke(serviceURN, "method",
>                                   new Object [] { "test" });
>
>           Vector outParams = client.getOutputParams();
>           assertNotNull("Null outParams!", outParams);
>
>           RPCParam param = (RPCParam)outParams.get(0);
>           assertEquals(param.getValue(), ServiceHandler.OUTPARAM1);
>
>           param = (RPCParam)outParams.get(1);
>           assertEquals(param.getValue(), ServiceHandler.OUTPARAM2);
>       }
>
>       public static void main(String args[])
>       {
>         try {
>           TestOutParams tester = new TestOutParams("RPC test");
>           tester.testOutputParams();
>         } catch (Exception e) {
>           e.printStackTrace();
>         }
>       }
>   }
>
>
>