[
https://wso2.org/jira/browse/ESBJAVA-522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Asankha Perera updated ESBJAVA-522:
-----------------------------------
Fix Version/s: FUTURE
Priority: Minor (was: Blocker)
We will soon implement the support for a switch to send with building the
message and not
> Accessing SOAP fault code and fault message via Axis2/Axiom-API does not work
> -----------------------------------------------------------------------------
>
> Key: ESBJAVA-522
> URL: https://wso2.org/jira/browse/ESBJAVA-522
> Project: WSO2 ESB
> Issue Type: Bug
> Affects Versions: 1.7
> Reporter: Eric Hubert
> Assignee: Asankha Perera
> Priority: Minor
> Fix For: FUTURE
>
>
> We are using the following code to access SOAP faultcode and faultstring:
> if (axis2MessageCtx.getEnvelope().getBody().getFault() != null) {
> SOAPFault fault = axis2MessageCtx.getEnvelope().getBody().getFault();
> OMElement faultcode = (OMElement) fault.getChildrenWithName(new
> QName("faultcode")).next();
> messagePropertyDTO.setFaultCode(faultcode.getText());
> OMElement faultmessage = (OMElement) fault.getChildrenWithName(new
> QName("faultstring")).next();
> messagePropertyDTO.setFault(faultmessage.getText());
> }
> it works with WSO2 ESB 1.7 Beta-2. In the proposed final version we get the
> following exception:
> 2008-06-09 10:20:24,261 [127.0.0.1-berjbolle-lx1] [HttpServerWorker-1] INFO
> TimeoutHandler This engine will expire all callbacks after : 86400 seconds,
> irrespective of the timeout action, after the specified or optional timeout
> Exception in thread "HttpClientWorker-1" org.apache.axiom.om.OMException:
> java.util.NoSuchElementException
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:633)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:650)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.getChildrenWithName(OMElementImpl.java:217)
> at
> de.jamba.soa.esb.wso2.mediator.jtrace.JTraceMediator.setResponseProperties(JTraceMediator.java:130)
> at
> de.jamba.soa.esb.wso2.mediator.jtrace.JTraceMediator.mediate(JTraceMediator.java:65)
> at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:174)
> at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
> at
> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:162)
> at
> org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:301)
> at
> org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:131)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
> at
> org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:200)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.util.NoSuchElementException
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1083)
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:506)
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:161)
> ... 18 more
> One other problem we noticed on the way is a strange behaviour of
> getChildrenWithLocalName(). If we changed the above code in 1.7 Beta 2 to
> this:
> if (axis2MessageCtx.getEnvelope().getBody().getFault() != null) {
> SOAPFault fault = axis2MessageCtx.getEnvelope().getBody().getFault();
> OMElement faultcode = (OMElement)
> fault.getChildrenWithName("faultcode").next();
> messagePropertyDTO.setFaultCode(faultcode.getText());
> OMElement faultmessage = (OMElement)
> fault.getChildrenWithName("faultstring").next();
> messagePropertyDTO.setFault(faultmessage.getText());
> }
> getChildrenWithName() always returned the first Element. No matter of the
> specified string. It could also be "abc" which was not present. I would also
> consider this to be a bug.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://wso2.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
Esb-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev