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

nadir amra closed AXISCPP-1011.
-------------------------------

       Resolution: Fixed
    Fix Version/s: current (nightly)

There were several problems in this area.  I added test cases for:

both soap actor and detail
soap detail but not actor 
soap actor but not detail
neither soap actor nor detail

The code that checked whether the detail was complex was revamped since it was 
not correct.  I created a new method, processFaultDetail(), in the deserializer 
that will handle the determination whether fault detail is complex, and if not, 
will perform deserialization.  Basically the logic:
if character data whitespace
   perform a peek() 
   if (start-element tag)  fault detail is a complex structure
   else deserialize a null string. 
else
   derserialize character data as string



> faultactor is facultative in SoapFaults
> ---------------------------------------
>
>                 Key: AXISCPP-1011
>                 URL: https://issues.apache.org/jira/browse/AXISCPP-1011
>             Project: Axis-C++
>          Issue Type: Bug
>          Components: SOAP
>    Affects Versions: current (nightly)
>         Environment: WIN2KSP4 VC6SP6 JDK1.5.0_07
>            Reporter: Franz Fehringer
>         Assigned To: nadir amra
>             Fix For: current (nightly)
>
>
> In handling SoapFaults, faultactor is retrieved unconditionally (next()) 
> where it should (being facultative) be checked for presence first (peek()).
> $ pwd
> /cd/d/Quellen/SVN/axis/c/src/soap
> Index: SoapDeSerializer.cpp
> ===================================================================
> --- SoapDeSerializer.cpp        (Revision 480584)
> +++ SoapDeSerializer.cpp        (Arbeitskopie)
> @@ -401,7 +401,8 @@
>      char *pcDetail;
>      char *pcFaultCode;
>      char *pcFaultstring;
> -    char *pcFaultactor;
> +    char *pcFaultactor = "";
> +    char* pcName;
>      if (0 == strcmp ("Fault", pName))
>      {
>          if (0 != strcmp (m_pNode->m_pchNameOrValue, pName))
> @@ -431,10 +432,14 @@
>          if ( pcFaultstring )
>              delete [] pcFaultstring;
>       
> -        pcFaultactor = getElementAsString ("faultactor", 0);
> -        pFault->setFaultactor (pcFaultactor == NULL ? "" : pcFaultactor);
> -        if ( pcFaultactor )
> -            delete [] pcFaultactor;
> +        pName = peekNextElementName();
> +       if (strcmp(pName, "faultactor") == 0)
> +       {
> +            pcFaultactor = getElementAsString ("faultactor", 0);
> +            pFault->setFaultactor (pcFaultactor == NULL ? "" : pcFaultactor);
> +            if ( pcFaultactor )
> +                delete [] pcFaultactor;
> +       }
>      
>          // FJP Changed the namespace from null to a single space (an 
> impossible
>          //     value) to help method know 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to