Package org.apache.commons.beanutils
Class BeanPropertyValueChangeClosure
- java.lang.Object
-
- org.apache.commons.beanutils.BeanPropertyValueChangeClosure
-
- All Implemented Interfaces:
org.apache.commons.collections.Closure
public class BeanPropertyValueChangeClosure extends java.lang.Object implements org.apache.commons.collections.ClosureClosurethat sets a property.An implementation of
org.apache.commons.collections.Closurethat updates a specified property on the object provided with a specified value. TheBeanPropertyValueChangeClosureconstructor takes two parameters which determine what property will be updated and with what value.-
public BeanPropertyValueChangeClosure(String propertyName, Object propertyValue) -
Will create a
Closurethat will update an object by setting the property specified bypropertyNameto the value specified bypropertyValue.
Note: Property names can be a simple, nested, indexed, or mapped property as defined by
org.apache.commons.beanutils.PropertyUtils. If any object in the property path specified bypropertyNameisnullthen the outcome is based on the value of theignoreNullattribute.A typical usage might look like:
// create the closure BeanPropertyValueChangeClosure closure = new BeanPropertyValueChangeClosure( "activeEmployee", Boolean.TRUE ); // update the Collection CollectionUtils.forAllDo( peopleCollection, closure );This would take a
Collectionof person objects and update theactiveEmployeeproperty of each object in theCollectiontotrue. Assuming...-
The top level object in the
peopleCollectionis an object which represents a person. -
The person object has a
setActiveEmployee( boolean )method which updates the value for the object'sactiveEmployeeproperty.
- See Also:
PropertyUtils,Closure
-
-
Field Summary
Fields Modifier and Type Field Description private booleanignoreNullDetermines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.private org.apache.commons.logging.LoglogFor logging.private java.lang.StringpropertyNameThe name of the property which will be updated when thisClosureexecutes.private java.lang.ObjectpropertyValueThe value that the property specified bypropertyNamewill be updated to when thisClosureexecutes.
-
Constructor Summary
Constructors Constructor Description BeanPropertyValueChangeClosure(java.lang.String propertyName, java.lang.Object propertyValue)Constructor which takes the name of the property to be changed, the new value to set the property to, and assumesignoreNullto befalse.BeanPropertyValueChangeClosure(java.lang.String propertyName, java.lang.Object propertyValue, boolean ignoreNull)Constructor which takes the name of the property to be changed, the new value to set the property to and a boolean which determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidexecute(java.lang.Object object)Updates the target object provided using the property update criteria provided when thisBeanPropertyValueChangeClosurewas constructed.java.lang.StringgetPropertyName()Returns the name of the property which will be updated when thisClosureexecutes.java.lang.ObjectgetPropertyValue()Returns the value that the property specified bypropertyNamewill be updated to when thisClosureexecutes.booleanisIgnoreNull()Returns the flag that determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.
-
-
-
Field Detail
-
log
private final org.apache.commons.logging.Log log
For logging.
-
propertyName
private final java.lang.String propertyName
The name of the property which will be updated when thisClosureexecutes.
-
propertyValue
private final java.lang.Object propertyValue
The value that the property specified bypropertyNamewill be updated to when thisClosureexecutes.
-
ignoreNull
private final boolean ignoreNull
Determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not. If set totruethen if any objects in the property path leading up to the target property evaluate tonullthen theIllegalArgumentExceptionthrow byPropertyUtilswill be logged but not rethrown. If set tofalsethen if any objects in the property path leading up to the target property evaluate tonullthen theIllegalArgumentExceptionthrow byPropertyUtilswill be logged and rethrown.
-
-
Constructor Detail
-
BeanPropertyValueChangeClosure
public BeanPropertyValueChangeClosure(java.lang.String propertyName, java.lang.Object propertyValue)Constructor which takes the name of the property to be changed, the new value to set the property to, and assumesignoreNullto befalse.- Parameters:
propertyName- The name of the property that will be updated with the value specified bypropertyValue.propertyValue- The value thatpropertyNamewill be set to on the target object.- Throws:
java.lang.IllegalArgumentException- If the propertyName provided is null or empty.
-
BeanPropertyValueChangeClosure
public BeanPropertyValueChangeClosure(java.lang.String propertyName, java.lang.Object propertyValue, boolean ignoreNull)Constructor which takes the name of the property to be changed, the new value to set the property to and a boolean which determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.- Parameters:
propertyName- The name of the property that will be updated with the value specified bypropertyValue.propertyValue- The value thatpropertyNamewill be set to on the target object.ignoreNull- Determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.- Throws:
java.lang.IllegalArgumentException- If the propertyName provided is null or empty.
-
-
Method Detail
-
execute
public void execute(java.lang.Object object)
Updates the target object provided using the property update criteria provided when thisBeanPropertyValueChangeClosurewas constructed. If any object in the property path leading up to the target property isnullthen the outcome will be based on the value of theignoreNullattribute. By default,ignoreNullisfalseand would result in anIllegalArgumentExceptionif an object in the property path leading up to the target property isnull.- Specified by:
executein interfaceorg.apache.commons.collections.Closure- Parameters:
object- The object to be updated.- Throws:
java.lang.IllegalArgumentException- If an IllegalAccessException, InvocationTargetException, or NoSuchMethodException is thrown when trying to access the property specified on the object provided. Or if an object in the property path provided isnullandignoreNullis set tofalse.
-
getPropertyName
public java.lang.String getPropertyName()
Returns the name of the property which will be updated when thisClosureexecutes.- Returns:
- The name of the property which will be updated when this
Closureexecutes.
-
getPropertyValue
public java.lang.Object getPropertyValue()
Returns the value that the property specified bypropertyNamewill be updated to when thisClosureexecutes.- Returns:
- The value that the property specified by
propertyNamewill be updated to when thisClosureexecutes.
-
isIgnoreNull
public boolean isIgnoreNull()
Returns the flag that determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not. If set totruethen if any objects in the property path leading up to the target property evaluate tonullthen theIllegalArgumentExceptionthrow byPropertyUtilswill be logged but not rethrown. If set tofalsethen if any objects in the property path leading up to the target property evaluate tonullthen theIllegalArgumentExceptionthrow byPropertyUtilswill be logged and rethrown.- Returns:
- The flag that determines whether
nullobjects in the property path will genenerate anIllegalArgumentExceptionor not.
-
-