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));