The Hibernate Validator module is used to:

1) generate client-side validators.
2) super source hibernate specific constraints
3) super source hibernate classes needed to return ConstraintViolations from the server to the client.


Maintenance Notes.
Test using samples/validation and samples/validationtck


NOTE
(nchalko) all of should be pushed back to hibernate.