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

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

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.2-incubating
    • 0.2-incubating
    • jsr303
    • 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

        1. BVAL-78.patch.txt
          14 kB
          Matthew Jason Benson

        Activity

          People

            carlos.vara Carlos Vara
            mbenson Matthew Jason Benson
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: