Cory, don't forget to enter a bug or this will just get lost...

-----Original Message-----
From: Cory Wilkerson [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, September 03, 2003 10:28 PM
To: [EMAIL PROTECTED]
Subject: FW: why oh why - soapenc & minOccurs -- some resolution!


Make that org.apache.axis.wsdl.symbolTable.Utils

-----Original Message-----
From: Cory Wilkerson 
Sent: Wednesday, September 03, 2003 10:26 PM
To: [EMAIL PROTECTED]
Subject: RE: why oh why - soapenc & minOccurs -- some resolution!


Aha -- because if the minOccurs attribute = 0, then Axis replaces the
qname that woulda been "xsd:int" (where xsd =
http://www.w3.org/2001/XMLSchema) with "soapenc:int" (where soapenc =
http://schemas.xmlsoap.org/soap/encoding/).  This all takes place in
org.apache.axis.wsdl.symbolTable#getNillableQName -- it appears that the
Axis developers are coupling the concept of nillable and minOccurs = 0
as per this comment from the source:

                    // If we have a minoccurs="0"/maxoccurs="1", this is
just
                    // like a nillable single value, so treat it as
such.

I don't mean to drag everyone into this, but is that correct?  If the
thing *doesn't* occur, I suppose it could be represented as xs:nil, but,
seeing as how Axis is generating this from WSDL that clearly states the
type is of type "xsd:int" -- I don't think the the toolkit should be
making judgments as to whether or not it can swap in/out namespaces.
After all, the server side will most likely be expecting to see a value
from the xsd namespace.

The issue gets further muddied when you consider that the soapenc's
(http://schemas.xmlsoap.org/soap/encoding/.) representation of int is
just a restriction on xsd's int (http://www.w3.org/2001/XMLSchema).  

I guess this is one of the reasons the ws-i people put their collective
foot down.  
Cory


-----Original Message-----
From: Cory Wilkerson [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, September 03, 2003 5:20 PM
To: [EMAIL PROTECTED]
Subject: why oh why - soapenc & minOccurs


All,

Does anyone have any input as to why, when given schema such as the
following:

<wsdl:types>
        <xsd:schema targetNamespace="http://www.foo.com";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>   
                <xsd:element name="foo">
                        <xsd:complexType>
                                <xsd:sequence>
                                        <xsd:element name="bar"
type="xsd:int" minOccurs="0"/>
                                </xsd:sequence>
                        </xsd:complexType>
                </xsd:element>
        </xsd:schema>
<wsdl:types>

WSDL2Java generates code that indicates that bar is of type "int" as
defined in the "http://schemas.xmlsoap.org/soap/encoding/"; namespace?  I
am bewildered.  If I remove the minOccurs attribute, Axis will generate
the correct stub.

Sorry for a quasi-repost -- perhaps I didn't phrase my original issue
well or no one knew the answer ;).

Thanks,
Cory Wilkerson

Reply via email to