I have worked round the problem for now by changing the Rating Enum variable in RatingInfo to a String:
public RatingInfo {
@ValidRating
private String rating;
....
}
In the ValidRating bean validator I then validate the String value against the enum to ensure the passed in String is a a valid rating, if this fails the framework throws a ConstraintViolationException that I map to a 400.
This is not ideal as I would prefer to use an Enum in my RatingInfo bean but it does solve the problem for now.