Browse Source
Prior to this change, CachedIntrospectionResults delegated to ExtendedBeanInfo by default in order to inspect JavaBean PropertyDescriptor information for bean classes. Originally introduced with SPR-8079, ExtendedBeanInfo was designed to go beyond the capabilities of the default JavaBeans Introspector in order to support non-void returning setter methods, principally to support use of builder-style APIs within Spring XML. This is a complex affair, and the non-trivial logic in ExtendedBeanInfo has led to various bugs including regressions for bean classes that do not declare non-void returning setters. Many of these issues were fixed when overhauling non-void JavaBean write method support in SPR-10029, however it appears that some extremely subtle issues may still remain. ExtendedBeanInfo was taken out of use completely in the 3.2.x line with SPR-9677 and the new BeanInfoFactory mechanism. This support was not backported to 3.1.x, however, in the interest of stability. This commit, then, inlines the conditional logic introduced by BeanInfoFactory directly into CachedIntrospectionResults. The net effect is that ExtendedBeanInfo is out of the code path entirely except for bean classes that actually contain 'candidate' methods, i.e. non-void and/or static write methods. This commit also includes the changes made in SPR-10115. Issue: SPR-9723, SPR-10029, SPR-9677, SPR-80793.1.x
4 changed files with 64 additions and 12 deletions
Loading…
Reference in new issue