Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-3771

POX literal fault is not detected by client

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 1.3
    • None
    • transports
    • None
    • Debian etch. JVM 1.4 from blackdown (64 bits)

    Description

      Sorry if this is not a bug, I may well have misunderstood something. I tend to think it's a bug because an exception
      in the server does not reach the client when both use code generated by WSDL2Java, but maybe what I'm trying can't be done.

      I have to code a client for a webservice that answers with a xml response when accessed through a GET with parameters.
      The returned xml has a certain root element when things work and otherwise the root element is <error description="..."/>
      So I defined a wsdl for the web service with literal response and a literal fault that describe the xml issued on
      success and error respectively.

      I generated a client and a server for tests (the real server is going to
      be by a third partly, so I have to make my test server behave as close as
      the specification of the third party server as I can). The server seems to work as specified (after some configuration tweaking for REST and namespacelessness).

      The client works in case of success, but when the server skeleton throws the ERRORMessage exception (generated by WSDL2Java)
      an <error description="..."/> response gets to the client, and then the client throws an exception like this:

      java.lang.IllegalArgumentException: The MessageContext does not have an associated SOAPFault.
      org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:478)
      org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
      org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
      org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
      org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
      ...

      By a quick look at the code it would seem that because it's a REST client (POX, actually, I think), the OutInAxisOperationClient.handleResponse method has to make up an envelope it didn't get, and calls

      TransportUtils.createSOAPMessage(responseMessageContext);

      and with the generated envelope it somehow detects there's a fault and calls

      Utils.getInboundFaultFromMessageContext(responseMessageContext);

      to throw the corresponding exception (which should be the ERRORMessage
      generated by WSDL2Java).

      But it seems to be unable to see it's an ERRORMessage the exception it should
      create and throw.

      Might it be because TransportUtils.createSOAPMessage(responseMessageContext)
      calls (indirectly) createSOAPEnvelope with a document created from
      the <error description="..."/> response, and so it treats the fault as the
      document, and later the getInboundFaultFromMessageContext cannot find
      the fault because it has been mistakenly taken for the body ?

      In other words, the code that parses a REST response in the client
      does not seem (at first glance) to expect a literal fault as declared in
      the wsdl when generating a fake envelope for the rest of axis2 to
      treat as if it where a SOAP response. Should this be changed or
      it's not a covered use case and so it should remain as is?.

      Sorry if I don't give enough detail, I thought of sending code, but
      maybe it'd be best to build a simpler example than what I have (modifying
      the getVersion sample, or whatever), also helping to isolate the issue.
      I may do it later this week if you think it's worthwhile.

      I'm just sending this in order to know whether what I try to do
      makes sense and should be further investigated or is just nonsense
      and I should learn how to use Axis2 better. Wasn't sure whether I
      should use JIRA or a mailing list, but thought we can close the bug if
      it's not one.

      Attachments

        Activity

          People

            amilachinthaka Amila Chinthaka Suriarachchi
            xdrudis Xavi Drudis Ferran
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: