|
Hello Adrian, I looked into the relevant Java sources, but need some help for understanding and making progress. I start with ParamWriter, which ist the base class of ParmHeaderFileWriter. The latter class is used for generating the header files (at least in my C++/document/literal/wrapped case). ParamWriter is constructed from a WebServiceContext and a Type. Each Type contains hashes and vectors of both elements and attributes. What is now a great source of confusion is, that the concepts of elements and attributes are freely intermixed (perhaps the author got himself confused regarding XML attributes versus struct/class attributes). The ParmWriter class has only an AttributeInfo array and no ElementInfo array. Consequently both attributes and elements are stored in the AttributeInfo array, which is populated with populateAttribList(). This method seemingly relies on Type having full information about the present attributes and elements. What i wonder now is
As a last try for today are the following ideas sound?
Franz Adrian Dick schrieb: Hi, There are several areas where Axis C++ does not (yet) completely support the SOAP/XSD specs, and XML attributes is one of those.I raised Jira AXISCPP-716 ( http://issues.apache.org/jira/browse/AXISCPP-716 ) for the specific issue you've highlighted of required and optional. Regretably, other priorities have prevented me from fixing this problem, and it looks unlikely I'll have an opportunity any time soon. Of course, there's no reason why someone else couldn't take it on. As for how to fix this. I believe most (possibly all) the logic for this needs to be in the WSDL2Ws generate code. I would suggest required attributes should be by-value while optional attributes should be by-pointer, similar to nillable and optional elements. Regards, Adrian _______________________________________ Adrian Dick ([EMAIL PROTECTED]) Franz Fehringer <[EMAIL PROTECTED]> wrote on 21/06/2006 10:21:51:Hello, Today i had a closer look at the handling of xml attributes in Axis generated C++ code (i work with latest SVN and consider for the moment only the deserializing/response handling part). First it seems that no difference between optional and required attributes is made. When it comes to deserializing, it is (equal in both cases) checked if the attribute is present and only in this case the appropriate setter is called. The problem is now, that the C++ struct members representing the attributes are values and not pointers and that there is no else branch in the test for presence of the attribut. The net effect is, that for nonpresent attributes the correspondent struct members end up uninitialized (int value 4207536 for example) ant there is no way to detect the case of missing optional attributes. A simple (hopefully not too simple minded) fix would be to represent all attributes as pointers and setting them to NULL in the (to be created) else branch. Thoughts (and btw ist there already a JIRA for this)? Greetings Franz [attachment "feh.vcf" deleted by Adrian Dick/UK/IBM] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] |
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]
