@Test // SPR-6268 public void testProxyTargetClassNotAllowedIfNotGroovy() throws Exception { try { new ClassPathXmlApplicationContext("groovy-with-xsd-proxy-target-class.xml", getClass()); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("Cannot use proxyTargetClass=true")); } }
if (logger.isTraceEnabled()) { logger.trace("Ignoring match to currently created bean '" + exBeanName + "': " + ex.getMessage());
logger.debug("PropertyEditorRegistrar [" + registrar.getClass().getName() + "] failed because it tried to obtain currently created bean '" + ex.getBeanName() + "': " + ex.getMessage());
if (logger.isTraceEnabled()) { logger.trace("Skipping advisor '" + name + "' with dependency on currently created bean: " + ex.getMessage());
@Test public void testCircularDependencyWithApplicationContext() { try { new AnnotationConfigApplicationContext(A.class, AStrich.class); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("Circular reference")); } }
@Test public void testGenericListPropertyWithInvalidElementType() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); RootBeanDefinition rbd = new RootBeanDefinition(GenericIntegerBean.class); List<Integer> input = new ArrayList<>(); input.add(1); rbd.getPropertyValues().add("testBeanList", input); bf.registerBeanDefinition("genericBean", rbd); try { bf.getBean("genericBean"); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("genericBean") && ex.getMessage().contains("testBeanList[0]")); assertTrue(ex.getMessage().contains(TestBean.class.getName()) && ex.getMessage().contains("Integer")); } }
@Test public void configurationClassesWithInvalidOverridingForProgrammaticCall() { beanFactory.registerBeanDefinition("config1", new RootBeanDefinition(InvalidOverridingSingletonBeanConfig.class)); beanFactory.registerBeanDefinition("config2", new RootBeanDefinition(OverridingSingletonBeanConfig.class)); beanFactory.registerBeanDefinition("config3", new RootBeanDefinition(SingletonBeanConfig.class)); ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor(); pp.postProcessBeanFactory(beanFactory); try { beanFactory.getBean(Bar.class); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("OverridingSingletonBeanConfig.foo")); assertTrue(ex.getMessage().contains(ExtendedFoo.class.getName())); assertTrue(ex.getMessage().contains(Foo.class.getName())); assertTrue(ex.getMessage().contains("InvalidOverridingSingletonBeanConfig")); } }
@Test public void testDependsOnCycle() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class); bd1.setDependsOn("tb2"); lbf.registerBeanDefinition("tb1", bd1); RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class); bd2.setDependsOn("tb1"); lbf.registerBeanDefinition("tb2", bd2); try { lbf.preInstantiateSingletons(); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { // expected assertTrue(ex.getMessage().contains("Circular")); assertTrue(ex.getMessage().contains("'tb2'")); assertTrue(ex.getMessage().contains("'tb1'")); } }
@Test public void testNonExistingFactoryMethod() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); try { xbf.getBean("invalidPrototype"); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("nonExisting(TestBean)")); } }
@Test public void multipleCachingConfigurers() { try { load(MultiCacheManagerConfigurer.class, EnableCachingConfig.class); } catch (BeanCreationException ex) { Throwable root = ex.getRootCause(); assertTrue(root instanceof IllegalStateException); assertTrue(ex.getMessage().contains("implementations of CachingConfigurer")); } }
private void assertExceptionMessageForMisconfiguredFactoryMethod(BeanDefinition bd, String expectedMessage) { DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); factory.registerBeanDefinition("foo", bd); try { factory.preInstantiateSingletons(); fail("should have failed with BeanCreationException due to incorrectly invoked factory method"); } catch (BeanCreationException ex) { assertThat(ex.getMessage(), equalTo(expectedMessage)); } }
@Test public void testPropertyInjection() throws Exception { try { beanFactory.getBean("property-injection"); fail("expected security exception"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("security")); } beanFactory.getBean("working-property-injection"); }
@Test public void testFailsOnInnerBean() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE); reader.loadBeanDefinitions(REFTYPES_CONTEXT); try { xbf.getBean("failsOnInnerBean"); } catch (BeanCreationException ex) { // Check whether message contains outer bean name. ex.printStackTrace(); assertTrue(ex.getMessage().contains("failsOnInnerBean")); assertTrue(ex.getMessage().contains("someMap")); } try { xbf.getBean("failsOnInnerBeanForConstructor"); } catch (BeanCreationException ex) { // Check whether message contains outer bean name. ex.printStackTrace(); assertTrue(ex.getMessage().contains("failsOnInnerBeanForConstructor")); assertTrue(ex.getMessage().contains("constructor argument")); } }
@Test public void testImplicitDependsOnCycle() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class); bd1.setDependsOn("tb2"); lbf.registerBeanDefinition("tb1", bd1); RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class); bd2.setDependsOn("tb3"); lbf.registerBeanDefinition("tb2", bd2); RootBeanDefinition bd3 = new RootBeanDefinition(TestBean.class); bd3.setDependsOn("tb1"); lbf.registerBeanDefinition("tb3", bd3); try { lbf.preInstantiateSingletons(); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { // expected assertTrue(ex.getMessage().contains("Circular")); assertTrue(ex.getMessage().contains("'tb3'")); assertTrue(ex.getMessage().contains("'tb1'")); } }
@Test public void testBeanDefinitionWithAbstractClass() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); lbf.registerBeanDefinition("test", new RootBeanDefinition(AbstractBeanFactory.class)); try { lbf.getBean("test"); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertEquals("test", ex.getBeanName()); assertTrue(ex.getMessage().toLowerCase().contains("abstract")); } }
@Test public void testBeanDefinitionWithInterface() { DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); lbf.registerBeanDefinition("test", new RootBeanDefinition(ITestBean.class)); try { lbf.getBean("test"); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertEquals("test", ex.getBeanName()); assertTrue(ex.getMessage().toLowerCase().contains("interface")); } }
@Test public void testFactoryMethodArgumentsForNonExistingMethod() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); try { xbf.getBean("invalidPrototype", new TestBean()); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("nonExisting(TestBean)")); } }
@Test public void testCircularDependency() { AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(beanFactory); beanFactory.addBeanPostProcessor(bpp); beanFactory.registerBeanDefinition("configClass1", new RootBeanDefinition(A.class)); beanFactory.registerBeanDefinition("configClass2", new RootBeanDefinition(AStrich.class)); new ConfigurationClassPostProcessor().postProcessBeanFactory(beanFactory); try { beanFactory.preInstantiateSingletons(); fail("Should have thrown BeanCreationException"); } catch (BeanCreationException ex) { assertTrue(ex.getMessage().contains("Circular reference")); } }
@Test public void testNonQualifiedFieldFails() { StaticApplicationContext context = new StaticApplicationContext(); BeanDefinitionReader reader = new XmlBeanDefinitionReader(context); reader.loadBeanDefinitions(CONFIG_LOCATION); context.registerSingleton("testBean", NonQualifiedTestBean.class); try { context.refresh(); fail("Should have thrown a BeanCreationException"); } catch (BeanCreationException e) { assertTrue(e.getMessage().contains("found 6")); } }
@Test public void testQualifiedByAttributesFailsWithoutCustomQualifierRegistered() { StaticApplicationContext context = new StaticApplicationContext(); BeanDefinitionReader reader = new XmlBeanDefinitionReader(context); reader.loadBeanDefinitions(CONFIG_LOCATION); context.registerSingleton("testBean", QualifiedByAttributesTestBean.class); try { context.refresh(); fail("should have thrown a BeanCreationException"); } catch (BeanCreationException e) { assertTrue(e.getMessage().contains("found 6")); } }