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

Attachments semantics are different for incoming and outgoing messages

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 1.6.2
    • Fix Version/s: None
    • Component/s: kernel
    • Labels:
      None

      Description

      The message builders for MTOM and SwA both initialize the message context with an Attachments object that contains all MIME parts, including the root part. On the other hand, the corresponding message formatters have different expectations. The message formatter for MTOM doesn't look at the Attachments object in the message context because attachments are referenced by special OMText instances in the SOAP envelope. Finally, the message formatter for SwA assumes that the Attachments object in the message context only contains the attachment parts.

      This means that for MTOM and SwA messages, the message context is set up differently for incoming and outgoing messages. Such inconsistencies in the API are not only annoying, but they also cause subtile issues in Synapse which needs to be able to forward messages, i.e. transform incoming into outgoing messages. One such issue is described in SYNAPSE-867.

      The proposal is to change the semantics for incoming messages, such that they match the current semantics for outgoing messages. In practice this means:

      1. The Attachments object in the message context would no longer be set for MTOM messages. In fact, code that attempts to directly access the MIME parts of an MTOM message is broken by definition, because the sender is free to choose which base64Binary elements are sent as attachments and which ones are inlined.
      2. The message builder for SwA would remove the root part from the Attachments object before adding it to the message context, so that application code only sees attachments parts. In fact, there is no valid use case where application code would want to retrieve the SOAP part directly from the Attachments object.

        Issue Links

          Activity

          Hide
          sagara Sagara Gunathunga added a comment -

          +1 for your proposal and make it a clear API.
          Going further is there any possibility to use generic semantics for both MTOM and SwA ?

          Show
          sagara Sagara Gunathunga added a comment - +1 for your proposal and make it a clear API. Going further is there any possibility to use generic semantics for both MTOM and SwA ?
          Hide
          hudson Hudson added a comment -

          Integrated in Axis2 #1409 (See https://builds.apache.org/job/Axis2/1409/)
          Made the design of the message builders responsible for building SwA and MTOM messages a bit more object oriented by introducing a MIMEAwareBuilder extension interface. MIMEBuilder now essentially dispatches to an instance of that interface.

          This allows us to use the proper Axiom API to build MTOM messages. It will also make it easier to implement AXIS2-5308. (Revision 1332277)

          Result = SUCCESS
          veithen :
          Files :

          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEAwareBuilder.java
          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java
          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java
          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
          Show
          hudson Hudson added a comment - Integrated in Axis2 #1409 (See https://builds.apache.org/job/Axis2/1409/ ) Made the design of the message builders responsible for building SwA and MTOM messages a bit more object oriented by introducing a MIMEAwareBuilder extension interface. MIMEBuilder now essentially dispatches to an instance of that interface. This allows us to use the proper Axiom API to build MTOM messages. It will also make it easier to implement AXIS2-5308 . (Revision 1332277) Result = SUCCESS veithen : Files : /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEAwareBuilder.java /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MTOMBuilder.java /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
          Hide
          hudson Hudson added a comment -

          Integrated in Axis2 #1410 (See https://builds.apache.org/job/Axis2/1410/)
          AXIS2-5308: In the SwA case, remove the root part from the Attachments object before adding it to the message context, so that the Attachments object in the message context always contains attachment parts only (both for incoming and for outgoing messages). (Revision 1332311)

          Result = SUCCESS
          veithen :
          Files :

          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
          Show
          hudson Hudson added a comment - Integrated in Axis2 #1410 (See https://builds.apache.org/job/Axis2/1410/ ) AXIS2-5308 : In the SwA case, remove the root part from the Attachments object before adding it to the message context, so that the Attachments object in the message context always contains attachment parts only (both for incoming and for outgoing messages). (Revision 1332311) Result = SUCCESS veithen : Files : /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
          Hide
          hudson Hudson added a comment -

          SUCCESS: Integrated in Axis2 #3195 (See https://builds.apache.org/job/Axis2/3195/)
          Add information about AXIS2-5308 to the 1.7.0 release note. (veithen: rev 1725121)

          • axis2/src/site/markdown/release-notes/1.7.0.md
          Show
          hudson Hudson added a comment - SUCCESS: Integrated in Axis2 #3195 (See https://builds.apache.org/job/Axis2/3195/ ) Add information about AXIS2-5308 to the 1.7.0 release note. (veithen: rev 1725121) axis2/src/site/markdown/release-notes/1.7.0.md

            People

            • Assignee:
              Unassigned
              Reporter:
              veithen Andreas Veithen
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:

                Development