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.