Affects Version/s: 1.6.2
Fix Version/s: None
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
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.