JAX-RS 2.0 Filtrowanie parametrów za pomocą adnotacji @NameBinding

Stworzyłem kilka zasobów JAX-RS 2.0 (przy użyciu Jeresey 2.4 działającego w kontenerze Servlet) oraz filtr, który obsługuje uwierzytelnianie i autoryzację, które można selektywnie zastosować za pomocą adnotacji @NameBinding. To wszystko działa świetnie.

Chciałbym móc zdefiniować niektóre parametry w tej adnotacji (w szczególności uprawnienia zabezpieczeń wymagane do uzyskania dostępu do każdej metody / zasobu), które mogą być dostępne dla filtru w czasie wykonywania, aby zmienić to zachowanie.

Zauważam, że przechwytywacze mogą to zrobić za pośrednictwem javax.ws.rs.ext.InterceptorContext.getAnnotations (), ale nie ma odpowiednika w javax.ws.rs.container.ContainerRequestContext dla filtrów. Jakieś pomysły, jak można to osiągnąć? Chciałbym móc zrobić coś takiego:

@Target({TYPE, METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding
public @interface Secured {
    String[] requiredPermissions() default {};
}

@Secured
@Priority(Priorities.AUTHENTICATION)
public class SecurityRequestFilter implements ContainerRequestFilter {
    @Override
    public void filter(ContainerRequestContext containerRequestContext) throws IOException {
        // extract credentials, verify them and check that the user has required permissions, aborting if not
    }
}

@Path("/userConfiguration/")
public class UserConfigurationResource {
    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Secured(requiredPermissions = {"configuration-permission"})
    public Response getConfig(@Context HttpServletRequest httpServletRequest) {
        // produce a response
    }
}

questionAnswers(2)

yourAnswerToTheQuestion