Sergey,

multipart-form/data is the the stock way to post a form as MIME attachments.
It seems to me that JAX-RS should handle just the same as multipart/mixed.
Each part has a content type, and the code should match up the @Multipart
with readers using the per-part mime type, just as you wrote that it handles
multipart/mixed.

--benson


On Sun, Oct 11, 2009 at 1:50 PM, Sergey Beryozkin <[email protected]
> wrote:

>
> Hi Benson
>
> AFAIK multipart/form-data is mainly used to submit files from the forms
> [1],
> though individual parts may contain "application/x-www-form-urlencoded"
> data, this is my interpretation at least and this is how I implemented the
> way multipart/form-data is handled. So it should really be :
>    @Consumes("multipart/form-data")
>    public Response addGazetteer(@FormParam("gazetter")  String gazetteer) {
>    }
>
> in other words CXF FormProvider will not delegate to other providers
> (JAXB/JSON, etc) when dealing with "multipart/form-data"; perhaps it should
> ?
>
> It is MultipartProvider which deals with multipart/related,
> multipart/mixed,
> etc, which will delegate. It is this provider which will notice
> @Multipart(type = "application/json").
>
> There's a couple of options. If you can actually afford specifying say
> multipart/mixed then it will work as expected. Another option is to
> register
> a simple RequestFilter impl which will change multipart/form-data
> to say multipart/mixed. Finally you can do
>
> @Consumes("multipart/form-data")
>    public Response addGazetteer(@FormParam("gazetter")  Gazetter gazetteer)
> {
>    }
>
> and register a ParameterHandler<Gazetter> which will use a JSONProvider to
> convert a JSON sequence into Gazetter
>
> cheers, Sergey
>
> [1]http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
>
>
> bimargulies wrote:
> >
> > Oct 10, 2009 5:08:59 PM org.apache.cxf.jaxrs.utils.JAXRSUtils
> > readFromMessageBody
> > WARNING: .No message body reader found for request class : Gazetteer,
> > ContentType :
> > multipart/form-data;boundary=hxz8idwzzxgwwr7p0v1vregmn2wxnajqg0f_bxk6.
> > Oct 10, 2009 5:08:59 PM
> > org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
> > WARNING: WebApplicationException has been caught : no cause is available
> >
> > And my function is:
> >
> >     @POST
> >     @Path("/gazetteer/new")
> >     @Consumes("multipart/form-data")
> >     public Response addGazetteer(@Multipart(type = "application/json")
> > Gazetteer gazetteer) {
> >         try {
> >             configDb.addGazetteer(gazetteer);
> >         } catch (Exception e) {
> >             return Response.status(500).build();
> >         }
> >         return Response.ok().build();
> >     }
> >
> > The client sends a multipart form posting with JSON in the one and only
> > part, and I expect it to get mapped. What am I missing?
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/JAX-RS-form-reading%2C-I%27m-stumped-tp25838462p25845846.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
>

Reply via email to