I think that JAX-WS specifies that it be typed as Map<String,DataHandler>
not Collection<Attachment>. The key in the map would be the Content-ID. So
we would have to convert.

This kills performance as it requires us to cache all the attachments
(unlike JAXB where we can lazily load do to some hackish code :-)), but
there isn't much I can do about that.

- Dan

On 1/22/07, Sergey Beryozkin <[EMAIL PROTECTED]> wrote:

Hi

Thanks for a hint. So I've added an AttachmentInInterceptor to the list of
in-interceptors in the XMLBindingFactory.
As far as I can see after looking through the code the side-effect of this
addition is that an implementation of org.apache.cxf.message.Message will
have a Collection<Attachment> set on it by the AttachmentDeserializer.

Now the next problem to solve is how to make this collection visible to
Provider<Source> implementations as they only see a
javax.xml.ws.handler.MessageContext. I can see
org.apache.cxf.jaxws.support.ContextPropertiesMapping, and it's there
where a MessageContext is created, in createWebServiceContext(Exchange
exchange).

So in this method I've just added

ctx.put(MessageContext.INBOUND_MESSAGE_ATTACHMENTS,
exchange.getInMessage().getAttachments());

so that the incoming attachments if any can be visible to Provider impls.

I reckon that's all I need. Any comments/corrections would be
appreciated...

Thanks, Sergey









----- Original Message -----
From: "Dan Diephouse" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, January 12, 2007 8:47 PM
Subject: Re: MIME support in XML binding


> It shouldn't be too hard to support MIME with the XML binding. I added
in
> the attachment interceptors to the HTTP binding so I've already gotten
MIME
> over HTTP with no SOAP working. I think the main thing it requires is
adding
> the interceptors to the XMLBindingFactory.
>




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to