cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Lindesay <>
Subject Automated Validation of Attributes
Date Wed, 10 Mar 2010 03:42:58 GMT

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


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

	Object validateFoo(Object value) throws NSValidation.ValidationException


	setFoo(Object value) 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?


Andrew Lindesay

View raw message