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]

Reply via email to