Empty array causes other parameter to be null ---------------------------------------------
Key: AXIS2-3398 URL: https://issues.apache.org/jira/browse/AXIS2-3398 Project: Axis 2.0 (Axis2) Issue Type: Bug Affects Versions: 1.3 Environment: Windows XP, Tomcat 5.5 Reporter: Stephan Rosner Priority: Critical Summary: I am trying to invoke the following method via Axis2 public void arrayFirst(String[] array, TwoStrings object) Whenever the first parameter (array) is an empty String array (array = new String[0];), the second object TwoStrings (which simply holds 2 Strings) is always null on the server-side no matter what you put in on the client. Detailed: The attached server.jar implements the following 2 methods: public void arrayLast(TwoStrings object, String[] array) public void arrayFirst(String[] array, TwoStrings object) Both of these simply print out the contents of the given parameters. The attached client.jar contains besides the generated stub the following 2 test cases: public class BugTest extends TestCase { /** * This does not work * Output on server side is: * --- arrayFirst --- * array.length = 1 * stringarray[0] = '' * object == null */ public void testArrayFirst() throws RemoteException { String[] stringArray = new String[0]; TwoStrings twoStrings = new TwoStrings(); twoStrings.setFirstString("first"); twoStrings.setSecondString("second"); Axis2BugServiceStub stub = new Axis2BugServiceStub(); ArrayFirst arrayFirst = new ArrayFirst(); arrayFirst.setArray(stringArray); arrayFirst.setObject(twoStrings); stub.arrayFirst(arrayFirst); } /** * This does work * Output on server side is: * --- arrayLast --- * array.length = 0 * FirstString = first * SecondString = second */ public void testArrayLast() throws RemoteException { String[] stringArray = new String[0]; TwoStrings twoStrings = new TwoStrings(); twoStrings.setFirstString("first"); twoStrings.setSecondString("second"); Axis2BugServiceStub stub = new Axis2BugServiceStub(); ArrayLast arrayLast = new ArrayLast(); arrayLast.setArray(stringArray); arrayLast.setObject(twoStrings); stub.arrayLast(arrayLast); } } Please note that in the JavaDocs of the methods I have included the printed out results from the server. This means that in the first case, where the empty array is used as the first parameter, Axis2 is thrown off so that the second parameter (the TwoString) results to null on the server. When the empty array is used as the second/last parameter things work as they should. Now I can only speculate about the reason, but have noted that in none of these 2 cases the empty array shows up as a parameter within the SOAP-envelope. This is the SOAP-envelope of the testArrayFirst() case: <?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Body> <ns2:arrayFirst xmlns:ns2="http://server.nullbug.axis2"> <ns2:object> <ns1:firstString xmlns:ns1="http://server.nullbug.axis2/xsd">first</ns1:firstString> <ns1:secondString xmlns:ns1="http://server.nullbug.axis2/xsd">second</ns1:secondString> </ns2:object> </ns2:arrayFirst> </soapenv:Body> </soapenv:Envelope> As a workaround we are currently setting the array explicitly to null, which causes the array-parameter to show up within the SOAP-envelope and to transmit correctly again. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]