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

Boyan Yurukov updated AXIS2-3224:
---------------------------------

    Attachment: one.wsdl

> Axis2 does not understand XSD substitutionGroup
> -----------------------------------------------
>
>                 Key: AXIS2-3224
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3224
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: adb, codegen
>    Affects Versions: 1.3, 1.2
>         Environment: WinXP, axis2 1.3 snapshot 21.09.2007
>            Reporter: Boyan Yurukov
>         Attachments: one.wsdl, someschema.xsd
>
>
> I have attached a sample schema and a wsdl. In them there is a couple of 
> elements that are in the same substitutionGroup as "SomeElementZero". Also we 
> have a list "SomeElementList" which can hold "SomeElementZero"-s. It should 
> be possible to insert all the rest elements from the substitutionGroup in the 
> list, but effectively that does not happen. What the generated java code 
> should serialize/parse as follows:
> ...
> <inner:SomeElementZero>
>     <some:SomeElementZero data="bla bla bla" />
>     <some:SomeElement1 data="bla bla bla" data1="more bla 1"/>
>     <some:SomeElement2 data="bla bla bla" data1="more bla 2"/>
>     <some:SomeElement2 data="bla bla bla" data1="more bla 2"/>
> </inner:SomeElementZero>
> ...
> And probably xsi:type for each subelement.
> However in the generated code, the java class that is responsible for  
> "SomeElementList" can hold a list of "OneType" which is the type of 
> "SomeElementZero". Of course the other elements are of a type that is an 
> extension of this type "OneTypeExtension", so the last can contain the type 
> java class and not the elements themselves. Since the list java class knows 
> that it can contain only "SomeElementZero", it assumes that when 
> serializing/parsing. In that case the code would serialize so:
> ...
> <inner:SomeElementZero>
>     <some:SomeElementZero data="bla bla bla" xsi:type="some:OneType"/>
>     <some:SomeElementZero data="bla bla bla" data1="more bla 1" 
> xsi:type="some:OneTypeExtension"/>
>     <some:SomeElementZero data="bla bla bla" data1="more bla 2" 
> xsi:type="some:OneTypeExtension"/>
>     <some:SomeElementZero data="bla bla bla" data1="more bla 2" 
> xsi:type="some:OneTypeExtension"/>
> </inner:SomeElementZero>
> ...
> One workarround is to define all those types as local for the elements. In 
> that case each one can put element java objects in the list. Still one has to 
> change the code since when we serialize the list, it calls directly the 
> "serialize" method of the subelements and passes the qname "SomeElementZero". 
> We have to set it to call the .getOMElement().serialize( xmlWriter ), which 
> would take the local qname of the class itself. However, what I did so far 
> was to change the list java class to be able to hold the element 
> implementation, to detect their type and to serialize them accordingly. 
> There are similar problems in parsing.
> This explanation may be somewhat blurry, but the case is very specific and 
> hard to explain. Please check the attached files for examples.

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to