Interface PropertyAccessor

All Superinterfaces:
TargetedAccessor
All Known Subinterfaces:
CompilablePropertyAccessor
All Known Implementing Classes:
BeanExpressionContextAccessor, BeanFactoryAccessor, DataBindingPropertyAccessor, EnvironmentAccessor, MapAccessor, ReflectivePropertyAccessor

public interface PropertyAccessor extends TargetedAccessor
A property accessor is able to read from (and possibly write to) an object's properties.

This interface places no restrictions on what constitutes a property. Implementors are therefore free to access properties directly via fields, through getters, or in any other way they deem appropriate.

A property accessor can specify an array of target classes for which it should be called. See TargetedAccessor for details.

Since:
3.0
Author:
Andy Clement
See Also:
  • Method Details

    • canRead

      boolean canRead(EvaluationContext context, @Nullable Object target, String name) throws AccessException
      Called to determine if this property accessor is able to read a specified property on a specified target object.
      Parameters:
      context - the evaluation context in which the access is being attempted
      target - the target object upon which the property is being accessed
      name - the name of the property being accessed
      Returns:
      true if this property accessor is able to read the property
      Throws:
      AccessException - if there is any problem determining whether the property can be read
    • read

      TypedValue read(EvaluationContext context, @Nullable Object target, String name) throws AccessException
      Called to read a property from a specified target object.

      Should only succeed if canRead(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String) also returns true.

      Parameters:
      context - the evaluation context in which the access is being attempted
      target - the target object upon which the property is being accessed
      name - the name of the property being accessed
      Returns:
      a TypedValue object wrapping the property value read and a type descriptor for it
      Throws:
      AccessException - if there is any problem reading the property value
    • canWrite

      boolean canWrite(EvaluationContext context, @Nullable Object target, String name) throws AccessException
      Called to determine if this property accessor is able to write to a specified property on a specified target object.
      Parameters:
      context - the evaluation context in which the access is being attempted
      target - the target object upon which the property is being accessed
      name - the name of the property being accessed
      Returns:
      true if this property accessor is able to write to the property
      Throws:
      AccessException - if there is any problem determining whether the property can be written to
    • write

      void write(EvaluationContext context, @Nullable Object target, String name, @Nullable Object newValue) throws AccessException
      Called to write to a property on a specified target object.

      Should only succeed if canWrite(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String) also returns true.

      Parameters:
      context - the evaluation context in which the access is being attempted
      target - the target object upon which the property is being accessed
      name - the name of the property being accessed
      newValue - the new value for the property
      Throws:
      AccessException - if there is any problem writing to the property value