cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Lindesay <...@lindesay.co.nz>
Subject Automated Validation of Attributes
Date Wed, 10 Mar 2010 03:42:58 GMT
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


Mime
View raw message