Hello Nadir,
Very nice achievement!
Now if AXISCPP-1010 could be resolved also, i would be able to abandon
all my local changes and then give the current repository code a shot.
I want to point out one additional problem (i do not know whether there
is a JIRA for it) regarding xsd:decimal.
I have a datatype, which is a restriction of xsd:decimal with restrictions
<xsd:maxExclusive value="100000"/>
<xsd:fractionDigits value="2"/>
<xsd:minInclusive value="0"/>
There is Java Code (in the generator) for reading/interpreting these
restrictions and there is C++ Code (in the axis library code) for
handling these restrictions.
But what is completely missing is the intermediate layer, i.e. Java code
which generates C++ code for correct initialization of the pertaining
struct members.
Therefore in sending xsd:decimals the fractionDigits are always six,
which is not suited for e.g. monetary values.
I hacked around this with replacing (in the XSD) xsd:decimal by
xsd:double (for xsd:double %g is used instead of %f).
Another hack would be to directly replace (in the library code) %f by %g.
What do you think, is it much work to fill this gap?
Should i file a JIRA?
My last question is, given the steady improvements you made, what is the
currently planned timeline for a 1.6 release?
Cheers
Franz
nadir amra (JIRA) schrieb:
[
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
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]