jsr339-experts@jax-rs-spec.java.net

[jsr339-experts] Re: Are name-bound container filters executed twice ?

From: Sergey Beryozkin <sberyozkin_at_talend.com>
Date: Mon, 10 Sep 2012 13:06:30 +0100

On 07/09/12 20:52, Sergey Beryozkin wrote:
> I have one more query about it.
>
> Global interceptors, those which have no name bindings and are executed
> by default at the past-match stage, are they executed
>
> 1) per every matched request method (ex, in the case where subresources
> are involved)
> 2) only on the first request method match
> 3) only after the root resource is selected (but no the initial request
> method is matched)
>
> Guess it is 1, but not 100% sure

The reason I'm asking for this clarification is that if we have a name
bound sub resource locator method and a global filter, then we have a
case where it's not exactly known yet if the resource URI can actually
be matched to the final resource method and yet we have a global filter

Cheers, Sergey

>
> Thanks, Sergey
>
> On 06/09/12 14:06, Sergey Beryozkin wrote:
>> On 06/09/12 13:53, Marek Potociar wrote:
>>> That's an obvious bug in wording. The "also" applies to the fact that
>>> "in that case the filter will *still* be executed in the post-matching
>>> phase, but only..."
>>> I understand that the current wording is confusing. We should fix that.
>> That clarifies it, thanks
>>
>> Sergey
>>>
>>> Marek
>>>
>>> On Sep 6, 2012, at 11:45 AM, Sergey Beryozkin<sberyozkin_at_talend.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> Here is the ContainerRequestFilter documentation fragment:
>>>>
>>>> "By default, i.e. if no name binding is applied to the filter
>>>> implementation class, the filter instance is applied globally,
>>>> however only after the incoming request has been matched to a
>>>> particular resource by JAX-RS runtime. If there is a @NameBinding
>>>> annotation applied to the filter, the filter will *also* be executed
>>>> at the post-match request extension point, but only in case the
>>>> matched resource or sub-resource method is bound to the same
>>>> name-binding annotation."
>>>>
>>>> Note I highlighted 'also'.
>>>>
>>>> That means to me that if we have @Logged attached to a given
>>>> ContainerRequestFilter and also to some request method, then we get
>>>> this request filter executed twice, once after a root resource has
>>>> been selected, and once - after the matching request method has been
>>>> selected.
>>>>
>>>> Is it really what we want ?
>>>>
>>>> I think that if we have a name-bound filter then it should only be
>>>> executed whenever a selected resource method has the same name binding.
>>>>
>>>> Thanks, Sergey
>>>
>
>