This is fixed now. CXF 2.3.3 may need to be released soon so the fix will be
there. A workaround (providing for both MultivaluedMap and explicit Form
parameters in the same signature) is possible even now but it's really a
hack so it's better to wait till 2.3.3 :-)

Thanks, Sergey

On Mon, Jan 24, 2011 at 1:37 AM, Mattmann, Chris A (388J) <
[email protected]> wrote:

> Thanks Sergey!
>
> I've worked around it for now in OODT-118, but would love to be able to
> switch the code back to the way that it was!
>
> Cheers,
> Chris
>
> On Jan 23, 2011, at 10:02 AM, Sergey Beryozkin wrote:
>
> > Hi Chris
> >
> > On Sun, Jan 23, 2011 at 1:59 AM, Mattmann, Chris A (388J) <
> > [email protected]> wrote:
> >
> >> Hi Folks,
> >>
> >> Was trying to find someone in IRC, but going to post this to the list
> too
> >> I'm using JAX RS from CXF, with the 2.3.2 jars within Apache OODT. We've
> >> seen an error in one of our webapps over there that seems to be what
> this
> >> user was reporting:
> >>
> >> http://osdir.com/ml/users-cxf-apache/2009-05/msg00166.html
> >>
> >> I've filed an OODT issue about this:
> >>
> >> https://issues.apache.org/jira/browse/OODT-118
> >>
> >> Basically what I'm seeing is that I have a JAX RS service mapped to
> >> /services/metadata/catalog the method looks like this:
> >> @POST
> >> @Path(CATALOG)
> >> @Consumes("application/x-www-form-urlencoded")
> >> @Produces("text/plain")
> >> public String setCatalogMetadata(MultivaluedMap<String, String>
> >> formParams,
> >> @FormParam("id") String id) {
> >>
> >> What i'm seeing is an error where id is always null. I  threw up firebug
> >> and confirmed that id is getting passed in correctly via the form
> params.
> >>
> >>
> > What is likely happening is that all the form parameters are consumed
> from
> > the request input stream by the formParams map. The "formParams"
> parameter
> > represents a request body (it has no JAX-RS annotations associated with
> it)
> > and thus the JAX-RS runtime uses a form MessageBodyReader. This reader is
> > not aware of the fact that  another method parameter is referring to one
> of
> > the form names in the request body and 'drains' the stream.
> >
> > I'll look into it. Perhaps this issue can be easily resolved by having
> the
> > form reader to persist the MultivaluedMap<String, String> map on the
> current
> > message, something similar to what is used to have multiple FormParams
> > supported
> >
> > thanks, Sergey
> >
> > Any ideas? You can see the OODT code for yourself around line 260 in this
> >> file:
> >>
> >> http://s.apache.org/eEE
> >>
> >> Cheers,
> >> Chris
> >>
> >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >> Chris Mattmann, Ph.D.
> >> Senior Computer Scientist
> >> NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA
> >> Office: 171-266B, Mailstop: 171-246
> >> Email: [email protected]
> >> WWW:   http://sunset.usc.edu/~mattmann/<http://sunset.usc.edu/%7Emattmann/>
> <http://sunset.usc.edu/%7Emattmann/>
> >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >> Adjunct Assistant Professor, Computer Science Department
> >> University of Southern California, Los Angeles, CA 90089 USA
> >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >>
> >>
>
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> Chris Mattmann, Ph.D.
> Senior Computer Scientist
> NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA
> Office: 171-266B, Mailstop: 171-246
> Email: [email protected]
> WWW:   http://sunset.usc.edu/~mattmann/<http://sunset.usc.edu/%7Emattmann/>
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> Adjunct Assistant Professor, Computer Science Department
> University of Southern California, Los Angeles, CA 90089 USA
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>

Reply via email to