1 package com.atlassian.plugin.osgi.spring;
2
3 import org.junit.Test;
4 import org.springframework.beans.factory.config.BeanPostProcessor;
5 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
6 import org.springframework.beans.factory.support.RootBeanDefinition;
7
8 import javax.annotation.PostConstruct;
9
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertTrue;
12
13 public class BeanPostProcessorTest {
14 private static class SomeBean {
15 boolean postConstructInvoked;
16 @PostConstruct
17 void postConstruct() {
18 postConstructInvoked = true;
19 }
20 }
21
22 @Test
23 public void invokesPostConstruct() {
24 final DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
25 bf.registerBeanDefinition("bean", new RootBeanDefinition(SomeBean.class));
26 final CommonAnnotationBeanFactoryPostProcessor commonAnnotationBeanFactoryPostProcessor = new CommonAnnotationBeanFactoryPostProcessor();
27
28 assertFalse(bf.createBean(SomeBean.class).postConstructInvoked);
29 commonAnnotationBeanFactoryPostProcessor.postProcessBeanFactory(null, bf);
30 for (final BeanPostProcessor bpp : bf.getBeansOfType(BeanPostProcessor.class).values()) {
31 bf.addBeanPostProcessor(bpp);
32 }
33 assertTrue(bf.createBean(SomeBean.class).postConstructInvoked);
34 }
35 }