1 package com.atlassian.spring.container;
2
3 import org.springframework.beans.BeansException;
4 import org.springframework.beans.factory.BeanFactory;
5 import org.springframework.beans.factory.HierarchicalBeanFactory;
6 import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
7 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
8
9
10
11
12
13 public class AtlassianBeanFactory extends DefaultListableBeanFactory
14 {
15 public AtlassianBeanFactory(AutowireCapableBeanFactory beanFactory)
16 {
17 super(beanFactory);
18 }
19
20
21
22
23
24 public Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)
25 throws BeansException
26 {
27 existingBean = super.applyBeanPostProcessorsBeforeInitialization(existingBean, beanName);
28
29 BeanFactory parentBeanFactory = getParentBeanFactory();
30 while (parentBeanFactory != null)
31 {
32 if (parentBeanFactory instanceof AutowireCapableBeanFactory)
33 {
34 AutowireCapableBeanFactory autowireCapableParentFactory = (AutowireCapableBeanFactory) parentBeanFactory;
35 existingBean = autowireCapableParentFactory.applyBeanPostProcessorsBeforeInitialization(existingBean, beanName);
36 }
37
38 if (parentBeanFactory instanceof HierarchicalBeanFactory)
39 {
40 parentBeanFactory = ((HierarchicalBeanFactory)parentBeanFactory).getParentBeanFactory();
41 }
42 else
43 {
44 parentBeanFactory = null;
45 }
46 }
47
48 return existingBean;
49 }
50
51
52
53
54
55 public Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName)
56 throws BeansException
57 {
58 existingBean = super.applyBeanPostProcessorsAfterInitialization(existingBean, beanName);
59
60 BeanFactory parentBeanFactory = getParentBeanFactory();
61 while (parentBeanFactory != null)
62 {
63 if (parentBeanFactory instanceof AutowireCapableBeanFactory)
64 {
65 AutowireCapableBeanFactory autowireCapableParentFactory = (AutowireCapableBeanFactory) parentBeanFactory;
66 existingBean = autowireCapableParentFactory.applyBeanPostProcessorsAfterInitialization(existingBean, beanName);
67 }
68
69 if (parentBeanFactory instanceof HierarchicalBeanFactory)
70 {
71 parentBeanFactory = ((HierarchicalBeanFactory) parentBeanFactory).getParentBeanFactory();
72 }
73 else
74 {
75 parentBeanFactory = null;
76 }
77 }
78
79 return existingBean;
80 }
81
82
83 public String toString()
84 {
85 return "toString overridden for performance reasons";
86 }
87 }