axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephan Rosner (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AXIS2-3398) Empty array causes other parameter to be null
Date Tue, 11 Dec 2007 14:49:43 GMT

     [ https://issues.apache.org/jira/browse/AXIS2-3398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Stephan Rosner updated AXIS2-3398:
----------------------------------

    Attachment: client.jar
                server.jar
                Axis2BugService.wsdl

> 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
>         Attachments: Axis2BugService.wsdl, client.jar, server.jar
>
>
> 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message