AXIOM parser's throwing NullPointerException if OMElement.getParent() is 
instance of OMDocument
-----------------------------------------------------------------------------------------------

                 Key: AXIS2-3195
                 URL: https://issues.apache.org/jira/browse/AXIS2-3195
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
    Affects Versions: 1.2
         Environment: Windows XP SP2, Axis2 1.2, Tomcat 6.0.13
            Reporter: Christopher Weiss


I can send a complete project to demonstrate the issue if necessary. With the 
axis2-1.2 release and earlier, the AXIOM parser may throw a 
NullPointerException when processing requests:

Thread [main] (Suspended (exception NullPointerException)) 
 OMStAXWrapper.updateNextNode() line: 981 
 OMStAXWrapper.updateLastNode() line: 950 
 OMStAXWrapper.next() line: 913 
 StAXSOAPModelBuilder(StAXOMBuilder).next() line: 111 
 SOAPEnvelopeImpl(NodeImpl).build() line: 469 
 SOAPMessageImpl(DocumentImpl).build() line: 476 
 Axis2Util.getDocumentFromSOAPEnvelope(SOAPEnvelope, boolean) line: 107 
 RampartMessageData.<init>(MessageContext, boolean) line: 146 
 MessageBuilder.build(MessageContext) line: 56 
 RampartSender.invoke(MessageContext) line: 59 
 Phase.invoke(MessageContext) line: 382 
 AxisEngine.invoke(MessageContext) line: 522 
 AxisEngine.send(MessageContext) line: 655 
 OutInAxisOperationClient.send(MessageContext) line: 237 
 OutInAxisOperationClient.execute(boolean) line: 202 
 EchoStub.EchoOperation(OMElement) line: 127 
 Client.main(String[]) line: 47 

The cause of the exception is the AXIOM parser's setting the boolean variable 
needToThrowEndDocument in the DOMStAXWrapper to true if the current node being 
parsed has a parent node of type OMDocument..

Temp fix: In the code, when creating an AXIOM compatible schema, we did the 
following:
 
try {
  // Get the schema is it is already AXIOM compatible, or convert it if it 
isn't.
  OMElement schema = docSchema instanceof OMDocument ? (OMElement) docSchema
    .getDocumentElement() : 
org.apache.axis2.util.XMLUtils.toOM(docSchema.getDocumentElement());
  
  // Workaround to fix an issue with the building the OMElement if the
  // parent is an OMDocument. Detach the element from the parent Document...
  if (schema.getParent() != null && schema.getParent() instanceof OMDocument) {
    schema.detach();
  }

  elementList.add(org.apache.axis2.databinding.utils.Constants.OM_ELEMENT_KEY);
  elementList.add(schema);
} catch (Exception e) {
  throw new java.lang.RuntimeException("Can't convert schema to AXIOM!", e);
}


-- 
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