Class Interceptor.Priority

  • Enclosing class:
    Interceptor

    public static class Interceptor.Priority
    extends Object

    Priorities that define the order in which interceptors are invoked. These values are intended to be used with the Priority annotation for interceptors that are defined by means of interceptor binding.

    Interceptors with smaller priority values are called first. If more than one interceptor has the same priority, the relative order of those interceptors is undefined.

    • Interceptors defined by platform specifications that are to be executed at the beginning of the interceptor chain should have priority values in the range PLATFORM_BEFORE up until LIBRARY_BEFORE.
    • Interceptors defined by extension libraries that are intended to be executed earlier in the interceptor chain, but after any interceptors in the range up until LIBRARY_BEFORE should have priority values in the range LIBRARY_BEFORE up until APPLICATION.
    • Interceptors defined by applications should have priority values in the range APPLICATION up until LIBRARY_AFTER.
    • Interceptors defined by extension libraries that are intended to be executed later in the interceptor chain should have priority values in the range LIBRARY_AFTER up until PLATFORM_AFTER.
    • Interceptors defined by platform specifications that are intended to be executed at the end of the interceptor chain should have priority values at PLATFORM_AFTER or higher.

    An interceptor that must be invoked before or after another defined interceptor can choose any appropriate value.

    For example, an extension library might define an interceptor like this:

     @Priority(Interceptor.Priority.LIBRARY_BEFORE+10)
     @Validated @Interceptor
     public class ValidationInterceptor { ... }
     
    The Priority annotation is ignored when computing the invocation order of interceptors bound to a target using the Interceptors annotation.
    Since:
    Jakarta Interceptors 1.2
    See Also:
    Priority
    • Field Detail

      • PLATFORM_BEFORE

        public static final int PLATFORM_BEFORE
        Start of range for early interceptors defined by platform specifications.
        See Also:
        Constant Field Values
      • LIBRARY_BEFORE

        public static final int LIBRARY_BEFORE
        Start of range for early interceptors defined by extension libraries.
        See Also:
        Constant Field Values
      • APPLICATION

        public static final int APPLICATION
        Start of range for interceptors defined by applications.
        See Also:
        Constant Field Values
      • LIBRARY_AFTER

        public static final int LIBRARY_AFTER
        Start of range for late interceptors defined by extension libraries.
        See Also:
        Constant Field Values
      • PLATFORM_AFTER

        public static final int PLATFORM_AFTER
        Start of range for late interceptors defined by platform specifications.
        See Also:
        Constant Field Values