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.



begin:vcard
fn:Dr. Franz Fehringer
n:Fehringer;Franz
org:ISO Software Systeme
adr;quoted-printable:;;Eichendorffstrasse 29;N=C3=BCrnberg;;90491;Deutschland
email;internet:mailto:[EMAIL PROTECTED]
tel;work:+49/(911) - 99594-0 
tel;fax:+49/(911) - 99594-580
x-mozilla-html:TRUE
url:http://www.isogmbh.de/
version:2.1
end:vcard

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to