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

Christopher Weiss updated AXIS2-3195:
-------------------------------------

    Attachment: RampartBugDemo.zip
                BugDemoConfigFiles.zip

I have attached a simple Eclipse project that demonstrates the Rampart 
integration issue. If the aar file is deployed to an Axis2 web-service (1.1.1 
or 1.2), it should echo whatever is sent to it. However, the request never even 
makes it to the server because rampart throws an error trying to make the 
request. To invoke the client, run 
 
java -cp Echo.aar;PATH_TO_AXIS2_LIBS\* -Daxis2.repo=PATH_TO_AXIS2_REPO 
-Daxis2.xml=PATH_TO_AXIS2_CONF org.example.www.echo.Client 
http://AXIS2_SERVER_IP_ADDRESS:8080/axis2/services/Echo XML_FILE_TO_ECHO
 
I have also attached a sample axis2.xml config file that engages security, as 
well as the client.properties and service.properties files (You still need an 
x509 cert). Deploying the service without security and running the client works 
as expected, but running the client with rampart engaged results in a null 
pointer exception. 

Here is the stack trace:

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 



> AXIOM parser's throwing NullPointerException if OMElement.getParent() is 
> instance of OMDocument and Rampart is engaged
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3195
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3195
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>         Environment: Windows XP SP2, Axis2 1.2, Tomcat 6.0.13
>            Reporter: Christopher Weiss
>         Attachments: BugDemoConfigFiles.zip, RampartBugDemo.zip
>
>
> Please see attached project to demonstrate the issue. With the axis2-1.2 
> release and earlier, the AXIOM parser throws a NullPointerException when 
> processing requests using Rampart:
> 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