org.springframework.beans

Class AbstractNestablePropertyAccessor

    • Constructor Detail

      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor()
        Create a new empty accessor. Wrapped instance needs to be set afterwards. Registers default editors.
        See Also:
        setWrappedInstance(java.lang.Object)
      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor(boolean registerDefaultEditors)
        Create a new empty accessor. Wrapped instance needs to be set afterwards.
        Parameters:
        registerDefaultEditors - whether to register default editors (can be suppressed if the accessor won't need any type conversion)
        See Also:
        setWrappedInstance(java.lang.Object)
      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor(java.lang.Object object)
        Create a new accessor for the given object.
        Parameters:
        object - object wrapped by this accessor
      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor(java.lang.Class<?> clazz)
        Create a new accessor, wrapping a new instance of the specified class.
        Parameters:
        clazz - class to instantiate and wrap
      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor(java.lang.Object object,
                                                   java.lang.String nestedPath,
                                                   java.lang.Object rootObject)
        Create a new accessor for the given object, registering a nested path that the object is in.
        Parameters:
        object - object wrapped by this accessor
        nestedPath - the nested path of the object
        rootObject - the root object at the top of the path
      • AbstractNestablePropertyAccessor

        protected AbstractNestablePropertyAccessor(java.lang.Object object,
                                                   java.lang.String nestedPath,
                                                   AbstractNestablePropertyAccessor parent)
        Create a new accessor for the given object, registering a nested path that the object is in.
        Parameters:
        object - object wrapped by this accessor
        nestedPath - the nested path of the object
        parent - the containing accessor (must not be null)
    • Method Detail

      • setAutoGrowCollectionLimit

        public void setAutoGrowCollectionLimit(int autoGrowCollectionLimit)
        Specify a limit for array and collection auto-growing.

        Default is unlimited on a plain accessor.

      • getAutoGrowCollectionLimit

        public int getAutoGrowCollectionLimit()
        Return the limit for array and collection auto-growing.
      • setWrappedInstance

        public void setWrappedInstance(java.lang.Object object)
        Switch the target object, replacing the cached introspection results only if the class of the new object is different to that of the replaced object.
        Parameters:
        object - the new target object
      • setWrappedInstance

        public void setWrappedInstance(java.lang.Object object,
                                       @Nullable
                                       java.lang.String nestedPath,
                                       @Nullable
                                       java.lang.Object rootObject)
        Switch the target object, replacing the cached introspection results only if the class of the new object is different to that of the replaced object.
        Parameters:
        object - the new target object
        nestedPath - the nested path of the object
        rootObject - the root object at the top of the path
      • getWrappedInstance

        public final java.lang.Object getWrappedInstance()
      • getWrappedClass

        public final java.lang.Class<?> getWrappedClass()
      • getNestedPath

        public final java.lang.String getNestedPath()
        Return the nested path of the object wrapped by this accessor.
      • getRootInstance

        public final java.lang.Object getRootInstance()
        Return the root object at the top of the path of this accessor.
        See Also:
        getNestedPath()
      • getRootClass

        public final java.lang.Class<?> getRootClass()
        Return the class of the root object at the top of the path of this accessor.
        See Also:
        getNestedPath()
      • getPropertyTypeDescriptor

        @Nullable
        public TypeDescriptor getPropertyTypeDescriptor(java.lang.String propertyName)
                                                           throws BeansException
        Description copied from interface: PropertyAccessor
        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
      • isReadableProperty

        public boolean isReadableProperty(java.lang.String propertyName)
        Description copied from interface: PropertyAccessor
        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

        public boolean isWritableProperty(java.lang.String propertyName)
        Description copied from interface: PropertyAccessor
        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
      • newNestedPropertyAccessor

        protected abstract AbstractNestablePropertyAccessor newNestedPropertyAccessor(java.lang.Object object,
                                                                                      java.lang.String nestedPath)
        Create a new nested property accessor instance. Can be overridden in subclasses to create a PropertyAccessor subclass.
        Parameters:
        object - object wrapped by this PropertyAccessor
        nestedPath - the nested path of the object
        Returns:
        the nested PropertyAccessor instance
      • getFinalPath

        protected java.lang.String getFinalPath(AbstractNestablePropertyAccessor pa,
                                                java.lang.String nestedPath)
        Get the last component of the path. Also works if not nested.
        Parameters:
        pa - property accessor to work on
        nestedPath - property path we know is nested
        Returns:
        last component of the path (the property on the target bean)
      • getPropertyAccessorForPropertyPath

        protected AbstractNestablePropertyAccessor getPropertyAccessorForPropertyPath(java.lang.String propertyPath)
        Recursively navigate to return a property accessor for the nested property path.
        Parameters:
        propertyPath - property path, which may be nested
        Returns:
        a property accessor for the target bean
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object