12.9.2. インターセプターを JAX-RS メソッドにバインド

概要

デフォルトでは、登録済みの全インターセプターが、全リクエストに対して呼び出されます。 AcceptedByMethod インターフェースを実装しこの動作を調整することができます。

例12.7 インターセプターの例を構築

RESTEasy は AcceptedByMethod インターフェースを実装するインターセプターに対して accept() メソッドを呼び出します。このメソッドが true を返す場合、インターセプターが JAX-RS メソッドの呼び出しチェーンに追加され、True が返されない場合はそのメソッドについては無視されます。
以下の例では、 accept() が @GET アノテーションが JAX-RS メソッドに存在するかを判断します。存在する場合、インターセプターがこのメソッドの呼び出しチェーンに適用されます。
@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();
   }
}