users@jersey.java.net

[Jersey] Re: Access to method in a filter

From: Robert DiFalco <robert.difalco_at_gmail.com>
Date: Tue, 29 Apr 2014 15:45:33 -0700

Any draw backs to conditionally adding the filter in a DynamicFeature?


On Tue, Apr 29, 2014 at 12:32 PM, Michal Gajdos <michal.gajdos_at_oracle.com>wrote:

> Hi Robert,
>
> there are 3 possible choices for you:
>
> 1) (JAX-RS) inject ResourceInfo ([1]) into your (post-matching) request
> filter
> 2) (Jersey specific) if you need more info cast UriInfo into
> ExtendedUriInfo ([2]) and look for getMatchedResourceMethod() ([3])
> 3) (JAX-RS) bind the container request filter directly to a resource
> method - it's opposite approach than yours, described here [4]
>
> [1] https://jersey.java.net/apidocs/latest/jersey/javax/
> ws/rs/container/ResourceInfo.html
> [2] https://jersey.java.net/apidocs/latest/jersey/org/
> glassfish/jersey/server/ExtendedUriInfo.html
> [3] https://jersey.java.net/apidocs/latest/jersey/org/
> glassfish/jersey/server/ExtendedUriInfo.html#getMatchedResourceMethod()
> [4] http://blog.dejavu.sk/2014/01/08/binding-jax-rs-providers-
> to-resource-methods/
>
> HTH,
> Michal
>
>
> On 29.04.2014, 20:51 , Robert DiFalco wrote:
>
>> Is there a way to access the Resource method that will be called in a
>> ContainerRequestFilter? I have a scenario where I want Basic Authentication
>> on my REST API. This was a very simple filter to write. However, there are
>> some methods that I want to be unauthenticated.
>>
>> My naive approach was to create an annotation @Unauthenticated that I
>> could either put on a Resource at the class or method level. Then in my
>> filter I could see if this annotation exists and if it does skip my Basic
>> API authentication.
>>
>> Unfortunately, while I *can* figure out how to get the resource object in
>> the filter by calling 'requestCtx.getUriInfo().getMatchedResources()' I
>> can *NOT* figure out how to get the method that is going to be invoked.
>>
>> So I can check for annotations at the class level but I cannot figure out
>> how to check for them at the method level. Any guidance would be greatly
>> appreciated!
>>
>
>