28.5. Binding Interceptors
By default, any registered interceptor will be invoked for every request. You can alter this by having your interceptors implement the
org.jboss.resteasy.spi.AcceptedByMethod
interface:
public interface AcceptedByMethod { public boolean accept(Class declaring, Method method); }
If your interceptor implements this interface, RESTEasy invokes the
accept()
method. If this method returns true
, RESTEasy adds that interceptor to the JAX-RS method's call chain. If it returns false
, the interceptor will not be added to the call chain. For example:
@Provider @ServerInterceptor public class MyHeaderDecorator implements MessageBodyWriterInterceptor, AcceptedByMethod { public boolean accept(Class declaring, Method method) { return method.isAnnotationPresent(GET.class); } public void write(MessageBodyWriterContext context) throws IOException, WebApplicationException { context.getHeaders().add("My-Header", "custom"); context.proceed(); } }
In this example, the
accept()
method checks whether the @GET
annotation exists in the JAX-RS method. If it does, the interceptor will be applied to that method's call chain.