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 ve...@apache.org on 2005/06/01 14:29:45 UTC

cvs commit: ws-axis/java/src/org/apache/axis/description OperationDesc.java

venkat      2005/06/01 05:29:45

  Modified:    java/test/outparams2 PackageTests.java
               java/src/org/apache/axis/description OperationDesc.java
  Added:       java/test/outparams2 TestOutParams2.java
  Log:
  Patches and test case for AXIS-1975 and AXIS-2002 from C�dric and Hansen. Basically sets order for the OUT parameters also.
  
  Revision  Changes    Path
  1.2       +1 -0      ws-axis/java/test/outparams2/PackageTests.java
  
  Index: PackageTests.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/test/outparams2/PackageTests.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PackageTests.java	24 Nov 2003 12:57:13 -0000	1.1
  +++ PackageTests.java	1 Jun 2005 12:29:45 -0000	1.2
  @@ -17,6 +17,7 @@
           TestSuite suite = new TestSuite();
   
           suite.addTestSuite(TestOutParams.class);
  +        suite.addTestSuite(TestOutParams2.class);
   
           return suite;
       }
  
  
  
  1.1                  ws-axis/java/test/outparams2/TestOutParams2.java
  
  Index: TestOutParams2.java
  ===================================================================
  package test.outparams2;
  
  import javax.xml.rpc.holders.StringHolder;
  
  import junit.framework.TestCase;
  
  import org.apache.axis.EngineConfiguration;
  import org.apache.axis.Message;
  import org.apache.axis.client.Call;
  import org.apache.axis.client.Service;
  import org.apache.axis.configuration.DefaultEngineConfigurationFactory;
  import org.apache.axis.configuration.SimpleProvider;
  import org.apache.axis.description.JavaServiceDesc;
  import org.apache.axis.description.OperationDesc;
  import org.apache.axis.description.ParameterDesc;
  import org.apache.axis.description.ServiceDesc;
  import org.apache.axis.handlers.soap.SOAPService;
  import org.apache.axis.message.SOAPEnvelope;
  import org.apache.axis.providers.java.RPCProvider;
  import org.apache.axis.server.AxisServer;
  import org.apache.axis.transport.local.LocalTransport;
  
  /**
   * Test if operation is invoked with parameters in good order when out parameter
   * is not the last parameter. <br>
   * It makes sure that bug described at
   * http://issues.apache.org/jira/browse/AXIS-1975 is corrected.
   * 
   * @author Cedric Chabanois (cchabanois@natsystem.fr)
   */
  public class TestOutParams2 extends TestCase {
  
      /** A fixed message, with one parameter */
      private final String message = "<?xml version=\"1.0\"?>\n"
              + "<soapenv:Envelope "
              + "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "
              + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
              + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
              + "<soapenv:Body>\n"
              + "<ns1:serviceMethod soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" "
              + "xmlns:ns1=\"outParamsTest\"><in1>18</in1></ns1:serviceMethod>\n"
              + "</soapenv:Body></soapenv:Envelope>\n";
  
      private Service s_service = null;
  
      private Call client = null;
  
      private SimpleProvider provider = new SimpleProvider();
  
      private AxisServer server = new AxisServer(provider);
  
      private static boolean called = false;
  
      public TestOutParams2(String name) {
          super(name);
          server.init();
      }
  
      public TestOutParams2() {
          super("Test Out Params");
      }
  
      public void testOutputParams() throws Exception {
          // Register the service
          s_service = new Service();
          client = (Call) s_service.createCall();
  
          SOAPService service = new SOAPService(null, new RPCProvider(), null);
          service.setName("TestOutParamsService");
          service.setOption("className", "test.outparams2.TestOutParams2");
          service.setOption("allowedMethods", "serviceMethod");
  
          ServiceDesc description = new JavaServiceDesc();
          OperationDesc operation = new OperationDesc();
          operation.setName("serviceMethod");
          ParameterDesc out1 = new ParameterDesc();
          out1.setName("out1");
          out1.setMode(ParameterDesc.OUT);
          operation.addParameter(out1);
          ParameterDesc in1 = new ParameterDesc();
          in1.setName("in1");
          in1.setMode(ParameterDesc.IN);
          operation.addParameter(in1);
          description.addOperationDesc(operation);
          service.setServiceDescription(description);
  
          EngineConfiguration defaultConfig = (new DefaultEngineConfigurationFactory())
                  .getServerEngineConfig();
          SimpleProvider config = new SimpleProvider(defaultConfig);
          config.deployService("outParamsTest", service);
          provider.deployService("outParamsTest", service);
  
          // Make sure the local transport uses the server we just configured
          client.setTransport(new LocalTransport(server));
  
          Message msg = new Message(message, false);
          SOAPEnvelope env = msg.getSOAPEnvelope();
  
          // invoke
          client.invoke(env);
          assertTrue(this.called);
      }
  
      public void serviceMethod(StringHolder out1, byte in1) {
          called = true;
      }
  
      public static void main(String args[]) {
          try {
              TestOutParams2 tester = new TestOutParams2("OutParams Test");
              tester.testOutputParams();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }
  
  
  
  1.44      +2 -1      ws-axis/java/src/org/apache/axis/description/OperationDesc.java
  
  Index: OperationDesc.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/description/OperationDesc.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- OperationDesc.java	16 Mar 2005 06:55:40 -0000	1.43
  +++ OperationDesc.java	1 Jun 2005 12:29:45 -0000	1.44
  @@ -252,10 +252,11 @@
       {
           // Should we enforce adding INs then INOUTs then OUTs?
   
  +        param.setOrder(getNumParams());
           parameters.add(param);
           if ((param.getMode() == ParameterDesc.IN) ||
               (param.getMode() == ParameterDesc.INOUT)) {
  -            param.setOrder(numInParams++);
  +            numInParams++;
           }
           if ((param.getMode() == ParameterDesc.OUT) ||
               (param.getMode() == ParameterDesc.INOUT)) {