I am puzzled by the javax.validation API. I am writing a simple test to understand it:
Sample sample = new Sample();
Set>
This is a known usability issue in Bean Validation 1.0. This issue was addressed in Bean Validation 1.1 by issue BVAL-198, "Simplify creation of ConstraintViolationExceptions". Upgrading to Bean Validation 1.1 or later will allow your code to compile as written.
The specific issue is that the ConstraintViolationException constructors accepted Set for their constraintViolations parameter. Since Set is not a subtype of Set, it could not be passed into the constructor, with a compilation error occurring when attempting to do so.
Bean validation 1.1.0 changed the constructors to instead accept Set extends ConstraintViolation>>. As this is a supertype of Set, it can be passed directly to the constructor.
As mentioned in this other answer, the fix while still on Bean Validation 1.0 was to pass in a Set instead of Set:
throw new ConstraintViolationException(
new HashSet>(violations));