Estoy escribiendo una API REST, haciendo uso de RestEasy 2.3.4.Final. Sé que un Interceptor interceptará todas mis solicitudes, y que un PreProcessInterceptor será el primero (antes de todo) a ser llamado. Me gustaría saber cómo puedo llamar a este Interceptor solo cuando se llaman métodos específicos.¿Cómo utilizar RESTEasy PreProcessInterceptor solo en métodos específicos?
Intenté usar PreProcessInterceptor y AcceptedByMethod, pero no pude leer los parámetros que necesito. Por ejemplo, se necesita para ejecutar mi interceptor sólo cuando se llama a este método:
@GET
@Produces("application/json;charset=UTF8")
@Interceptors(MyInterceptor.class)
public List<City> listByName(@QueryParam("name") String name) {...}
Para ser más específicos, se necesita para ejecutar mi interceptor en todos los métodos cuyos tener un @QueryParam("name")
de su firma, para poder agarrar el nombre y hacer algo antes de todo.
¿Es posible? Intenté capturar el parámetro "nombre" dentro del Interceptor, pero no pude hacer eso.
¿Alguien podría ayudarme, por favor?
Gracias @eiden. Intenté esto antes, pero sin usar el '@ Contexto'. Pero, cuando trato de recuperar algunos datos del contexto inyectado, arroja una excepción porque el contexto no se inicializó, supongo. org.apache.catalina.core.ContainerBase. [Jboss.web]. [Predeterminado-host]. [/ Api]] (subproceso de servicio MSC 1-3) Excepción que envía el evento inicializado de contexto a la instancia de escucha de la clase org.jboss .resteasy.plugins.server.servlet.ResteasyBootstrap: org.jboss.resteasy.spi.LoggableFailure: no se pueden encontrar datos contextuales de tipo: javax.servlet.http.HttpServletRequest – pulu
¿No sé por qué está utilizando @Context? De todos modos, he actualizado mi respuesta con un ejemplo de código – eiden
Excelente @eiden. Casi lo tengo trabajando de esa manera, pero no me di cuenta 'if (annotation.annotationType() == QueryParam.class) { QueryParam queryParam = (QueryParam) anotación; return queryParam.value(). Equals ("name"); ' ¡Muchas gracias por ayudarme! Y espero que ayude a algunas personas más. – pulu