Hi Jean-Yves,
I am working on these issues.
>
> Many thanks for you quick patch integration. I upgraded to the last CVS
> code and it is going better and better. Here my result, some others
> issues I found and some questions (all are about the doc/lit style).
>
> Malling List question
> ---------------------
> I subscribe to the axis-c-dev but I never received any mail from
> axis-c-dev. I need to go to the http://marc.theaimsgroup.com/ site to
> see if I have answer to my mail. And if I want to reply I need to cut
> and paste in my mail mailer. Is there an option to have the mail arrived
> in my mailbox ?
please try re-subscribing to list.
>
>
> Results after updated to last CVS code
> -------------------------------------
> 1 - All the exceptions traces deseappeard when generating.
>
> 2 - The extra *[unbounded].h are corrected.
>
> 3 - The element name are not renamed for reserved C++
> keyword (corrected).
>
> 4 - The code still not compiling for this kind of schema fragment :
>
> This complexType :
>
> <xsd:complexType name="intArrayType">
> <xsd:sequence>
> <xsd:element maxOccurs="unbounded" name="Item"
>
> type="xsd:int"/>
> </xsd:sequence>
> </xsd:complexType>
>
>
> Produces the following C++ code :
>
> class shortArrayType
> {
> public:
> short_Array Item; // should be xsd__short_Array Item ?
yes ...I have fixed this issue but havenot yet checked in the code. For
the moment please add xsd__ for simple type arrays.
> shortArrayType();
> ~shortArrayType();
> };
>
> So I still having to add the folowing typedef in AxisUserAPI.h
>
> /* JBY some simple types typedef
> (avoid compilation pbs of generated cpp
> client code) */
>
> typedef xsd__double_Array double_Array;
> typedef xsd__float_Array float_Array;
> typedef xsd__boolean_Array boolean_Array;
> typedef xsd__string_Array string_Array;
> typedef xsd__int_Array int_Array;
> typedef xsd__short_Array short_Array;
> typedef xsd__long_Array long_Array;
Then you dont need these typedefs
>
>
> Other issue found since last mail
> ---------------------------------
> SOAP request is incorrect for this kind of message :
>
> ...
> <xsd:complexType name="SessionTokenType">
> <xsd:sequence>
> <xsd:element maxOccurs="1" minOccurs="1" name="SessionId"
> type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:element name="SessionToken" type="tns:SessionTokenType"/>
> ...
>
> <message name="sessionLogoutInput">
> <part name="parameters" element="ns2:SessionToken"/>
> </message>
> ....
>
> Axis C/C++ build this SOAP request :
>
> ...
> <ns1:SessionToken xmlns:ns1="http://xxx">
> <SessionToken>
> <SessionId>100</SessionId>
> </SessionToken>
> </ns1:SessionToken>
> ...
>
> The correct syntax is (verified with Axis Java 1.1 client)
>
> ...
> <ns1:SessionToken xmlns:ns1="http://xxx">
> <SessionId>100</SessionId>
> </ns1:SessionToken>
> ...
>
> So the portType generated code must be (for this kind of wsdl):
> m_pCall->SetOperation("SessionToken","http://xxx");
> /* WRONG : m_pCall->AddCmplxParameter(Value0,
> (void*)Axis_Serialize_SessionTokenType,
> (void*)Axis_Delete_SessionTokenType, "SessionToken",
> Axis_URI_SessionTokenType);*/
> m_pCall->
> AddParameter(
> (void*)&Value0->SessionId, "SessionId", XSD_STRING);
>
correct. But we also have to detect whether the complex type
SessionTokenType is used elsewhere or not. If it is used we should write a
complex type (class or struct) for that too.
Thanks,
Susantha.
|