org.springframework.beans

Interface PropertyAccessor

    • Field Summary

      Fields 
      Modifier and Type Field and Description
      static java.lang.String NESTED_PROPERTY_SEPARATOR
      Path separator for nested properties.
      static char NESTED_PROPERTY_SEPARATOR_CHAR
      Path separator for nested properties.
      static java.lang.String PROPERTY_KEY_PREFIX
      Marker that indicates the start of a property key for an indexed or mapped property like "person.addresses[0]".
      static char PROPERTY_KEY_PREFIX_CHAR
      Marker that indicates the start of a property key for an indexed or mapped property like "person.addresses[0]".
      static java.lang.String PROPERTY_KEY_SUFFIX
      Marker that indicates the end of a property key for an indexed or mapped property like "person.addresses[0]".
      static char PROPERTY_KEY_SUFFIX_CHAR
      Marker that indicates the end of a property key for an indexed or mapped property like "person.addresses[0]".
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method and Description
      java.lang.Class<?> getPropertyType(java.lang.String propertyName)
      Determine the property type for the specified property, either checking the property descriptor or checking the value in case of an indexed or mapped element.
      TypeDescriptor getPropertyTypeDescriptor(java.lang.String propertyName)
      Return a type descriptor for the specified property: preferably from the read method, falling back to the write method.
      java.lang.Object getPropertyValue(java.lang.String propertyName)
      Get the current value of the specified property.
      boolean isReadableProperty(java.lang.String propertyName)
      Determine whether the specified property is readable.
      boolean isWritableProperty(java.lang.String propertyName)
      Determine whether the specified property is writable.
      void setPropertyValue(PropertyValue pv)
      Set the specified value as current property value.
      void setPropertyValue(java.lang.String propertyName, java.lang.Object value)
      Set the specified value as current property value.
      void setPropertyValues(java.util.Map<?,?> map)
      Perform a batch update from a Map.
      void setPropertyValues(PropertyValues pvs)
      The preferred way to perform a batch update.
      void setPropertyValues(PropertyValues pvs, boolean ignoreUnknown)
      Perform a batch update with more control over behavior.
      void setPropertyValues(PropertyValues pvs, boolean ignoreUnknown, boolean ignoreInvalid)
      Perform a batch update with full control over behavior.
    • Field Detail

      • NESTED_PROPERTY_SEPARATOR

        static final java.lang.String NESTED_PROPERTY_SEPARATOR
        Path separator for nested properties. Follows normal Java conventions: getFoo().getBar() would be "foo.bar".
        See Also:
        Constant Field Values
      • NESTED_PROPERTY_SEPARATOR_CHAR

        static final char NESTED_PROPERTY_SEPARATOR_CHAR
        Path separator for nested properties. Follows normal Java conventions: getFoo().getBar() would be "foo.bar".
        See Also:
        Constant Field Values
      • PROPERTY_KEY_PREFIX

        static final java.lang.String PROPERTY_KEY_PREFIX
        Marker that indicates the start of a property key for an indexed or mapped property like "person.addresses[0]".
        See Also:
        Constant Field Values
      • PROPERTY_KEY_PREFIX_CHAR

        static final char PROPERTY_KEY_PREFIX_CHAR
        Marker that indicates the start of a property key for an indexed or mapped property like "person.addresses[0]".
        See Also:
        Constant Field Values
      • PROPERTY_KEY_SUFFIX

        static final java.lang.String PROPERTY_KEY_SUFFIX
        Marker that indicates the end of a property key for an indexed or mapped property like "person.addresses[0]".
        See Also:
        Constant Field Values
      • PROPERTY_KEY_SUFFIX_CHAR

        static final char PROPERTY_KEY_SUFFIX_CHAR
        Marker that indicates the end of a property key for an indexed or mapped property like "person.addresses[0]".
        See Also:
        Constant Field Values
    • Method Detail

      • isReadableProperty

        boolean isReadableProperty(java.lang.String propertyName)
        Determine whether the specified property is readable.

        Returns false if the property doesn't exist.

        Parameters:
        propertyName - the property to check (may be a nested path and/or an indexed/mapped property)
        Returns:
        whether the property is readable
      • isWritableProperty

        boolean isWritableProperty(java.lang.String propertyName)
        Determine whether the specified property is writable.

        Returns false if the property doesn't exist.

        Parameters:
        propertyName - the property to check (may be a nested path and/or an indexed/mapped property)
        Returns:
        whether the property is writable
      • getPropertyType

        @Nullable
        java.lang.Class<?> getPropertyType(java.lang.String propertyName)
                                              throws BeansException
        Determine the property type for the specified property, either checking the property descriptor or checking the value in case of an indexed or mapped element.
        Parameters:
        propertyName - the property to check (may be a nested path and/or an indexed/mapped property)
        Returns:
        the property type for the particular property, or null if not determinable
        Throws:
        PropertyAccessException - if the property was valid but the accessor method failed
        BeansException
      • getPropertyTypeDescriptor

        @Nullable
        TypeDescriptor getPropertyTypeDescriptor(java.lang.String propertyName)
                                                    throws BeansException
        Return a type descriptor for the specified property: preferably from the read method, falling back to the write method.
        Parameters:
        propertyName - the property to check (may be a nested path and/or an indexed/mapped property)
        Returns:
        the property type for the particular property, or null if not determinable
        Throws:
        PropertyAccessException - if the property was valid but the accessor method failed
        BeansException
      • getPropertyValue

        @Nullable
        java.lang.Object getPropertyValue(java.lang.String propertyName)
                                             throws BeansException
        Get the current value of the specified property.
        Parameters:
        propertyName - the name of the property to get the value of (may be a nested path and/or an indexed/mapped property)
        Returns:
        the value of the property
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't readable
        PropertyAccessException - if the property was valid but the accessor method failed
        BeansException
      • setPropertyValue

        void setPropertyValue(java.lang.String propertyName,
                              @Nullable
                              java.lang.Object value)
                       throws BeansException
        Set the specified value as current property value.
        Parameters:
        propertyName - the name of the property to set the value of (may be a nested path and/or an indexed/mapped property)
        value - the new value
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't writable
        PropertyAccessException - if the property was valid but the accessor method failed or a type mismatch occurred
        BeansException
      • setPropertyValues

        void setPropertyValues(java.util.Map<?,?> map)
                        throws BeansException
        Perform a batch update from a Map.

        Bulk updates from PropertyValues are more powerful: This method is provided for convenience. Behavior will be identical to that of the setPropertyValues(PropertyValues) method.

        Parameters:
        map - a Map to take properties from. Contains property value objects, keyed by property name
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't writable
        PropertyBatchUpdateException - if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.
        BeansException
      • setPropertyValues

        void setPropertyValues(PropertyValues pvs)
                        throws BeansException
        The preferred way to perform a batch update.

        Note that performing a batch update differs from performing a single update, in that an implementation of this class will continue to update properties if a recoverable error (such as a type mismatch, but not an invalid field name or the like) is encountered, throwing a PropertyBatchUpdateException containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.

        Does not allow unknown fields or invalid fields.

        Parameters:
        pvs - a PropertyValues to set on the target object
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't writable
        PropertyBatchUpdateException - if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.
        BeansException
        See Also:
        setPropertyValues(PropertyValues, boolean, boolean)
      • setPropertyValues

        void setPropertyValues(PropertyValues pvs,
                               boolean ignoreUnknown)
                        throws BeansException
        Perform a batch update with more control over behavior.

        Note that performing a batch update differs from performing a single update, in that an implementation of this class will continue to update properties if a recoverable error (such as a type mismatch, but not an invalid field name or the like) is encountered, throwing a PropertyBatchUpdateException containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.

        Parameters:
        pvs - a PropertyValues to set on the target object
        ignoreUnknown - should we ignore unknown properties (not found in the bean)
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't writable
        PropertyBatchUpdateException - if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.
        BeansException
        See Also:
        setPropertyValues(PropertyValues, boolean, boolean)
      • setPropertyValues

        void setPropertyValues(PropertyValues pvs,
                               boolean ignoreUnknown,
                               boolean ignoreInvalid)
                        throws BeansException
        Perform a batch update with full control over behavior.

        Note that performing a batch update differs from performing a single update, in that an implementation of this class will continue to update properties if a recoverable error (such as a type mismatch, but not an invalid field name or the like) is encountered, throwing a PropertyBatchUpdateException containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.

        Parameters:
        pvs - a PropertyValues to set on the target object
        ignoreUnknown - should we ignore unknown properties (not found in the bean)
        ignoreInvalid - should we ignore invalid properties (found but not accessible)
        Throws:
        InvalidPropertyException - if there is no such property or if the property isn't writable
        PropertyBatchUpdateException - if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.
        BeansException