On Wed, Apr 13, 2016 at 11:51 AM, Siano, Stephan <stephan.si...@sap.com> wrote: > Hi Claus, > > Sorry for the late reply, but I had to do some thinking about this issue (and > was busy with other things yesterday). > > Having the different interfaces for Messages (without attachment) and > Attachment Capable messages (with either implementation option) actually > means that we will have message implementations that do support attachments > and other implementations that do not. > > With this model we can handle all consumer endpoints. They create Message > objects that are attachment capable or not depending on whether the component > supports attachments or not. (File consumers create messages without > attachment support, mail(imap) consumers create MailMessages which do support > attachments). > We can also handle InOnly producer endpoints that do or do not support > attachments. If a producer endpoint gets a message that is not attachment > capable, there are no attachments. (so the mail(SMTP) producer will not > create additional attachments for the outgoing mail if the message is not > attachment capable and the file producer will just ignore that stuff > altogether). > > However I see an issue if we have a producer endpoint that is doing InOut > communication and supports attachments. Examle: we have a route like > from("file:..").to("cxf:bean:replies_with_an_attachment").to("smtp:mailrelay") > What is this endpoint type (CXF in the example) supposed to do if it receives > a message without attachment supports, sends it out as a request and then > gets a reply containing attachments? Create a new message? As I see it > current message implementations usually do not create new message objects but > only set the headers and bodies on existing ones. Is this a good idea? What > do you think? >
Yeah sure there is components that has their own message implementation such as MailMessage, JmsMessage, etc. The CXF would then set the OUT as a new CxfMessage where it sets the headers / body / attachments as it needs. > Furthermore filing a JIRA task for Camel 3.0 won't help anytime soon. Do you > have any idea about the timeframe of a Camel 3.0 release? I wouldn't expect > that anytime soon, but do you think it is realistic to see a Camel 3.0 > release e.g. next year (or in 2018 or so?). > API changes in Exchange / Message / Processor or whatnot that are central cannot easily be done on 2.x, and should defer to 3.x. > Maybe we can find a way to get attachment headers into the Camel message in a > more compatible way that could be included in Camel 2.18 or so. What do you > think about that? > Yeah you can try using headers > -----Original Message----- > From: Claus Ibsen [mailto:claus.ib...@gmail.com] > Sent: Montag, 11. April 2016 18:32 > To: dev <dev@camel.apache.org> > Subject: Re: Concerning Attachments and Attachment Headers in Camel > > On Mon, Apr 11, 2016 at 7:45 AM, Siano, Stephan <stephan.si...@sap.com> wrote: >> Hi Claus, >> >> I tend to disagree on that. I actually think that having a generic >> Attachment API in Camel does make sense. Having Attachments only as part of >> MailMessage and e.g. a (currently non-existing) CXFMessage would mean, that >> it is e.g. impossible to receive an attachment via mail and then forward it >> to a SOAP endpoint (using the SOAP with Attachments protocol) even though >> both endpoint types support attachments. >> >> However, you are probably right, that the current solution having the >> attachments as part of the Message interface is not the best solution for >> that. I guess it would have been better to have either a kind of >> AttachmentMessage interface (that extends Message) or some kind of >> AttachmentCapable interface (that complements Message). The components >> supporting attachments could be using this kind of message. However, do you >> think that this kind of refactoring makes sense before Camel 3.0? What would >> be the way to go for Camel 2.18? >> > > Yeah I like the idea of AttachmentMessage or AttachmentCapable. This > also makes those components stand out that support attachments. That > would possible to do for Camel 3.0 where we can do such an API change. > As its only a few components it wont hurt. > > So I suggest to log a JIRA for that for Camel 3.0. > > > >> Best regards >> Stephan >> >> -----Original Message----- >> From: Claus Ibsen [mailto:claus.ib...@gmail.com] >> Sent: Sonntag, 10. April 2016 15:45 >> To: dev <dev@camel.apache.org> >> Subject: Re: Concerning Attachments and Attachment Headers in Camel >> >> On Thu, Apr 7, 2016 at 2:42 PM, Siano, Stephan <stephan.si...@sap.com> wrote: >>> Hi, >>> >>> Is there anybody available in this list who knows why the attachment >>> handling in Camel is as it is? >>> >>> I have had a look into this topic with the Camel-Mail and Camel-CXF >>> components and would like to discuss my thoughts about that. >>> >>> In General the attachment handling is designed to support use cases like >>> MIME-Multipart messages (e.g. in Mail) or attachment formats as SOAP with >>> attachments (e.g in CXF). An attachment usually has some kind of >>> identifier, a content type, an attachment body and attachment headers. This >>> is at least the case for the Javamail MIME Part (javax.mail.Part) and the >>> CXF message Attachment (org.apache.cxf.message.Attachment) object. >>> >>> However the Camel Message interface has a different notion of attachments, >>> there is only a Map with an identifier (a key) and a DataHandler >>> (representing the message body, the content type and the content >>> disposition). Therefore there is no representation of any other attachment >>> header. Was that left out on purpose? >>> >>> Does it make sense to extend the Camel Message object >>> (org.apache.camel.Message)? A change here would run rather deep so I would >>> like to discuss this first before I try to contribute anything in this area. >>> >> >> The attachments are only used in a few components. It was added when >> Camel was created due the inspiration from JBI / XML world. >> >> But today we know better and IMHO the attachments should be >> deprecated/removed from the generic api, and only those components >> that want to use it, should have their own. People may mistakenly >> think that file/ftp/ and other components uses the attachments, but >> they do not. >> >> Then MailMessage and CxfMessage etc can have their attachments api. >> >> >> >>> Best regards >>> Stephan >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2