tomj        2002/09/25 14:00:38

  Added:       java/test/wsdl/esr build.xml esr.wsdl
                        EsrTestBindingImpl.java EsrTestServiceTestCase.java
  Log:
  New test for bug 12636 - DII call with multiple parameters.
  
  Revision  Changes    Path
  1.1                  xml-axis/java/test/wsdl/esr/build.xml
  
  Index: build.xml
  ===================================================================
  <?xml version="1.0" ?>
  <!DOCTYPE project [
          <!ENTITY properties SYSTEM "file:../../../xmls/properties.xml">
          <!ENTITY paths  SYSTEM "file:../../../xmls/path_refs.xml">
          <!ENTITY taskdefs SYSTEM "file:../../../xmls/taskdefs.xml">
          <!ENTITY taskdefs_post_compile SYSTEM 
"file:../../../xmls/taskdefs_post_compile.xml">
          <!ENTITY targets SYSTEM "file:../../../xmls/targets.xml">
  ]>
  
  <!-- ===================================================================
  <description>
     Test/Sample Component file for Axis
  
  Notes:
     This is a build file for use with the Jakarta Ant build tool.
  
  Prerequisites:
  
     jakarta-ant from http://jakarta.apache.org
  
  Build Instructions:
     To compile
          ant compile
     To execute
          ant run
  
  Author:
    Matt Seibert [EMAIL PROTECTED]
  
  Copyright:
    Copyright (c) 2002-2003 Apache Software Foundation.
  </description>
  ==================================================================== -->
  
  <project default="compile">
  
  <property name="axis.home" location="../../.." />
  <property name="componentName" value="test/wsdl/esr" />
          &properties;
          &paths;
          &taskdefs;
          &taskdefs_post_compile;
          &targets;
  
  <target name="clean">
      <echo message="Removing ${build.dir}/classes/${componentName} and 
${build.dir}/work/${componentName}" />
      <delete dir="${build.dir}/classes/${componentName}"/>
      <delete dir="${build.dir}/work/${componentName}"/>
  </target>
  
  <target name="copy" depends="setenv"/>
  
  <target name="compile" depends="copy">
    <echo message="Compiling test.wsdl.esr"/>
      <!-- This is a DII test with multiple output params -->
      <wsdl2java url="${axis.home}/test/wsdl/esr/esr.wsdl"
                 output="${axis.home}/build/work"
                 serverSide="yes"
                 skeletonDeploy="yes"
                 helperGen="yes"
                 testcase="yes">
      </wsdl2java>
  
     <copy todir="${build.dir}/work/test/wsdl/esr" overwrite="yes">
        <fileset dir="${axis.home}/test/wsdl/esr">
          <include name="*TestCase.java"/>
          <include name="*Impl.java"/>
        </fileset>
      </copy>
  
      <javac srcdir="${build.dir}/work" destdir="${build.dest}" fork="${javac.fork}"
             debug="${debug}">
        <classpath refid="classpath" />
        <include name="test/wsdl/esr/*.java" />
        <include name="test/wsdl/esr/**/*.java" />
      </javac>
  
  </target>
  
  <target name="run" >
    <antcall target="execute-Component" />
  </target>
  
  </project>
  
  
  
  1.1                  xml-axis/java/test/wsdl/esr/esr.wsdl
  
  Index: esr.wsdl
  ===================================================================
  <?xml version="1.0" ?>
  
  <definitions 
      name="esr types test"
      targetNamespace="urn:esr.wsdl.test"
      xmlns:tns="urn:esr.wsdl.test"
      xmlns:typens="urn:comprehensive-types.types.wsdl.test"
      xmlns:typens2="urn:comprehensive-types2.types.wsdl.test"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
      xmlns="http://schemas.xmlsoap.org/wsdl/";>
  
    <!-- message declns -->
    <message name='EsrTest.esrRequest'>
      <part name='value' type='xsd:short'/>
    </message>
    <message name='EsrTest.esrResponse'>
      <part name='echoVal' type='xsd:short'/>
      <part name='sqrtVal' type='xsd:double'/>
    </message>
  
    <!-- port type declns -->
    <portType name='EsrTest'>
      <operation name='esrInOut' parameterOrder='value echoVal sqrtVal'>
        <input message='tns:EsrTest.esrRequest' />
        <output message='tns:EsrTest.esrResponse' />
      </operation>
    </portType>
  
    <!-- binding declns -->
    <binding name="EsrTestBinding" type="tns:EsrTest">
      <soap:binding
          style="rpc"
          transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="esrInOut">
        <soap:operation soapAction=""/>
        <input>
          <soap:body
              use="encoded"
              namespace=""
              encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
        </input>
        <output>
          <soap:body
              use="encoded"
              namespace=""
              encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
        </output>
      </operation>
    </binding>
  
    <!-- service decln -->
    <service name="EsrTestService">
      <port name="EsrTest" binding="tns:EsrTestBinding">
        <soap:address location="http://localhost:8080/axis/services/EsrTest"/>
      </port>
    </service>
  
  </definitions>
  
  
  
  
  1.1                  xml-axis/java/test/wsdl/esr/EsrTestBindingImpl.java
  
  Index: EsrTestBindingImpl.java
  ===================================================================
  /**
   * EsrTestBindingImpl.java
   *
   * Test for bug 12636
   */
  
  package test.wsdl.esr;
  
  public class EsrTestBindingImpl implements test.wsdl.esr.EsrTest{
      public void esrInOut(short value, javax.xml.rpc.holders.ShortHolder echoVal, 
javax.xml.rpc.holders.DoubleHolder sqrtVal) throws java.rmi.RemoteException {
          echoVal.value = (short)value;
          sqrtVal.value = Math.sqrt(value);
      }
  }
  
  
  1.1                  xml-axis/java/test/wsdl/esr/EsrTestServiceTestCase.java
  
  Index: EsrTestServiceTestCase.java
  ===================================================================
  /**
   * EsrTestServiceTestCase.java
   *
   * Test for bug 12636
   * Uses the Service interface to deal with WSDL instead of stubs.
   */
  
  package test.wsdl.esr;
  
  import org.apache.axis.transport.http.SimpleAxisWorker;
  
  import javax.xml.namespace.QName;
  
  public class EsrTestServiceTestCase extends junit.framework.TestCase {
      public EsrTestServiceTestCase(java.lang.String name) {
          super(name);
      }
  
      public void test1EsrTestEsrInOut() {
          // Using WSDL file to make a SOAP call
          try {
              String thisHost = SimpleAxisWorker.getLocalHost();
              String thisPort = System.getProperty("test.functional.ServicePort", 
"8080");
  
              //load wsdl file
              String wsdlLocation = "http://"; + thisHost + ":" + thisPort + 
"/axis/services/EsrTest?WSDL";
              javax.xml.rpc.Service svc =
                      new org.apache.axis.client.Service(
                              wsdlLocation,
                              new javax.xml.namespace.QName("urn:esr.wsdl.test",
                                      "EsrTestService")
                      );
                        
              //setting up the call
              javax.xml.rpc.Call call = svc.createCall(
                      new javax.xml.namespace.QName("urn:esr.wsdl.test",
                              "EsrTest"),
                      new javax.xml.namespace.QName("urn:esr.wsdl.test",
                                      "esrInOut")
              );
                        
              //init in params
              Object[] soapInParams = new Object[]{new Short((short) 5)};
                        
              //calling soap service
              Object ret = call.invoke(soapInParams);
                        
              //printing output params
              java.util.Map outParams = call.getOutputParams();
  
              // Debug code if you need it
              /*
              java.util.Collection outs = outParams.values();
              java.util.Iterator it = outs.iterator();
              int i = 1;
              while (it.hasNext()) {
                  System.out.println(i++ + ". " + it.next().toString());
              }
              */
  
              // Expecting a short and a double back
              assertEquals("Number of output parameters is wrong", outParams.size(), 
2);
              Object s = outParams.get(new QName("echoVal"));
              assertNotNull("echoVal paramter is null", s);
              assertEquals("echoVal parameter is incorrect", (Short)s, new 
Short((short) 5) );
              Object sq = outParams.get(new QName("sqrtVal"));
              assertNotNull("sqrtVal paramter is null", sq);
              assertEquals("sqrtVal parameter is incorrect", 
((Double)sq).doubleValue(), Math.sqrt(5), 0.001D );
  
          } catch (Exception e) {
              e.printStackTrace(System.out);
              throw new junit.framework.AssertionFailedError("Exception caught: " + e);
          }
  
      }
  }
  
  
  


Reply via email to