|
I'd really like the priority promoted to "Blocker" since this kills any progress for us on a project. Who can do that to this bug? If me, how? If we can't do it to this bug, should I duplicate the bug with that priority? I'd hate to have to do that, but this is something of a killer bug, and since the interface (http://opcfoundation.org/webservices/XMLDA/1.0/) in question fails in 1.1, 1.2 and Axis2, without a bug fix or workaround, we're totoally blocked. Thanks.
I think there is a bug in the code that determines whether arrays should be wrapped or not (see --wrapArrays option). It seems to ignore your attributes. I think setting the WSDL2Java option --wrapArrays should solve your problem. Please comment here if it works.
From a quick first attempt, this looks as though it may be a valid work around. I'll build up the server-side code and check it more thoroughly.
Upgrading to a blocker as requested.
Note that you may have to provide the fix for this yourself, as this priority doesn't imply that someone is working on it. I've also got this problem. I only had one attribute and I worked around it by using an extra element instead of the attribute.
Karen: In this case, the WSDL interface is defined by a third party, so I don't have the luxury of changing it.
Tom: Thanks, and yes I realize that there's no promises that any bug will be fixed, but I figure that upping the priority can't hurt. My personal hope is that someone will recognise that this interface has caused, and is continuing to cause, problems with every release of Axis and that it will become a test interface, thereby improving the quality of Axis for all users. --wrapArrays is also looking hopeful as a work-around. As far as I can tell the work around, that is using -w on the WSDL2Java command line is a satisfactory work around for this issue in my case.
Unfortunately, I still can't proceed to fully test because 2222 is still a problem: https://issues.apache.org/jira/browse/AXIS-2222 With a work around, we could drop the priority of this bug to something less than blocker. Could someone please boost 2222 to blocker (I realize that in principle this has no effect, but it does make me feel that at least the days spend on Axis are not completely wasted). Thanks. Patch to fix this bug.
I noticed this is still broken in Axis 1.4. Also, this bug causes bad type generation for WSRP 2.0 schema: http://www.oasis-open.org/apps/org/workgroup/wsrp/download.php/20061/wsrp_v2_types.xsd It looks like the same bug as I have observed:
AXIS can not handle the following type definition: <xsd:complexType name="SomeName"> <xsd:sequence> <xsd:element name="N1" type="Type1" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="N2" type="Type2" use="required"/> </xsd:complexType> Fix 1: Change the xsd by adding another element (that is not used), e.g. <xsd:complexType name="SomeName"> <xsd:sequence> <xsd:element name="N1" type="Type1" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="N2" type="Type2" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="N2" type="Type2" use="required"/> </xsd:complexType> Fix 2: Correct the AXIS source code, SchemaUtils.java: ------------------------------------------------------------ public static QName getCollectionComponentQName(Node node, QNameHolder itemQName, BooleanHolder forElement, SymbolTable symbolTable) { // If we're going to turn "wrapped" arrays into types such that ... } if (element == null) { return null; } // OK, exactly one element child of <sequence>, // now check if there is no attribute if (SchemaUtils.getChildByName(node, "attribute") != null) { return null; } // continue the processing using that element ... ------------------------------------------------------------ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
eg browse from http://opcfoundation.org/webservices/XMLDA/1.0/
generates this:
public BrowseResponse browse(javax.xml.namespace.QName[] parameters) throws RemoteException {
which is missing the attributes. Without a fix or workaround, I'd also like to suggest that this bug gets promoted to critical since no progress can be made without a fix.
In the same WSDL it seems that "SubscriptionPolledRefresh" also misgenerates code.
<s:element name="Browse">
-
<s:complexType>
-
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="PropertyNames" type="s:QName"/>
</s:sequence>
<s:attribute name="LocaleID" type="s:string"/>
<s:attribute name="ClientRequestHandle" type="s:string"/>
<s:attribute name="ItemPath" type="s:string"/>
<s:attribute name="ItemName" type="s:string"/>
<s:attribute name="ContinuationPoint" type="s:string"/>
<s:attribute default="0" name="MaxElementsReturned" type="s:int"/>
<s:attribute default="all" name="BrowseFilter" type="s0:browseFilter"/>
<s:attribute name="ElementNameFilter" type="s:string"/>
<s:attribute name="VendorFilter" type="s:string"/>
<s:attribute default="false" name="ReturnAllProperties" type="s:boolean"/>
<s:attribute default="false" name="ReturnPropertyValues" type="s:boolean"/>
<s:attribute default="false" name="ReturnErrorText" type="s:boolean"/>
</s:complexType>
</s:element>