axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Whitlock <mark_whitl...@uk.ibm.com>
Subject Fw: failure notice
Date Thu, 07 Oct 2004 16:35:24 GMT




Hi Adrian,
I investigated your original problem about wsdl2ws generating
checkMessage("getCustomerProfileSoapOutput" instead of
checkMessage("getCustomerProfileResponse". Your wsdl has
<message name="getCustomerProfileSoapOutput">
<part name="CHO20XResponse" type="tns:getCustomerProfileResponse" />
</message>
and the generated stub is using m_pCall->checkMessage to check that the
output message (getCustomerProfileSoapOutput) is in the soap message that
is returned. But your soap message has
<SOAP-ENV:Body><ns1:getCustomerProfileResponse. So it seems to me that
wsdl2ws is correct and the soap message that is returned doesn't match the
wsdl. If you agree with this I will return AXISCPP-192 which documents this
problem.

Is this a complete list of your other problems .........?
1) AXISCPP-193 Bad characters in complex type when set to null
2) Bad generated code in getCustomerProfileResponse "mmbiOutput" should be
"mmbi"
3) Poor exception thrown when deserialization failed
4) No support for < and > characters

Please let me know which JIRA's document these problems, and which you feel
must be fixed for 1.3 and which could be deferred. If there aren't JIRA's
for these problems, I can raise them (unless you have raised them already,
Samisa). Then these problems can be assigned and prioritised for 1.3.
Please let me know if any of these problems have gone away or if you have
any others. I can work on AXISCPP-193 next.
Thanks,
Mark
Mark Whitlock, IBM

----- Forwarded by Mark Whitlock/UK/IBM on 07/10/2004 16:56 -----
                                                                           
             Samisa Abeysinghe                                             
             <samisa_abeysingh                                             
             e@yahoo.com>                                               To 
                                       Apache AXIS C User List             
             07/10/2004 12:05          <axis-c-user@ws.apache.org>         
                                                                        cc 
                                                                           
             Please respond to                                     Subject 
              "Apache AXIS C           RE: failure notice                  
                User List"                                                 
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Yes I was correct :(
The generated code in getCustomerProfileResponse.cpp reads:
param->mmbi =
(mmbiOutput*)pIWSDZ->getCmplxObject((void*)Axis_DeSerialize_mmbiOutput
                , (void*)Axis_Create_mmbiOutput,
(void*)Axis_Delete_mmbiOutput
                , "mmbiOutput", Axis_URI_mmbiOutput);

However the response reads:
<mmbi><object>CH020X</object><method>getCustomerProfile</method><objectVer>90</objectVer><compileDate>16/04/03</compileDate><compilerVer>V4.00</compilerVer><mmbiVer>6</mmbiVer><sysText>CSS

R82</sysText><location>LW</location><correlId>adrian</correlId><status>OK</status></mmbi>


Hence the generated code in getCustomerProfileResponse.cpp should have
been:
param->mmbi =
(mmbiOutput*)pIWSDZ->getCmplxObject((void*)Axis_DeSerialize_mmbiOutput
                , (void*)Axis_Create_mmbiOutput,
(void*)Axis_Delete_mmbiOutput
                , "mmbi", Axis_URI_mmbiOutput);

Hope this helps to fix the problem.

I am not exactly sure what is going wrong with WSDL2WS tool :(

Samisa...



--- Samisa Abeysinghe <samisa_abeysinghe@yahoo.com> wrote:

> This means that the client still fails during deserialization.
> There could be more places that the generated code has got
m_pCall->checkMessage() stuff wrong
> :(
>
> Samisa...
>
> --- adrian.p.smith@bt.com wrote:
>
> > OK, so I was getting a 'NullPoinerException'.
> >
> > So now it seems that the 'result' is not getting initialised.
> >
> > Any ideas?
> >
> > -----Original Message-----
> > From: Samisa Abeysinghe [mailto:samisa_abeysinghe@yahoo.com]
> > Sent: 07 October 2004 09:19
> > To: Apache AXIS C User List
> > Subject: RE: failure notice
> >
> >
> > 1. So it is clear that there is something wrong with the generated
code.
> >
> > 2. The object attribute non-initilization is a know problem. (I think
there is a Jira issue on
> > this) - We got to fix this.
> >
> > 3. I do not see anything wrong with
> > printf("result = %s\n", result->telNr);
> > However, in order to veryfy that you have a not NULL result you could
use:
> > if (result)
> >    printf("result = %s\n", result->telNr);
> > else
> >    printf("result is NULL\n");
> >
> > Thanks,
> > Samisa...
> >
> > --- adrian.p.smith@bt.com wrote:
> >
> > > OK.
> > >
> > > 1. I've edited the CH020XSoapPort.cpp file as suggested and, to stop
the offending <pck>
> being
> > > returned, I have omitted it from the input. This seems to have
highlighted a further issue.
> > When
> > > a complexType is sent in the request, if all the elements are left
un-initialized, the SOAP
> > > payload has some wierd characters in the first element of the complex
type. Output from YATT
> > > shows this:
> > >
> > > <?xml version='1.0' encoding='utf-8' ?><SOAP-ENV:Envelope
> > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
"><SOAP-ENV:Body><ns1:getCustomerProfile
> > > xmlns:ns1="http://www.bt.com/css/mmbi/CH020X/"><mmbiInput
xsi:type="ns2:mmbiInput"
> > > xmlns:ns2="http://www.bt.com/css/mmbi/2002/06/types"><correlId
> > > xsi:type="xsd:string">°G1</correlId><trace xsi:nil="true"/><location
> > > xsi:nil="true"/></mmbiInput><E2E xsi:type="ns2:E2E"
> > > xmlns:ns2="http://www.bt.com/css/mmbi/2002/06/types"><pck
> > > xsi:type="xsd:string">°G1</pck><callerId xsi:nil="true"/></E2E><telNr
> > >
> >
>
xsi:type="xsd:string">01208561489</telNr></ns1:getCustomerProfile></SOAP-ENV:Body></SOAP-ENV:Envelope>

> > >
> > > notice the °G1 in <correlId> and <pck>. Subsequent elements in
the
complexType are correctly
> > > sent as xsi:nil="true". This causes a servlet error on the server
side that results in a
> > > SOAP:Fault being returned, so we don't get to check out the
de-serialisation. Is this
> another
> > > bug?
> > >
> > > 2. I then amended the input pck to not have the < character and I got
another "Unknown
> > > Exception". I believe the client is now deserialising the response as
I see the
> > > printf("returned\n");. Is there something wrong with:
> > >
> > >         printf("result = %s\n", result->telNr);
> > >
> > > Sorry my C/C++ is a bit weak...
> > >
> > > My client code is:
> > >
> > > #include "CH020XSoapPort.h"
> > > int main()
> > > {
> > >     try
> > >     {
> > >         CH020XSoapPort *port = new CH020XSoapPort();
> > >
> > >         mmbiInput *mmbiIn = new mmbiInput();
> > >         mmbiIn->correlId = "adrian";
> > >         E2E *e2e = new E2E();
> > >         e2e->pck = "PCK002069bt.com SS01
ND1234567890200107190000223344dyemw01 im011111";
> > >
> > >         getCustomerProfileResponse *result =
port->getCustomerProfile(mmbiIn, e2e,
> > > "01208561489");
> > >         printf("returned\n");
> > >         printf("result = %s\n", result->telNr);
> > >         return 0;
> > >     }
> > >     catch(AxisException &e)
> > >     {
> > >         printf("Exception : %s\n", e.what());
> > >         printf("Exception : %d\n", e.getExceptionCode());
> > >         return 1;
> > >     }
> > >     catch(exception &e)
> > >     {
> > >         printf("Unknown exception 1 has occured\n" );
> > >         return 1;
> > >     }
> > >              catch(...)
> > >     {
> > >         printf("Unknown exception has occured\n" );
> > >         return 1;
> > >     }
> > > }
> > >
> > > Regards,
> > >
> > > Adrian Smith
> > > BT Group
> > >
> > >
> > >
> > >
> > > -----Original Message-----
> > > From: Samisa Abeysinghe [mailto:samisa_abeysinghe@yahoo.com]
> > > Sent: 07 October 2004 03:27
> > > To: Apache AXIS C Developers List
> > > Cc: axis-c-user@ws.apache.org
> > > Subject: RE: failure notice
> > >
> > >
> > > Yes I think it is a WSDL2Ws defect.
> > > However, only way to verify this is to change
"getCustomerProfileSoapOutput" to
> > > "getCustomerProfileResponse" in the gerated code manually and test.
> > >
> > > Additionally the response contains a '<' within string values
received in the response.
> > > "<pck>PCK&lt;01069bt.com SS01
ND1234567890200107190000223344dyemw01im011111</pck>"
> > > It is a known bug that Axis C++ cannot handel '<' and '>' characters
in strings received.
> > >
> > > Samisa...
> > >
> > > >
> > > >
> > > >
> > > >
> > > > This is the last I saw on this - is this a WSDL2ws defect then?
> > > >
> > > >
> > > > John Hawkins
> > > >
> > > >
> > > >
> > > >
> > > >

> > > >              Samisa Abeysinghe

> > > >              <samisa_abeysingh

> > > >              e@yahoo.com>
To
> > > >                                        Apache AXIS C User List

> > > >              05/10/2004 04:55          <axis-c-user@ws.apache.org>

> > > >
cc
> > > >                                        axis-c-dev@ws.apache.org

> > > >              Please respond to
Subject
> > > >               "Apache AXIS C           RE: failure notice

> > > >              Developers List"

> > > >

> > > >

> > > >

> > > >

> > > >

> > > >
> > > >
> > > >
> > > >
> > > > I could generate the code and compile as well (on Linux).
> > > >
> > > > However in the generated code I get the following line in
> > > > CH020XSoapPort.cpp file:
> > > >     if(AXIS_SUCCESS ==
> > > > m_pCall->checkMessage("getCustomerProfileSoapOutput",
> > > > "http://www.bt.com/css/mmbi/CH020X/"))
> > > >
> > > > The response message has:
> > > > <ns1:getCustomerProfileResponse
> > > > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> > > >
> > > > Hence I guess the generated code should be:
> > > >         if(AXIS_SUCCESS ==
> > > > m_pCall->checkMessage("getCustomerProfileResponse",
> > > > "http://www.bt.com/css/mmbi/CH020X/"))
> > > >
> > > > Possible bug in WSDL2WS tool?
> > > >
> > > > Further it would be helpful for the exception to say which element
it could
> > > > not deserialize,
> > > > rather than just saying deserialization failure. (thus we could
verify
> > > > situations like these)
> > > >
> > > > Samisa...
> > > >
> > > >
> > > >
>
=== message truncated ===




_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com


Mime
View raw message