users@javaee-spec.java.net

[javaee-spec users] [jsr342-experts] Re: Priority of interceptors

From: Pete Muir <pmuir_at_bleepbleep.org.uk>
Date: Tue, 5 Feb 2013 06:42:52 -0500

On 4 Feb 2013, at 14:53, Linda DeMichiel wrote:

> Feedback and questions regarding interceptor priority from
> the Bean Validation spec lead. Please weigh in as appropriate
>
> thanks,
>
> -Linda
>
> On 2/4/2013 11:10 AM, Emmanuel Bernard wrote:
>> (Linda, can you forward to the jsr342 list, I don't think I have write
>> access).
>>
>> Thanks for this work.
>>
>>
>> ## Question
>>
>> The spec claims:
>>
>>> An interceptor bound to a component using interceptor binding, may be enabled for the entire applica- tion by applying the Priority annotation, along with a priority value, on the interceptor class.
>>
>> Does that mean that without @Priority, the interceptor is not enabled
>> for the entire application?

Yes.

>> And to clarify my doubts, you still enforce
>> that the binding annotation must be present for the interceptor to be
>> applied on a given method or class, correct?

Yes.

>>
>> ## Proposal
>>
>> Have you guys considered adding a END_OF_PLATFORM_AFTER = 5000 so that
>> if for some reasons, people want to go after Java EE platform elements,
>> they can do so.

I'm not sure we want to do this without a firm use case. People can still go here by using a number of course.

>>
>> BTW, I think the spec should clarify that negative priority are accepted
>> and that signed number ordering happen.
>>
>> ## Bean Validation priority
>>
>> If we go with that route (allocating 1000 to the platform_after
>> section), I'm tempted to place Bean Validation priority to
>> PLATFORM_AFTER+800.
>>
>> Why? Well:
>>
>> 1. it makes for a beautiful symmetry with JTA :)
>> 2. and it reflects our opinion that BV should happen relatively late
>> just like JTA should happen relatively early, but still offer an open
>> door to override these propositions.
>>
>> Emmanuel
>>
>> On Thu 2013-01-31 11:22, Linda DeMichiel wrote:
>>>
>>> The revisions to the Interceptor spec to accommodate the improved
>>> managed bean alignment are nearly complete. You can download the
>>> current draft of the spec from the interceptor-spec.java.net project
>>> at http://java.net/projects/interceptors-spec/downloads
>>>
>>> One of the issues that we still need to resolve, however, is the
>>> assignment of priorities to the new transactional interceptors being
>>> defined by JTA and the Bean Validation interceptors that handle
>>> method validation.
>>>
>>> Section 5.5 of the Interceptors spec defines the following Priority
>>> values (see the spec for the details):
>>>
>>> Interceptor.Priority.PLATFORM_BEFORE = 0
>>> Interceptor.Priority.LIBRARY_BEFORE = 1000
>>> Interceptor.Priority.APPLICATION = 2000
>>> Interceptor.Priority.LIBRARY_AFTER = 3000
>>> Interceptor.Priority.PLATFORM_AFTER = 4000
>>>
>>> In our earlier discussions, we concluded that transactional
>>> interceptors needed to come relatively early in the interceptor chain.
>>> To put a stake in the ground, we propose that we define these to have
>>> a priority of Interceptor.Priority.PLATFORM_BEFORE+200.
>>>
>>> Validation interceptors, however, should come relatively late,
>>> since they will ensure that the parameters that reach the method
>>> (which might have been modified by other interceptors) are valid.
>>> Again, to put a stake in the ground, we'll propose a priority of
>>> Interceptor.Priority.PLATFORM_AFTER+1000.
>>>
>>> Comments please!
>>>
>>> Emmanuel, Paul, could you please consult with your expert groups
>>> for further input as well...
>>>
>>> thanks,
>>>
>>> -Linda
>>>
>>>
>>>