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 12:54:11 -0700

Perfect. Thanks Michal.

Sent from my iPhone

> On 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!
>