axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From JOVANOVIC Nenad <Nenad.JOVANO...@svc.co.at>
Subject Questionable values with nillable / minOccurs
Date Fri, 04 Feb 2011 13:00:54 GMT
Hi all,

while testing a web service with different variations (regarding "nillable" and "minOccurs")
of input and output parameters, I discovered a few cases where the SOAP response or the Java
input object passed by Axis appears to be wrong (or at least questionable). For the complete
table,
see below (fixed-width font works best).

Here is the textual description for the first line in the "INPUT" table:

I have a web service that has a string input parameter, either directly in the service method
signature,
or indirectly in a container type. The input parameter is defined in the WSDL with nillable="false",
but the user sends in nil anyway (so the user is the cause for whatever happens next). I would
expect that Axis hands over null to the application code, but I get the empty string instead.

Any comments on this?

Thanks in advance,
Nenad Jovanovic


Cause:

U - Web Service User (Client)
D - Web Service Developer

Categories:

E: Axis error
I: Inconsistency or questionable definition


when a string element in a response object is declared with nillable="true" and minOccurs="1"

INPUT
=======

cause | cat. | type     | iface / cont. | minOccurs | nillable | SOAP           | Java expected
| Java actual
------------------------------------------------------------------------------------------------------------------
  U   |  E   | String   | both          | 0/1       | false    | xsi:nil="true" | null   
      | empty string
  U   |  E   | String[] | both          | 0/1       | false    | xsi:nil="true" | { null }
     | {empty string}
  U   |  E   | Boolean  | both          | 0         | false    | xsi:nil="true" | null   
      | false
  -   |  I   | Boolean  | both          | 0/1       | true     | <..></..>   
  | null          | false
  U   |  I   | Boolean  | both          | 0         | false    | <..></..>   
  | null          | false
  -   |  I   | Boolean  | both          | 0/1       | true     | <../>          | null
         | false
      |  I   | Boolean  | both          | 0         | false    | <../>          | null
         | false
  U   |  I   | Boolean  | iface         | 1         | false    | missing        | false (prim.)
| NullPointerExc
  U   |  E   | Boolean[]| both          | 0         | false    | xsi:nil=true   | null   
      | false


OUTPUT
=======

cause | cat. | type     | iface / container | minOccurs | nillable | Java     | SOAP expected
| SOAP actual
-----------------------------------------------------------------------------------------------------------------
  D   |  I   | String   | container         | 1         | true     | n.init.  | xsi:nil="1"
  | missing
  -   |  E   | String[] | both              | 0/1       | true     | null     | missing  
    | xsi:nil="1"
  D   |  E   | String[] | both              | 0/1       | false    | { null } | xsi:nil="1"
  | missing
  -   |  E   | Boolean[]| both              | 0/1       | true     | null     | missing  
    | xsi:nil="1"
  -   |  E   | Boolean[]| both              | 0         | false    | { null } | xsi:nil="1"
  | missing
  -   |  E   | Boolean[]| interface         | 1         | false    | WSDL2Java produces illegal
code



Mime
View raw message