From: Juergen H. <jho...@us...> - 2006-04-21 00:14:24
|
Update of /cvsroot/springframework/spring/src/org/springframework/beans/factory/support In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19629/src/org/springframework/beans/factory/support Modified Files: Tag: mbranch-1-2 AbstractBeanFactory.java DefaultListableBeanFactory.java Log Message: backported fixes and enhancements from 2.0 M4 (HEAD) Index: AbstractBeanFactory.java =================================================================== RCS file: /cvsroot/springframework/spring/src/org/springframework/beans/factory/support/AbstractBeanFactory.java,v retrieving revision 1.103.2.7 retrieving revision 1.103.2.8 diff -C2 -d -r1.103.2.7 -r1.103.2.8 *** AbstractBeanFactory.java 23 Feb 2006 22:55:02 -0000 1.103.2.7 --- AbstractBeanFactory.java 21 Apr 2006 00:13:48 -0000 1.103.2.8 *************** *** 262,272 **** public boolean containsBean(String name) { ! String beanName = transformedBeanName(name); ! synchronized (this.singletonCache) { ! if (this.singletonCache.containsKey(beanName)) { ! return true; ! } ! } ! if (containsBeanDefinition(beanName)) { return true; } --- 262,266 ---- public boolean containsBean(String name) { ! if (containsLocalBean(name)) { return true; } *************** *** 561,571 **** logger.info("Destroying singletons in factory {" + this + "}"); } - synchronized (this.disposableBeans) { - String[] disposableBeanName = StringUtils.toStringArray(this.disposableBeans.keySet()); - for (int i = 0; i < disposableBeanName.length; i++) { - destroyDisposableBean(disposableBeanName[i]); - } - } synchronized (this.singletonCache) { this.singletonCache.clear(); } --- 555,565 ---- logger.info("Destroying singletons in factory {" + this + "}"); } synchronized (this.singletonCache) { + synchronized (this.disposableBeans) { + String[] disposableBeanNames = StringUtils.toStringArray(this.disposableBeans.keySet()); + for (int i = 0; i < disposableBeanNames.length; i++) { + destroyDisposableBean(disposableBeanNames[i]); + } + } this.singletonCache.clear(); } *************** *** 854,877 **** public boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException { String beanName = transformedBeanName(name); - Object beanInstance = null; synchronized (this.singletonCache) { ! beanInstance = this.singletonCache.get(beanName); } ! if (beanInstance != null) { ! return (beanInstance instanceof FactoryBean); } ! else { ! // No singleton instance found -> check bean definition. ! if (!containsBeanDefinition(beanName) && getParentBeanFactory() instanceof AbstractBeanFactory) { ! // No bean definition found in this factory -> delegate to parent. ! return ((AbstractBeanFactory) getParentBeanFactory()).isFactoryBean(name); ! } ! ! RootBeanDefinition bd = getMergedBeanDefinition(beanName, false); ! return (bd.hasBeanClass() && FactoryBean.class.equals(bd.getBeanClass())); ! } } --- 848,867 ---- public boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException { String beanName = transformedBeanName(name); synchronized (this.singletonCache) { ! Object beanInstance = this.singletonCache.get(beanName); ! if (beanInstance != null) { ! return (beanInstance instanceof FactoryBean); ! } } ! // No singleton instance found -> check bean definition. ! if (!containsBeanDefinition(beanName) && getParentBeanFactory() instanceof AbstractBeanFactory) { ! // No bean definition found in this factory -> delegate to parent. ! return ((AbstractBeanFactory) getParentBeanFactory()).isFactoryBean(name); } ! RootBeanDefinition bd = getMergedBeanDefinition(beanName, false); ! return (bd.hasBeanClass() && FactoryBean.class.equals(bd.getBeanClass())); } *************** *** 1011,1023 **** */ protected void destroyBean(String beanName, Object bean) { - if (logger.isDebugEnabled()) { - logger.debug("Retrieving dependent beans for bean '" + beanName + "'"); - } - Set dependencies = null; synchronized (this.dependentBeanMap) { dependencies = (Set) this.dependentBeanMap.remove(beanName); } if (dependencies != null) { for (Iterator it = dependencies.iterator(); it.hasNext();) { String dependentBeanName = (String) it.next(); --- 1001,1013 ---- */ protected void destroyBean(String beanName, Object bean) { Set dependencies = null; synchronized (this.dependentBeanMap) { dependencies = (Set) this.dependentBeanMap.remove(beanName); } + if (dependencies != null) { + if (logger.isDebugEnabled()) { + logger.debug("Retrieved dependent beans for bean '" + beanName + "': " + dependencies); + } for (Iterator it = dependencies.iterator(); it.hasNext();) { String dependentBeanName = (String) it.next(); Index: DefaultListableBeanFactory.java =================================================================== RCS file: /cvsroot/springframework/spring/src/org/springframework/beans/factory/support/DefaultListableBeanFactory.java,v retrieving revision 1.53.2.2 retrieving revision 1.53.2.3 diff -C2 -d -r1.53.2.2 -r1.53.2.3 *** DefaultListableBeanFactory.java 21 Feb 2006 18:21:59 -0000 1.53.2.2 --- DefaultListableBeanFactory.java 21 Apr 2006 00:13:48 -0000 1.53.2.3 *************** *** 271,275 **** for (Iterator it = this.beanDefinitionNames.iterator(); it.hasNext();) { String beanName = (String) it.next(); ! if (containsBeanDefinition(beanName)) { RootBeanDefinition bd = getMergedBeanDefinition(beanName, false); if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) { --- 271,275 ---- for (Iterator it = this.beanDefinitionNames.iterator(); it.hasNext();) { String beanName = (String) it.next(); ! if (!containsSingleton(beanName) && containsBeanDefinition(beanName)) { RootBeanDefinition bd = getMergedBeanDefinition(beanName, false); if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) { |