Used @Valid to do recursive validation
Implemented custom validator