Class Interceptor.Priority

java.lang.Object
javax.interceptor.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:
Interceptors 1.2
See Also:
  • Field Details

    • PLATFORM_BEFORE

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

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

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

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

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