You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Eric Johnson <EM...@progress.com> on 2009/10/14 23:05:45 UTC

ParameterHandler Question

I was looking through the documentation on JAX-RS and found this:
CXF JAXRS supports ParameterHandler extensions which can be used to deal
with method parameters annotated with one of the JAXRS parameter
annotations : 
public class MapHandler implements ParameterHandler<Map> {
    public Map fromString(String s) {...}
}

@Path("/")
public class Service {

    
    @PUT
    @Path("{id}")
    public Response update(@PathParam("g") Map m, byte[] bytes) {
        ...
    }
}
Note that ParameterHandlers can not be used to deal with parameters
representing a message body, "byte[] byte" in this example.
MessageBodyReaders have to deal with this task. That said, a given
MessageBodyReader implementation can also implement ParameterHandler.
ParameterHandlers can be registered as providers either from Spring or
programmatically.
I'm feeling a little stupid because I cannot figure out from the example
code what is going on. I see that the PathParam is looking for the path
segment "g" which does not appear to exist in the URI template and wants
to map that value into a Map. I also see that there is a
ParameterHandler implemented that maps a PathParam to a Map. So, does
the ParameterHandler get used when the URI template variable does not
exist? Or is it just a typo? Or does it not matter?
Also could an example of how the ParameterHandler is registered be
added?

Re: ParameterHandler Question

Posted by Sergey Beryozkin <sb...@progress.com>.
It's embarrassing, I've just made another typo

> <bean id="paramHandler" "org.apache.cxf.systest.jaxrs.MapParamHandler"/>

should be

<bean id="paramHandler" class="org.apache.cxf.systest.jaxrs.MapParamHandler"/>


----- Original Message ----- 
From: "Sergey Beryozkin" <sb...@progress.com>
To: <us...@cxf.apache.org>
Sent: Thursday, October 15, 2009 11:02 AM
Subject: Re: ParameterHandler Question


> Hi Eric
>
> It's a typo, sorry. Just fixed it. ParameterHandler implementations can be registered as providers; there're examples showing how 
> to register  providers, so I don't show it every time to save some space. For ex, here's how you can do it from Spring :
>
> <jaxrs:server address="/">
> <jaxrs:providers>
>   <ref bean="paramHandler"/>
> </jaxrs:providers>
> </jaxrs:server>
>
> <bean id="paramHandler" "org.apache.cxf.systest.jaxrs.MapParamHandler"/>
>
>
> thanks, Sergey
>
> ----- Original Message ----- 
> From: "Eric Johnson" <EM...@progress.com>
> To: <us...@cxf.apache.org>
> Sent: Wednesday, October 14, 2009 10:05 PM
> Subject: ParameterHandler Question
>
>
> I was looking through the documentation on JAX-RS and found this:
> CXF JAXRS supports ParameterHandler extensions which can be used to deal
> with method parameters annotated with one of the JAXRS parameter
> annotations :
> public class MapHandler implements ParameterHandler<Map> {
>    public Map fromString(String s) {...}
> }
>
> @Path("/")
> public class Service {
>
>
>    @PUT
>    @Path("{id}")
>    public Response update(@PathParam("g") Map m, byte[] bytes) {
>        ...
>    }
> }
> Note that ParameterHandlers can not be used to deal with parameters
> representing a message body, "byte[] byte" in this example.
> MessageBodyReaders have to deal with this task. That said, a given
> MessageBodyReader implementation can also implement ParameterHandler.
> ParameterHandlers can be registered as providers either from Spring or
> programmatically.
> I'm feeling a little stupid because I cannot figure out from the example
> code what is going on. I see that the PathParam is looking for the path
> segment "g" which does not appear to exist in the URI template and wants
> to map that value into a Map. I also see that there is a
> ParameterHandler implemented that maps a PathParam to a Map. So, does
> the ParameterHandler get used when the URI template variable does not
> exist? Or is it just a typo? Or does it not matter?
> Also could an example of how the ParameterHandler is registered be
> added?
> 


Re: ParameterHandler Question

Posted by Sergey Beryozkin <sb...@progress.com>.
Hi Eric

It's a typo, sorry. Just fixed it. ParameterHandler implementations can be registered as providers; there're examples showing how to 
register  providers, so I don't show it every time to save some space. For ex, here's how you can do it from Spring :

<jaxrs:server address="/">
<jaxrs:providers>
   <ref bean="paramHandler"/>
</jaxrs:providers>
</jaxrs:server>

<bean id="paramHandler" "org.apache.cxf.systest.jaxrs.MapParamHandler"/>


thanks, Sergey

----- Original Message ----- 
From: "Eric Johnson" <EM...@progress.com>
To: <us...@cxf.apache.org>
Sent: Wednesday, October 14, 2009 10:05 PM
Subject: ParameterHandler Question


I was looking through the documentation on JAX-RS and found this:
CXF JAXRS supports ParameterHandler extensions which can be used to deal
with method parameters annotated with one of the JAXRS parameter
annotations :
public class MapHandler implements ParameterHandler<Map> {
    public Map fromString(String s) {...}
}

@Path("/")
public class Service {


    @PUT
    @Path("{id}")
    public Response update(@PathParam("g") Map m, byte[] bytes) {
        ...
    }
}
Note that ParameterHandlers can not be used to deal with parameters
representing a message body, "byte[] byte" in this example.
MessageBodyReaders have to deal with this task. That said, a given
MessageBodyReader implementation can also implement ParameterHandler.
ParameterHandlers can be registered as providers either from Spring or
programmatically.
I'm feeling a little stupid because I cannot figure out from the example
code what is going on. I see that the PathParam is looking for the path
segment "g" which does not appear to exist in the URI template and wants
to map that value into a Map. I also see that there is a
ParameterHandler implemented that maps a PathParam to a Map. So, does
the ParameterHandler get used when the URI template variable does not
exist? Or is it just a typo? Or does it not matter?
Also could an example of how the ParameterHandler is registered be
added?