validate example validation rest jersey javabeans guice

example - spring rest validation message



Cómo integrar jersey con validación guice y bean (1)

Estoy usando jersey + guice para desarrollar la aplicación REST. Me gustaría realizar la validación de entrada para los parámetros de consulta, pero lo que estoy buscando es una solución ''lista para usar'' en lugar de escribirla yo mismo.

Ya he encontrado soporte para la validación de bean con jersey, pero desafortunadamente no tengo idea de cómo integrarlo con Guice. La mayor parte de la validación que necesito hacer es simple comprobación @NotNull. Necesito validar el valor y devolver un mensaje detallado cuando falla la validación.

¿Algunas ideas? Sugerencias?


Lo he resuelto.

En lugar de usar la extensión glassfish para jersey, usé la validación de bean apache. Se requieren agregar las siguientes dependencias al proyecto (forma gradle):

compile ''org.apache.bval:bval-guice:0.5'' compile ''javax.validation:validation-api:1.1.0.Final''

Mientras se crea el siguiente módulo guice injector, se debe agregar:

org.apache.bval.guice.ValidationModule

Así es como se ve el mapeador (maravilloso)

import com.google.inject.Singleton import javax.validation.ConstraintViolationException import javax.ws.rs.core.Response import javax.ws.rs.ext.ExceptionMapper import javax.ws.rs.ext.Provider import static groovy.json.JsonOutput.toJson import static javax.ws.rs.core.Response.Status.BAD_REQUEST import static javax.ws.rs.core.Response.status @Provider @Singleton class ValidationExceptionMapper implements ExceptionMapper { @Override Response toResponse(ConstraintViolationException e) { status(BAD_REQUEST).entity(toJson(e.constraintViolations*.message)).build() } }

El asignador de excepciones debe vincularse en cualquier módulo de guice con el método bind () simple. Luego, el método con parámetros a validar debe marcarse con:

org.apache.bval.guice.Validate

Y un parámetro por ejemplo con:

javax.validation.constraints.NotNull

Eso es todo.