java - example - Match Filter con método específico a través de NameBinding en RESTeasy
resteasy maven (1)
Estoy intentando especificar un filtro de ajuste previo que solo esté asociado a algunas de mis llamadas API, siguiendo lo que sugiere la documentación RESTeasy . Aquí está mi código:
Enlace de nombre:
@NameBinding
public @interface ValidateFoo {}
Recurso:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
Filtrar:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
El problema es que el filtro FooValidation se ejecuta antes de cada llamada a un método (por ejemplo: antes de GET y POSTs a / foo / bar), no solo los anotados con @ValidateFoo
(me parece un error). Si @Provider
anotación @Provider
del filtro, no se ejecutará antes de ninguna llamada (como se esperaba).
Estoy viendo este comportamiento de manera consistente, ya sea usando WebLogic o Tomcat. Mi administración de dependencias se realiza a través de Maven, y la versión RESTeasy es 3.0-beta-3.
¿Alguien experimenta / experimentó el mismo comportamiento? He visto a otro usuario con un problema similar en los foros de JBoss , sin suerte hasta el momento.
ACTUALIZACIÓN: Todavía experimenta el mismo problema con RESTeasy 3.0.1-Final.
Tuve un problema similar. Para mí, la solución fue agregar la siguiente configuración de anotación (a @ValidateFoo):
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding