Class AbstractBeanExtender

  • All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanPostProcessor
    Direct Known Subclasses:
    CollectionBeanExtender, MapBeanExtender, PropertyBeanExtender

    public abstract class AbstractBeanExtender
    extends java.lang.Object
    implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.BeanNameAware
    Abstract bean post processor that should be used to change other bean that is defined in any spring context in this bean's hierarchy (incl. parent context).
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractBeanExtender​(java.lang.String extendedBeanName)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected abstract void checkProperty​(java.lang.Object target)
      Method should check if value of property to be modified is proper (i.e.
      protected void checkPropertyType​(java.lang.Object target, java.lang.Class<?> type)  
      protected org.springframework.beans.factory.config.ConfigurableListableBeanFactory getBeanFactory()  
      protected java.lang.String getBeanName()  
      java.lang.String getExtendedBeanName()  
      protected java.lang.String getGetter()  
      protected java.lang.String getInitializationExceptionMessage​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.lang.String getMapper()  
      protected java.lang.String getProperty()  
      protected ExpressionResolverFactory getResolverFactory()  
      protected java.lang.String getSetter()  
      void initialize()  
      protected java.lang.Object mapProperty​(java.lang.Object bean, java.lang.Object value)  
      protected java.lang.Object modifyBean​(java.lang.Object bean, java.lang.String beanName)  
      protected abstract java.lang.Object modifyProperty​(java.lang.Object target)
      Changes a provided value according to current modification bean configuration.
      java.lang.Object postProcessAfterInitialization​(java.lang.Object bean, java.lang.String beanName)  
      java.lang.Object postProcessBeforeInitialization​(java.lang.Object bean, java.lang.String beanName)  
      protected boolean qualifiesForModification​(java.lang.Object bean, java.lang.String beanName)  
      protected boolean qualifiesForModification​(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.lang.Object bean, java.lang.String beanName)  
      protected java.util.Optional<?> readBeanProperty​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.util.Optional<?> readBeanPropertyWithGetter​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.util.Optional<?> readBeanPropertyWithReflection​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.util.Optional<?> readBeanSimpleProperty​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.lang.Object readOriginalValue​(java.lang.Object bean, java.lang.String beanName)  
      protected java.lang.Object readProperty​(java.lang.Object bean, java.lang.String propertyName)  
      protected java.lang.Object resolveGetter​(java.lang.Object bean)  
      protected java.lang.Object resolveGetter​(java.lang.Object bean, java.lang.String getter)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 1905, use the resolveGetter(Object) instead.
      protected java.lang.Object resolveSetter​(java.lang.Object bean, java.lang.String getter, java.lang.Object value)  
      void setBeanFactory​(org.springframework.beans.factory.BeanFactory beanFactory)  
      void setBeanName​(java.lang.String beanName)  
      void setGetter​(java.lang.String getter)  
      void setMapper​(java.lang.String mapper)  
      void setProperty​(java.lang.String property)  
      void setResolverFactory​(ExpressionResolverFactory resolverFactory)  
      void setSetter​(java.lang.String setter)  
      protected boolean writeBeanProperty​(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)  
      protected boolean writeBeanPropertyWithReflection​(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)  
      protected boolean writeBeanPropertyWithSetter​(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)  
      protected boolean writeBeanSimpleProperty​(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)  
      protected java.lang.Object writeNewValue​(java.lang.Object bean, java.lang.String beanName, java.lang.Object value)  
      protected void writeProperty​(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AbstractBeanExtender

        protected AbstractBeanExtender​(java.lang.String extendedBeanName)
    • Method Detail

      • initialize

        @PostConstruct
        public void initialize()
      • postProcessBeforeInitialization

        public java.lang.Object postProcessBeforeInitialization​(java.lang.Object bean,
                                                                java.lang.String beanName)
        Specified by:
        postProcessBeforeInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
      • postProcessAfterInitialization

        public java.lang.Object postProcessAfterInitialization​(java.lang.Object bean,
                                                               java.lang.String beanName)
        Specified by:
        postProcessAfterInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
      • modifyBean

        protected java.lang.Object modifyBean​(java.lang.Object bean,
                                              java.lang.String beanName)
      • readOriginalValue

        protected java.lang.Object readOriginalValue​(java.lang.Object bean,
                                                     java.lang.String beanName)
      • resolveGetter

        @Deprecated(since="1905",
                    forRemoval=true)
        protected java.lang.Object resolveGetter​(java.lang.Object bean,
                                                 java.lang.String getter)
        Deprecated, for removal: This API element is subject to removal in a future version.
        since 1905, use the resolveGetter(Object) instead.
      • resolveGetter

        protected java.lang.Object resolveGetter​(java.lang.Object bean)
      • readProperty

        protected java.lang.Object readProperty​(java.lang.Object bean,
                                                java.lang.String propertyName)
      • readBeanProperty

        protected java.util.Optional<?> readBeanProperty​(java.lang.Object bean,
                                                         java.lang.String propertyName)
      • readBeanSimpleProperty

        protected java.util.Optional<?> readBeanSimpleProperty​(java.lang.Object bean,
                                                               java.lang.String propertyName)
      • readBeanPropertyWithGetter

        protected java.util.Optional<?> readBeanPropertyWithGetter​(java.lang.Object bean,
                                                                   java.lang.String propertyName)
      • readBeanPropertyWithReflection

        protected java.util.Optional<?> readBeanPropertyWithReflection​(java.lang.Object bean,
                                                                       java.lang.String propertyName)
      • mapProperty

        protected java.lang.Object mapProperty​(java.lang.Object bean,
                                               java.lang.Object value)
      • writeNewValue

        protected java.lang.Object writeNewValue​(java.lang.Object bean,
                                                 java.lang.String beanName,
                                                 java.lang.Object value)
      • resolveSetter

        protected java.lang.Object resolveSetter​(java.lang.Object bean,
                                                 java.lang.String getter,
                                                 java.lang.Object value)
      • writeProperty

        protected void writeProperty​(java.lang.Object bean,
                                     java.lang.String propertyName,
                                     java.lang.Object propertyValue)
      • writeBeanProperty

        protected boolean writeBeanProperty​(java.lang.Object bean,
                                            java.lang.String propertyName,
                                            java.lang.Object propertyValue)
      • writeBeanSimpleProperty

        protected boolean writeBeanSimpleProperty​(java.lang.Object bean,
                                                  java.lang.String propertyName,
                                                  java.lang.Object propertyValue)
      • writeBeanPropertyWithSetter

        protected boolean writeBeanPropertyWithSetter​(java.lang.Object bean,
                                                      java.lang.String propertyName,
                                                      java.lang.Object propertyValue)
      • writeBeanPropertyWithReflection

        protected boolean writeBeanPropertyWithReflection​(java.lang.Object bean,
                                                          java.lang.String propertyName,
                                                          java.lang.Object propertyValue)
      • getInitializationExceptionMessage

        protected java.lang.String getInitializationExceptionMessage​(java.lang.Object bean,
                                                                     java.lang.String propertyName)
      • checkPropertyType

        protected void checkPropertyType​(java.lang.Object target,
                                         java.lang.Class<?> type)
      • checkProperty

        protected abstract void checkProperty​(java.lang.Object target)
        Method should check if value of property to be modified is proper (i.e. if bean is to modify a list, then it should check if provided value is of type List)
        Parameters:
        target - value that will be modified
        Throws:
        org.springframework.beans.factory.BeanInitializationException - when provided value is compatible with this modification bean
      • modifyProperty

        protected abstract java.lang.Object modifyProperty​(java.lang.Object target)
        Changes a provided value according to current modification bean configuration.
        Parameters:
        target - value to be changed
        Returns:
        new value
        Throws:
        org.springframework.beans.factory.BeanInitializationException - when a value may not be changed
      • qualifiesForModification

        protected boolean qualifiesForModification​(java.lang.Object bean,
                                                   java.lang.String beanName)
      • qualifiesForModification

        protected boolean qualifiesForModification​(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory,
                                                   java.lang.Object bean,
                                                   java.lang.String beanName)
      • setBeanFactory

        public void setBeanFactory​(org.springframework.beans.factory.BeanFactory beanFactory)
        Specified by:
        setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
      • getBeanFactory

        protected org.springframework.beans.factory.config.ConfigurableListableBeanFactory getBeanFactory()
      • setBeanName

        public void setBeanName​(java.lang.String beanName)
        Specified by:
        setBeanName in interface org.springframework.beans.factory.BeanNameAware
      • getBeanName

        protected java.lang.String getBeanName()
      • getExtendedBeanName

        public java.lang.String getExtendedBeanName()
      • getProperty

        protected java.lang.String getProperty()
      • setProperty

        public void setProperty​(java.lang.String property)
      • getGetter

        protected java.lang.String getGetter()
      • setGetter

        public void setGetter​(java.lang.String getter)
      • getMapper

        protected java.lang.String getMapper()
      • setMapper

        public void setMapper​(java.lang.String mapper)
      • getSetter

        protected java.lang.String getSetter()
      • setSetter

        public void setSetter​(java.lang.String setter)