Uploaded image for project: 'BVal'
  1. BVal
  2. BVAL-78

Avoid unsafe casting and object swapping when processing @ReportAsSingleViolation composed constraints

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.2-incubating
    • Fix Version/s: 0.2-incubating
    • Component/s: jsr303
    • Labels:
      None

      Description

      Numerous warnings abound in ConstraintViolation due to the fact that ConstraintValidationListener must be used as a raw type. Further the GroupValidationContext must be cast to a BeanValidationContext so that the listener reference can be reset, which doesn't feel optimal either. The attached patch:

      • Modifies GroupValidationContext<T> such that, rather than extending ValidationContext<T> where T extends ValidationListener, it instead expressly implements ValidationContext<ConstraintValidationListener<T>> (T is now effectively the same type variable as ConstraintValidationListener<T>). Now GroupValidationContext.getListener() expressly returns a ConstraintValidationListener.
      • Adds state management for @ReportAsSingleViolation composed constraints to ConstraintValidationListener so that the original listener instance can be used throughout.
      • The reportAsSingle execution path bails as soon as it is known that a composing constraint has failed.

        Attachments

          Activity

            People

            • Assignee:
              carlos.vara Carlos Vara
              Reporter:
              mbenson Matt Benson
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: