Ejemplo n.º 1
0
 /**
  * Valida un objeto a partir de un validador concreto. <br>
  * El validador debe extender la clase Validator y soportar (verificado mediante el método
  * supports) el objeto a validar. Si no, lanza una IllegalArgumentException. <br>
  * El validador puede tener anotaciones de dependencias de Spring.
  *
  * @see com.lynxspa.sdm.web.services.validation.Validator
  * @see BindingResult#hasFieldErrors()
  * @param object El objeto a validar
  * @param validator El validador a utilizar.
  * @param BindingResult El resultado de la validación, es un objeto BindingResult de Spring. Para
  *     verificar que no hay errores de validación hay que llamar al método hasFieldErrors.
  * @param result
  */
 public void validate(Object object, Validator v, BindingResult result) {
   if (!v.supports(object.getClass())) {
     throw new IllegalArgumentException(
         "Validator " + v.getClass().toString() + " does not support " + object.getClass());
   }
   v.validate(object, result);
 }
Ejemplo n.º 2
0
 public void execute(ValidatorContext ctx) {
   logValidatorNames();
   for (Validator validator : validators) {
     logger.debug("starting {}", validator.getClass().getSimpleName());
     try {
       validator.validate(ctx);
     } catch (RuntimeException e) {
       logger.error(
           "validator "
               + validator.getClass().getSimpleName()
               + " ended with unexpected exception!",
           e);
       ctx.addError(null, ctx.getValidatedRepository(), e);
     }
   }
 }
Ejemplo n.º 3
0
 private void logValidatorNames() {
   StringBuilder validatorNamesBuilder = new StringBuilder();
   for (Validator validator : validators) {
     validatorNamesBuilder.append("\t");
     validatorNamesBuilder.append(validator.getClass().getCanonicalName());
     validatorNamesBuilder.append("\n");
   }
   logger.debug("following validators will be executed:\n" + validatorNamesBuilder);
 }
Ejemplo n.º 4
0
 public static void main(String[] args) throws IOException, ClassNotFoundException {
   Validator[] validators = {new ValidatorImpl()};
   CorrectnessTest.check(validators);
   String[][] data = {
     readData("dataset1.dat"), readData("dataset2.dat"), readData("dataset3.dat")
   };
   for (Validator val : validators) {
     System.out.println(val.getClass().getSimpleName());
     System.out.println(val.getClass().getSimpleName().replaceAll(".", "="));
     System.out.println(
         "Dataset1 Count\tDataset1 Time\tDataset2 Count"
             + "\tDataset2 Time\tDataset3 Count\tDataset3 Time");
     for (int i = 0; i < DATA_POINTS; i++) {
       test(val, data);
     }
   }
 }
Ejemplo n.º 5
0
  /** returns a list of Validation errors. */
  public ValidationItems validate() {

    Boolean noValidation = (Boolean) UserSelections.getInstance().getProperty("NO_VALIDATION");
    if (noValidation != null && noValidation.equals(true)) return ValidationItems.getInstance();

    Map<String, Boolean> validatorChoices =
        (Map<String, Boolean>) UserSelections.getInstance().getProperty("VALIDATORS_CHOICES");

    for (Validator val : validators) {
      String name = val.getClass().getName();
      if (validatorChoices != null
          && validatorChoices.get(name) != null
          && validatorChoices.get(name).equals(true)) {
        continue;
      }
      val.validate();
    }

    // !!TODO here we should add validators that we only want to run on subsequent calls

    return ValidationItems.getInstance();
  }