axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nadir Amra <a...@us.ibm.com>
Subject Re: [jira] Commented: (AXISCPP-991) Deserializing complex type broken when start-end element tag is encountered
Date Tue, 19 Dec 2006 03:13:40 GMT
Franz,

The current "fix" in svn does not work with attributes.  However, I plan 
on putting in a revamped fix just after I finish simple attributes with 
simple type jira, which is consuming my immediate energy and time. 

Nadir K. Amra


Franz Fehringer <feh@isogmbh.de> wrote on 12/18/2006 03:03:49 AM:

> Hello Nadir,
> 
> I cannot currently do svn up, because of conflicting fixes for 
> AXISCPP-991 (one by you and one by me).
> How do these fixes compare?
> Does your fix work (for START_END_ELEMENT) in the presence of 
attributes?
> Will there be a revamped more complete fix in the not too distant 
future?
> 
> Greetings
> 
> Franz
> 
> 
> Franz Fehringer schrieb: 
> Hello Nadir,
> 
> I made a fix for this problen which works also in the presence of 
attributes.
> To this end i invented an additional member m_bStartEndElement in 
> XMLParserXerces.
> It is set to true if (START_ELEMENT,START_END_ELEMENT) is detected in 
next().
> The code at the end of XMLParserXerces.cpp now looks
> 
>         else
>         {
>             if (elem->m_type == START_ELEMENT && elem->m_type2 == 
> START_END_ELEMENT)
>                m_bStartEndElement = true;
>             return elem;
>         }
>     }
>     
>     return NULL;
> }
> 
> At the beginning of peek() i check for m_bStartEndElement:
> 
>     if (m_bStartEndElement)
>     {
>         m_bStartEndElement = false;
>     return "";
>     }
> 
> For this to really work i had to initialize m_bStartEndElement to 
> false in the constructors ans also unconditionally set it to false 
> at the very beginning of both next() and anyNext() (i am not sure if
> both are necessary and if i should check for (START_ELEMENT,
> START_END_ELEMENT) in anyNext() also).
> Now cases like
> <tri tra="trö"/>
> where an optional subelement is missing (and peeked for in the 
> deserializer) are processed correctly.
> 
> Best regards
> 
> Franz
> 
> 
> nadir amra (JIRA) schrieb: 
>     [ http://issues.apache.org/jira/browse/AXISCPP-991?
> page=comments#action_12454432 ] 
> 
> nadir amra commented on AXISCPP-991:
> ------------------------------------
> 
> I put a temporary fix so that if start_end tag was specified with no
> attributes (which I am hoping is the prevalent scenario), then things 
work. 
> 
> Scott, I will look into your fix.  But I think the end-game should 
> be in the generated code, where it should invoke a new API to 
> determine if the current node is a start-end tag, in which case it 
> would simply return.
> 
> 
> Deserializing complex type broken when start-end element tag is 
encountered
> 
---------------------------------------------------------------------------
> 
>                 Key: AXISCPP-991
>                 URL: http://issues.apache.org/jira/browse/AXISCPP-991
>             Project: Axis-C++
>          Issue Type: Bug
>          Components: Client - Deserialization
>            Reporter: nadir amra
>         Assigned To: nadir amra
> 
> If a complex type defined as:
>       <s:complexType name="SortR">
>         <s:sequence>
>           <s:element minOccurs="0" maxOccurs="1" name="ListMsg" 
> type="tns:ArrayOfMsgS" />
>           <s:element minOccurs="0" maxOccurs="1" name="DateMed" 
> type="s:string" />
>           <s:element minOccurs="1" maxOccurs="1" name="NumberMed" 
> type="s:int" />
>         </s:sequence>
>       </s:complexType>
> And the response comes back as:
> <SortRResult>
>     <ListMsg/>
>     <DateMed>2006-11-10</DateMed>
>     <NumberMed>123456</NumberMed>
> .
> .
> The deserialization of ListMsg does not recognize the fact that 
> empty element was passed and thus attempts to parse the subsequent 
> data as if it was part of ListMsg. 
> 
> 
> 
> 
> [attachment "feh.vcf" deleted by Nadir Amra/Rochester/IBM] 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-dev-help@ws.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org


Mime
View raw message