Automated Validation of Attributes

From: Andrew Lindesay (ap..indesay.co.nz)
Date: Tue Mar 09 2010 - 22:42:58 EST

  • Next message: Andrus Adamchik: "Re: Automated Validation of Attributes"

    Hello;

    As you may know, WebObjects/EOF has the protocol;

            NSValidation

    Specifically, this protocol implements the following two methods;

            Object validateTakeValueForKeyPath(Object value, String keyPath)
            Object validateValueForKey(Object value, String key)

    The effect is that when a client tries to write a property "foo", it will ultimately try to invoke;

            Object validateFoo(Object value) throws NSValidation.ValidationException

    ...before...

            setFoo(Object value)

    ...in order to either "repair" the value before assigning or to throw an exception. This is very handy from the user-interface perspective. For each attribute of an entity, this technique is also automatically used in the case of "validateForSave()" which means that aside from inter-attribute validation, per-attribute validations can be implemented just once.

    To provide this same behaviour to Cayenne, I would like to put forward the idea to implement something similar;

            validatedWriteProperty(ValidationResult vr, String propName, Object value)
            validatedWriteNestedProperty(ValidationResult vr, String propName, Object value)

    This would use (cached) reflection to look for a "validate" method and fire that before writing the property. For each attribute of a DataObject's entity, these methods would be fired from;

            void validateForSave(ValidationResult validationResult)

    Does this make sense in the context of Cayenne?

    Regards;

    ___
    Andrew Lindesay
    www.lindesay.co.nz



    This archive was generated by hypermail 2.0.0 : Tue Mar 09 2010 - 22:43:40 EST