Inicio > ADF / Java > ADF tips: Refinando el “Failed to validate all rows in transaction”

ADF tips: Refinando el “Failed to validate all rows in transaction”

En este tip explicaremos cómo ampliar de forma sencilla y útil la conocida excepción de “Failed to validate all rows in transaction“.

Todo proyecto una vez pasa la fase de desarrollo necesita buenas trazas de log, sobretodo en casos de error. En el momento que una entidad no cumple todas sus validaciones lanza una excepción en el método validateEntity del tipo ValidationException. En las trazas de log por defecto no veremos demasiada información acerca del error, lo que siempre nos complica la resolución del mismo.

Para tener algo más de información podemos crear una entidad genérica de la que hereden el resto de entidades de nuestro proyecto; esto se configura desde las propiedades del proyecto en la opción Business Components:

Base Entity

En esa entidad tenemos la oportunidad de interceptar el método de validateEntity para obtener más información acerca del error. Un ejemplo de comportamiento deseado sería el siguiente: si la excepción proviene de una regla global de entidad trazamos el error global y todos los atributos implicados en el error; si la excepción proviene de un único atributo mostramos el atributo implicado.


 @Override
 protected void validateEntity() {
    try {
        super.validateEntity();
     } catch (ValidationException e) {
        //For each detail, see error message
        for (int i = 0; i < e.getDetails().length; i++) {
            ValidationException invalidValidation = (ValidationException)
                                                  e.getDetails()[i];
            //If exception is Entity Validator
            if (invalidValidation instanceof RowValException) {
               // Show global error message
               RowValException invalidRow = (RowValException)invalidValidation;
               logger.error(this.getClass() + "##validateEntity :: Failed to " +
                    "validate Entity Validators: " + invalidRow.getObjName());
               //For each attribute validator show error message
               for (int j = 0; j < invalidRow.getDetails().length; j++) {
                    AttrValException invalidAttr = (AttrValException)
                                                     invalidRow.getDetails()[j];
                    logger.error(this.getClass() + "##validateEntity :: Failed" + 
                               " to validate entity: " + invalidAttr.getObjName()
                               + " || Attribute: " + invalidAttr.getAttrName() +
                               " || Value: " + invalidAttr.getAttrValue());
               }
                   //If exception is Attribute Validator
            } else if (invalidValidation instanceof AttrSetValException) {
               // Show attribute set validation error message
               AttrSetValException invalidAttr = (AttrSetValException)
                                                     invalidValidation;
               logger.error(this.getClass() + "##validateEntity :: Failed to 
                                   validate Attribute Validators entity: " +
                                   invalidAttr.getObjName() + " || Attribute: " 
                                   + invalidAttr.getAttrName() + " || Value: " +
                                   invalidAttr.getAttrValue());
            } else if (invalidValidation instanceof AttrValException) {
                // Show attribute validation error message
                AttrValException invalidAttr =
                        (AttrValException)invalidValidation;
                logger.error(this.getClass() +
                         "##validateEntity :: Failed to validate Attribute " + 
                          "Validators entity: " +
                          invalidAttr.getObjName() + " || Attribute: " +
                          invalidAttr.getAttrName() + " || Value: " +
                          invalidAttr.getAttrValue());
            }
        }//end iterate details exceptions
        throw e;
     }
 }

Categorías:ADF / Java Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: