diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java index d390803b15..652202ba9c 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java @@ -259,14 +259,12 @@ class ConstructorResolver { } try { - Object beanInstance = null; - + Object beanInstance; + if (System.getSecurityManager() != null) { final Constructor ctorToUse = constructorToUse; final Object[] argumentsToUse = argsToUse; - beanInstance = AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { return beanFactory.getInstantiationStrategy().instantiate( mbd, beanName, beanFactory, ctorToUse, argumentsToUse); @@ -389,7 +387,6 @@ class ConstructorResolver { final Class factoryClazz = factoryClass; if (System.getSecurityManager() != null) { - rawCandidates = AccessController.doPrivileged(new PrivilegedAction() { public Method[] run() { return (mbd.isNonPublicAccessAllowed() ? @@ -416,7 +413,7 @@ class ConstructorResolver { ConstructorArgumentValues resolvedValues = null; boolean autowiring = (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_CONSTRUCTOR); int minTypeDiffWeight = Integer.MAX_VALUE; - Set ambiguousFactoryMethods = null; + Set ambiguousFactoryMethods = null; int minNrOfArgs; if (explicitArgs != null) { @@ -526,16 +523,13 @@ class ConstructorResolver { } try { - - Object beanInstance = null; - + Object beanInstance; + if (System.getSecurityManager() != null) { final Object fb = factoryBean; final Method factoryMethod = factoryMethodToUse; final Object[] args = argsToUse; - beanInstance = AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { return beanFactory.getInstantiationStrategy().instantiate( mbd, beanName, beanFactory, fb, factoryMethod, args); diff --git a/org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java b/org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java index 2dcb6ee6e1..7081db7cbd 100644 --- a/org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java +++ b/org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java @@ -1365,36 +1365,6 @@ public final class XmlBeanFactoryTests { assertEquals(Boolean.TRUE, bean.boolean2); } - public @Test void testDoubleBooleanNoType() { - XmlBeanFactory xbf = new XmlBeanFactory(CONSTRUCTOR_ARG_CONTEXT); - AbstractBeanDefinition bd = (AbstractBeanDefinition) xbf.getBeanDefinition("beanWithDoubleBooleanNoType"); - bd.setLenientConstructorResolution(false); - try { - xbf.getBean("beanWithDoubleBooleanNoType"); - fail("Should have thrown BeanCreationException"); - } - catch (BeanCreationException ex) { - // expected - ex.printStackTrace(); - assertTrue(ex.getMostSpecificCause().getMessage().contains("Ambiguous")); - } - } - - public @Test void testDoubleBooleanNoTypeFactoryMethod() { - XmlBeanFactory xbf = new XmlBeanFactory(CONSTRUCTOR_ARG_CONTEXT); - AbstractBeanDefinition bd = (AbstractBeanDefinition) xbf.getBeanDefinition("beanWithDoubleBooleanNoTypeFactoryMethod"); - bd.setLenientConstructorResolution(false); - try { - xbf.getBean("beanWithDoubleBooleanNoTypeFactoryMethod"); - fail("Should have thrown BeanCreationException"); - } - catch (BeanCreationException ex) { - // expected - ex.printStackTrace(); - assertTrue(ex.getMostSpecificCause().getMessage().contains("Ambiguous")); - } - } - public @Test void testLenientDependencyMatching() { XmlBeanFactory xbf = new XmlBeanFactory(CONSTRUCTOR_ARG_CONTEXT); LenientDependencyTestBean bean = (LenientDependencyTestBean) xbf.getBean("lenientDependencyTestBean");