¿Realmente significa validar el recurso miembros? Por lo general, los miembros del recurso se inyectan de esta forma u otra (ya sea contextos o entidad, o parámetros de ruta/consulta/matriz), siempre que el marco JAX-RS funcione, conseguirá que estos miembros sean correctamente inyectados.
Personalmente, creo que tiene más sentido validar la entidad ya que ha llegado por cable, rellenada por un MessageBodyReader y básicamente no tienes idea de lo que hay adentro, ¿no?
Así que si decide validar las entidades, hay varios enfoques que se pueden tomar:
yo sepa, Apache Wink no soporta validaciones incorporadas. Puede implementar un controlador. Ver DeploymentConfiguration.initRequestHandlersChain()
. Es compatible con la adición de controladores de usuario. En su controlador puede realizar cualquier validación. Incluso creo que la comunidad Wink se alegrará si contribuyes con este código.
El único problema con este enfoque, está relacionado con el Apache Wink. No funcionará si decide pasar a un marco JAX-RS diferente.
Otro enfoque es realizar esta validación en su propio MessageBodyReader
. Todo lo que necesita hacer es registrar un lector especial para sus entidades y validar la entidad que contiene. Todavía puede aprovechar los lectores de cuerpo de mensaje estándar (como JAXB o Jackson) utilizando @Context Providers.getMessageBodyReader()
. La buena parte de este enfoque es que es JAX-RS estándar. Lo malo es que uses MessageBodyReaders para algo para lo que no fueron diseñados.
El enfoque más simple es validar la entidad en la primera línea de cada método de recurso. Creará algo de duplicación de código, pero a veces la simplicidad gana.
Actualización - Creo que esto corresponde a la respuesta # 3 de Tarlog. – Brabster
En realidad, pensé en ponerlo en el 4 ° artículo, pero luego decidí dejarlo. El problema con este enfoque es que la clase contenedora puede no tener las anotaciones de la clase de recursos. Realmente depende de cómo lo implemente. – Tarlog