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 Object
implements org.apache.commons.collections.Closure
Closure that sets a property.
An implementation of org.apache.commons.collections.Closure that updates
a specified property on the object provided with a specified value.
The BeanPropertyValueChangeClosure constructor 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 by propertyName is null then the outcome is based on the
value of the ignoreNull attribute.
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 Collection of person objects and update the
activeEmployee property of each object in the Collection to
true. 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:
-
Constructor Summary
ConstructorsConstructorDescriptionBeanPropertyValueChangeClosure(String propertyName, 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(String propertyName, 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
Modifier and TypeMethodDescriptionvoidUpdates the target object provided using the property update criteria provided when thisBeanPropertyValueChangeClosurewas constructed.Returns the name of the property which will be updated when thisClosureexecutes.Returns the value that the property specified bypropertyNamewill be updated to when thisClosureexecutes.booleanReturns the flag that determines whethernullobjects in the property path will genenerate anIllegalArgumentExceptionor not.
-
Constructor Details
-
BeanPropertyValueChangeClosure
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:
IllegalArgumentException- If the propertyName provided is null or empty.
-
BeanPropertyValueChangeClosure
public BeanPropertyValueChangeClosure(String propertyName, 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:
IllegalArgumentException- If the propertyName provided is null or empty.
-
-
Method Details
-
execute
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:
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
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
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
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.
-