axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From damitha kumarage <dami...@opensource.lk>
Subject Re: Unexpected #includes within WSDL2Ws generated AxisClientException.h
Date Thu, 29 Jul 2004 11:59:12 GMT
Hi Adrian,
Sorry for the late reply

On Thu, 2004-07-15 at 21:26, Adrian Dick wrote:
> 
> 
> Hi,
> 
> When using WSDL2Ws to generate client stubs, I notice that
> AxisClientException is generated.  Within the header file, the fault type
> is included for each method.  But, if the same fault type is used for more
> than one method, no checking takes place, so it is included each time.  The
> attached patch introduces a check to ensure each fault type is included
> only once.
> (See attached file: ExceptionHeaderWriter.java.patch)
Thanks Adrian for the patch
> 
> However, looking through the rest of the AxisClientException code, there
> are no further references to the fault types.  Which, for me,  raises the
> further question - Why are we including the fault types, if they're not
> actually being used?
> 
Actually the user has the option to do something with the fault type.
He may use it to print the fault information. see the code below from
AxisClientException.cpp


void AxisClientException::processException (ISoapFault* pFault)
{
        /*User can do something like deserializing the struct into a
string*/
        const char* pcCmplxFaultName;
        const char* pcDetail;
        if(pFault)
        {
            m_sMessage = "Fault Code:";
            m_sMessage += pFault->getFaultcode();
            m_sMessage += "\n";
            m_sMessage += "Fault String:";
            m_sMessage += pFault->getFaultstring();
            m_sMessage += "\n";
            m_sMessage += "Fault Actor:";
            m_sMessage += pFault->getFaultactor();
            m_sMessage += "\n";
                                                                                         
                                   
            pcDetail = pFault->getSimpleFaultDetail().c_str();
            if(NULL != pcDetail && 0 != strcmp("", pcDetail))
                m_sMessage += pcDetail;
            else
            {
                pcCmplxFaultName =
pFault->getCmplxFaultObjectName().c_str();
                //printf("pcCmplxFaultName:%s\n", pcCmplxFaultName);
            }
            if(0 == strcmp("OutOfBoundStruct", pcCmplxFaultName))
            {
                OutOfBoundStruct* pFaultDetail = NULL;
                pFaultDetail = (OutOfBoundStruct*)pFault->
                    getCmplxFaultObject();

....
....


As I promished to John earlier I'll move the documentation about this
into a proper place soon.

Thanks,
damitha



> These observations and the patch are based on the 1.2 release.
> 
> Regards,
> Adrian
> _______________________________________
> Adrian Dick (adrian.dick@uk.ibm.com)


Mime
View raw message