problema de diseño de java para validaciones

Tengo el siguiente requisito: Dispongo de un sistema de validación. Una de las cosas que debo hacer es realizar validaciones en archivos XML, es decir, validar que la etiqueta X es igual a un valor dado. Tengo más de un escenario posible, y en cada escenario hay un conjunto diferente de etiquetas que deben validarse.

No quiero repetir el mismo código al probar las mismas etiquetas en diferentes escenarios.

Estoy tratando de encontrar un diseño que resuelva este problema.

¿Alguna idea?

Gracias.

preguntado el 16 de mayo de 11 a las 20:05

3 Respuestas

Definiría pares de expresiones XPath y resultados esperados para los escenarios.

Luego, el validador tomaría un escenario (objeto), compilaría y aplicaría las expresiones asociadas al documento xml. Esto seleccionaría un elemento y el validador verificaría si el contenido del elemento coincide con el valor esperado.

contestado el 17 de mayo de 11 a las 00:05

gracias por la respuesta. los resultados esperados se determinan en tiempo de ejecución. así que no puedo predefinir las expresiones y los resultados. - Dan

@dan - no importa - entonces simplemente almacene los XPaths e informe a su validador en tiempo de ejecución dónde para obtener los resultados esperados o las reglas - Andreas Dolk

Erm, ¿delegado a un método compartido? Como:

void validateAppleScenario(Xml xml) {
    validateFruit(xml);
    // validate apples specific tags
}

void validateBanana(Xml xml) {
    validateFruit(xml);
    // validate banana specific tags
}

void validateFruit(Xml xml) {
    // validate tags common to all fruit
}

O si prefiere que los validadores sean objetos separados, puede usar subtipos:

interface Validator {
    void validate(Xml xml);
}

class FruitValidator implements Validator {
    void validate(Xml xml) {
        // validate tags common to all fruit
    }
}

class AppleValidator extends FruitValidator {
    void validate(Xml xml) {
        super.validate(xml);
        // validate tags specific to apples
    }
}

contestado el 17 de mayo de 11 a las 01:05

Un enfoque sería analizar el XML en un objeto y luego validarlo de acuerdo con la especificación Bean Validation (JSR 303). Validador de hibernación es la implementación de referencia. * Puede anotar sus propiedades con restricciones de validación y luego especificar grupos de validación para que determinados campos se validen en determinados escenarios.

Hay mas info acá y acá.

* Hibernate Validator es diferente de Hibernate ORM. Solo están relacionados en que Hibernate ORM usa Validator para su verificación de restricciones.

contestado el 17 de mayo de 11 a las 02:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.