axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yuval (JIRA)" <>
Subject [jira] Reopened: (AXIS2-3331) wrong codegen for anytype
Date Fri, 23 Nov 2007 12:52:43 GMT


Yuval reopened AXIS2-3331:

The joy was premature.

On the following return:

<RetrievePropertiesResponse xmlns="urn:vim2">
    <obj type="Task">task-173</obj>
      <val xsi:type="xsd:int">20</val>
      <val xsi:type="TaskInfoState">running</val>

propSet is an array of type DynamicProperty, which is defined as:
         <complexType name="DynamicProperty">
               <element name="name" type="xsd:string" />
               <element name="val" type="xsd:anyType" />

The generated code for reading "val" in DynamicProperty contains:

The problem is caused by the convention that parsing an object leaves the XmlStreamReader
iterator on the closing tag. getAnyTypeObject when "val" is "xsd:int" leaves the reader on
CHARACTERS and not on the "</val>" closing tag. This is in conflict with what would
happen for a complex type.

The next code that is executed is:
   while (!reader.isStartElement() && !reader.isEndElement());
Which excpects to reach the closing tag "</propSet>", but it actually arrives "</val>".
It would return from parsing "propSet" while on "</val>" and next code will fail.

I have fixed it on my code by adding:
                    while (!xmlStreamReader.isStartElement() && !xmlStreamReader.isEndElement())
In ConverterUtils.getAnyTypeObject() the end of the true block of the (attributeNameSpace.equals(Constants.XSD_NAMESPACE))
check. I don't know if it is correct.

> wrong codegen for anytype
> -------------------------
>                 Key: AXIS2-3331
>                 URL:
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3, nightly
>            Reporter: Yuval
>            Assignee: Amila Chinthaka Suriarachchi
> I'm trying to use Axis2 to access vmware webservices.
> Several problems arised with "anyType" code generation. Axis2 1.3 generated it as OMElement,
while the nightly snapshot of Nov 06, 2007 generated it as java.lang.Object.
> Object is wrong because the code will not even compile (it has no .serialize() method).
> OMElement is wrong because it ignores text nodes (string type), thus the "builder2.getOMElement().getFirstElement()"
generated call returns null.
> IMHO it should be generated as OMNode.
> xmlns:xsd=""
>  <complexType name="DynamicProperty">
>     <sequence>
>        <element name="name" type="xsd:string" />
>        <element name="val" type="xsd:anyType" />
>     </sequence>
>  </complexType>
> For reference, the full wsdl can be downloaded after free registration from
(VMware Infrastructure SDK Packages version 2.0.1). I'm using ant, but it should be identical
to the following call:
> java org.apache.axis2.wsdl.WSDL2Java -g -ss -ns2p urn:vim2=com.vmware.vim2,urn:vim2Service=com.vmware.vim2service
-u -uri vimService.wsdl

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:
For additional commands, e-mail:

View raw message