Class ConditionalNotEmptyValidator

java.lang.Object
jp.ecuacion.lib.core.jakartavalidation.validator.ConditionalNotEmptyValidator
All Implemented Interfaces:
jakarta.validation.ConstraintValidator<ConditionalNotEmpty, Object>

public class ConditionalNotEmptyValidator extends Object implements jakarta.validation.ConstraintValidator<ConditionalNotEmpty, Object>
Provides the validation logic for EnumElement.
  • Field Details

  • Constructor Details

    • ConditionalNotEmptyValidator

      public ConditionalNotEmptyValidator()
  • Method Details

    • initialize

      public void initialize(ConditionalNotEmpty annotation)
      Initializes an instance.
      Specified by:
      initialize in interface jakarta.validation.ConstraintValidator<ConditionalNotEmpty, Object>
    • isValid

      protected boolean isValid(Object valueOfField)
    • isValidWhenConditionNotSatisfied

      protected boolean isValidWhenConditionNotSatisfied(Object valueOfField)
      Is called when validatesWhenConditionNotSatisfied is true.

      It's supposed to overrided by child classes. This method is default method, that's why it always returns true.

      Parameters:
      valueOfField - valueOfField
      Returns:
      boolean
    • initialize

      public void initialize(String[] propertyPath, String conditionPropertyPath, ConditionValuePattern conditionPattern, ConditionOperator conditionOperator, String[] conditionValueString, String conditionValuePropertyPath, boolean validatesWhenConditionNotSatisfied)
    • isValid

      public boolean isValid(Object instance, jakarta.validation.ConstraintValidatorContext context)
      Executes validation check.
    • searchAnnotationPlacedAtClass

      public static <A extends Annotation> Optional<A> searchAnnotationPlacedAtClass(Class<?> classOfTargetInstance, Class<A> annotation)
      Searches for a class annotation in the argument class and its superClasses.

      The search starts at the argument instance, and if it doesn't have the annotation, It searches the superClass of the instance next.
      And if it continues to search the annotation and it reaches to Object.class, it stops to search and returns empty Optional.

      Search ends when it founds the first annotation. Even if there is another anntation of same class, it ignores and it returns first-found annotation.

    • getFieldValue

      protected static Object getFieldValue(String propertyPath, Object instance)
      Obtains a field value with any scopes and searches fields in super classes.

      Since Class#getDeclaredField is used in the method, making its scope public causes a spotbugs error.
      That's why its scope is protected and when you use it you need to extend this class.

      Public method jp.ecuacion.lib.core.util.internal.PrivateFieldReadUtil.getFieldValue(String, Object, String) uses reflection to modify a field it gets in its parameter which could increase the accessibility of any class. REFLF_REFLECTION_MAY_INCREASE_ACCESSIBILITY_OF_FIELD