dims 2002/12/01 10:53:46 Added: java/test/wsdl/gateway build.xml Gateway.java GatewayServiceTestCase.java GatewaySoapBindingImpl.java MyClass.java OutClass.java Log: Test case for Bug 14033 - bean property multi-dimensional arrays don't deserialize Notes: - Am unable to find the cause of problem - To recreate the problem comment out setValues and getValues method in MyClass.java and run "ant compile run" from the test/wsdl/gateway directory. Revision Changes Path 1.1 xml-axis/java/test/wsdl/gateway/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/gateway" /> &properties; &paths; &taskdefs; &taskdefs_post_compile; &targets; <target name="clean"> <echo message="componentName is ${componentName}"/> <echo message="Removing ${build.dir}/**/test/wsdl/gateway" /> <delete dir="${build.dir}/classes/test/wsdl/gateway"/> <delete dir="${build.dir}/work/test/wsdl/gateway"/> </target> <!-- main target, always start from scratch --> <target name="compile" depends="setenv, clean"> <echo message="Compiling test.wsdl.gateway"/> <!-- Compile the test classes for Java2WSDL --> <javac srcdir="${axis.home}/test/wsdl/gateway" destdir="${build.dest}" fork="${javac.fork}" debug="${debug}"> <classpath refid="classpath" /> <include name="Gateway.java" /> <include name="MyClass.java" /> <include name="OutClass.java" /> </javac> <mkdir dir="${build.dir}/work/test/wsdl/gateway"/> <!-- Generate WSDL from java --> <java2wsdl output="${build.dir}/work/test/wsdl/gateway/Gateway.wsdl" className= "test.wsdl.gateway.Gateway" extraClasses="test.wsdl.gateway.MyClass, test.wsdl.gateway.OutClass" namespace="http://test.com/gateway" location="http://localhost:8080/axis/services/Gateway"> <mapping package="test.wsdl.gateway" namespace="http://test.com/gateway" /> </java2wsdl> <!-- Verify files generated based on everything in WSDL --> <wsdl2java url="${build.dir}/work/test/wsdl/gateway/Gateway.wsdl" output="${axis.home}/build/work" serverSide="yes" all="yes" verbose="no" testcase="no"> <mapping namespace="http://test.com/gateway" package="test.wsdl.gateway"/> </wsdl2java> <!-- Copy the test case --> <copy file="GatewayServiceTestCase.java" overwrite="true" todir="${build.dir}/work/test/wsdl/gateway"/> <!-- Copy the binding impl case --> <copy file="GatewaySoapBindingImpl.java" overwrite="true" todir="${build.dir}/work/test/wsdl/gateway"/> <!-- Clean up old classes --> <delete dir="${build.dir}/classes/test/wsdl/gateway" /> <!-- Compile the test case --> <javac srcdir="${build.dir}/work" destdir="${build.dest}" fork="${javac.fork}" debug="${debug}"> <classpath refid="classpath" /> <include name="test/wsdl/gateway/*.java" /> </javac> </target> <target name="run" > <antcall target="execute-Component" /> </target> </project> 1.1 xml-axis/java/test/wsdl/gateway/Gateway.java Index: Gateway.java =================================================================== package test.wsdl.gateway; public interface Gateway { public String test1(MyClass myClass); public MyClass test2(); public String[][] test3(); public String test4(String[][] param); } 1.1 xml-axis/java/test/wsdl/gateway/GatewayServiceTestCase.java Index: GatewayServiceTestCase.java =================================================================== /** * GatewayServiceTestCase.java * * This file was auto-generated from WSDL * by the Apache Axis WSDL2Java emitter. */ package test.wsdl.gateway; public class GatewayServiceTestCase extends junit.framework.TestCase { public GatewayServiceTestCase(java.lang.String name) { super(name); } public void test1GatewayTest1() throws Exception { test.wsdl.gateway.Gateway binding; try { binding = new test.wsdl.gateway.GatewayServiceLocator().getGateway(); } catch (javax.xml.rpc.ServiceException jre) { if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); } assertTrue("binding is null", binding != null); // Test operation test.wsdl.gateway.MyClass myClass = new test.wsdl.gateway.MyClass(); myClass.setValues(new String[][]{{"hello"}}); java.lang.String value = null; value = binding.test1(myClass); // TBD - validate results } public void test2GatewayTest2() throws Exception { test.wsdl.gateway.Gateway binding; try { binding = new test.wsdl.gateway.GatewayServiceLocator().getGateway(); } catch (javax.xml.rpc.ServiceException jre) { if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); } assertTrue("binding is null", binding != null); // Test operation test.wsdl.gateway.MyClass response = null; response = binding.test2(); assertTrue(response.getValues()!=null); System.out.println("Response cell 1,1="+response.getValues()[1][1]); } public void test3GatewayTest3() throws Exception { test.wsdl.gateway.Gateway binding; try { binding = new test.wsdl.gateway.GatewayServiceLocator().getGateway(); } catch (javax.xml.rpc.ServiceException jre) { if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); } assertTrue("binding is null", binding != null); // Test operation java.lang.String[][] value = null; value = binding.test3(); // TBD - validate results } public void test4GatewayTest4() throws Exception { test.wsdl.gateway.Gateway binding; try { binding = new test.wsdl.gateway.GatewayServiceLocator().getGateway(); } catch (javax.xml.rpc.ServiceException jre) { if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); } assertTrue("binding is null", binding != null); // Test operation java.lang.String value = null; value = binding.test4(new java.lang.String[0][0]); // TBD - validate results } } 1.1 xml-axis/java/test/wsdl/gateway/GatewaySoapBindingImpl.java Index: GatewaySoapBindingImpl.java =================================================================== /** * GatewaySoapBindingImpl.java * * This file was auto-generated from WSDL * by the Apache Axis WSDL2Java emitter. */ package test.wsdl.gateway; public class GatewaySoapBindingImpl implements test.wsdl.gateway.Gateway{ public java.lang.String test1(test.wsdl.gateway.MyClass myClass) throws java.rmi.RemoteException { String[][] textArray=myClass.getValues(); return "value of 1,1 = "+textArray[0][0]; } public test.wsdl.gateway.MyClass test2() throws java.rmi.RemoteException { String[][] param=new String[2][]; param[0]=new String[1]; param[0][0]="0,0"; param[1]=new String[3]; param[1][0]="1,0"; param[1][1]="*1,1"; param[1][2]="1,2"; MyClass myClass=new MyClass(); myClass.setValues(param); return myClass; } public java.lang.String[][] test3() throws java.rmi.RemoteException { return null; } public java.lang.String test4(java.lang.String[][] in0) throws java.rmi.RemoteException { return null; } } 1.1 xml-axis/java/test/wsdl/gateway/MyClass.java Index: MyClass.java =================================================================== package test.wsdl.gateway; /** * To recreate the Bug 14033 - bean property multi-dimensional arrays don't deserialize * problem, just comment out the getValues and setValues methods */ public class MyClass { public String[][] Values; public String[][] getValues() { return Values; } public void setValues(String[][] values) { Values=values; } } 1.1 xml-axis/java/test/wsdl/gateway/OutClass.java Index: OutClass.java =================================================================== package test.wsdl.gateway; public class OutClass { public String text; public int val; }