[ 
https://issues.apache.org/jira/browse/AXISCPP-654?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

nadir amra resolved AXISCPP-654.
--------------------------------

       Resolution: Fixed
    Fix Version/s: current (nightly)

Well, it may have been a minor improvement but it resulted in major changes:

-- removed duplication in xerces parser and this all the heavy duty logic is in 
one routine that all the others call. 

-- the xerces parser keeps all the state information, and throws exceptions on 
SAX or XML or transport exceptions.  In addition, it keeps a copy of the error 
information for subsequent  retrieval by new getErrorString() and 
getErrorCode() methods.  At this time there code to keep track of peeks and 
whether to return NULL string on start/end elements.  So it makes the code a 
little more complex that I would like.  I think that logic can be removed and 
peek() can be eliminated by updating SoapDeSerializer.cpp, but I first have to 
figure out when a node is consumed or not - i.e. some literal logic in there 
uses m_pNode if it is set, while for encoded it does not even look at the 
m_pNode, it just gets the next node available from the parser.  I think that 
can be cleared up, but first I wanted to put the code as-is into SVN.

-- Once I got done with parser, I had to overhaul SoapDeserializer, so while I 
was in there I removed a lot of duplicate code and removed unnecessary methods. 
 For example, I was able to eliminate following methods:
   getCmplxFaultObjectName()
   decodeFromBase64Binary()
   decodeFromHexBinary()
   deserializeLiteralArray()
   deserializeEncodedArray()
   deserializeLiteralComplexArray()
   deserializeEncodedComplexArray()

and still keep the methods managable enough, and in some cases smaller than it 
was previously.  Because the parser now throws exceptions, skipNode() and 
getNextNode() are new methods that are called to get parser data and all the 
code now calls these routines except for anyNext() (one method uses this).  
skipNode() call getNextNode().  getNextNode() can be called with the option of 
suppressing the throw'ing of an exception.  I also had to put try/catch blocks 
in some areas of the code in order to free up any allocated memory before 
re-throwing the exception.  Now if I can figure when I should mark m_pNode as 
consumed, I can probably get rid of peek in the parser and make the parser code 
more simpler. 

So go at it.  

I am marking this as resolved until I get some testcases out there that test 
mal-formed SOAP messages. 

> Improve XercesHandler failure notification
> ------------------------------------------
>
>                 Key: AXISCPP-654
>                 URL: https://issues.apache.org/jira/browse/AXISCPP-654
>             Project: Axis-C++
>          Issue Type: Improvement
>          Components: Client - Deserialization, Server - Deserialization
>            Reporter: John Hawkins
>            Priority: Minor
>             Fix For: current (nightly)
>
>
> The XercesHandler gets called whenever there is a failure or warning -this 
> would be an ideal place to put some trace or FFDC !

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to