1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.util;
17
18 import org.seasar.framework.beans.BeanDesc;
19 import org.seasar.framework.beans.PropertyDesc;
20 import org.seasar.framework.beans.factory.BeanDescFactory;
21 import org.seasar.framework.container.ComponentDef;
22 import org.seasar.framework.container.S2Container;
23 import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
24
25
26
27
28
29
30 public class S2ContainerUtil {
31 private S2ContainerUtil() {
32
33 }
34
35
36
37
38
39
40
41
42
43
44
45 public static Object getComponentNoException(final String componentName) {
46 S2Container container = SingletonS2ContainerFactory.getContainer();
47 return getComponentNoException(componentName, container);
48 }
49
50
51
52
53
54
55
56
57
58
59
60
61
62 public static Object getComponentNoException(final String componentName,
63 final S2Container container) {
64 if (container.hasComponentDef(componentName)) {
65 return container.getComponentDef(componentName).getComponent();
66 } else {
67 return null;
68 }
69 }
70
71
72
73
74
75
76
77
78
79
80
81 public static Object getComponentNoException(final Class<?> componentClass,
82 final S2Container container) {
83 if (container.hasComponentDef(componentClass)) {
84 return container.getComponent(componentClass);
85 } else {
86 return null;
87 }
88 }
89
90
91
92
93
94
95
96
97
98 public static Object getComponentNoException(final Class<?> componentClass) {
99 return getComponentNoException(componentClass,
100 SingletonS2ContainerFactory.getContainer());
101 }
102
103
104
105
106
107
108
109
110
111 public static ComponentDef getComponentDefNoException(
112 final String componentName) {
113 S2Container container = SingletonS2ContainerFactory.getContainer();
114 if (container.hasComponentDef(componentName)) {
115 return container.getComponentDef(componentName);
116 } else {
117 return null;
118 }
119 }
120
121
122
123
124
125
126
127
128
129 public static ComponentDef getComponentNoExceptionDef(
130 final Class<?> componentClass) {
131 S2Container container = SingletonS2ContainerFactory.getContainer();
132 if (container.hasComponentDef(componentClass)) {
133 return container.getComponentDef(componentClass);
134 } else {
135 return null;
136 }
137 }
138
139
140
141
142
143
144
145
146 public static ComponentDef getComponentDef(final String componentName) {
147 S2Container container = SingletonS2ContainerFactory.getContainer();
148 return container.getComponentDef(componentName);
149 }
150
151
152
153
154
155
156
157
158 public static ComponentDef getComponentDef(final Class<?> componentClass) {
159 S2Container container = SingletonS2ContainerFactory.getContainer();
160 return container.getComponentDef(componentClass);
161 }
162
163
164
165
166
167
168
169
170 public static Object getComponent(final Class<?> componentClass) {
171 return getComponent(componentClass, SingletonS2ContainerFactory
172 .getContainer());
173 }
174
175
176
177
178
179
180
181
182
183
184 public static Object getComponent(final Class<?> componentClass,
185 final S2Container container) {
186 return container.getComponent(componentClass);
187 }
188
189
190
191
192
193
194
195
196
197
198
199
200
201 public static void injectDependency(final Object target,
202 final S2Container container) {
203 AssertionUtil.assertNotNull("target", target);
204 AssertionUtil.assertNotNull("container", container);
205
206 BeanDesc desc = BeanDescFactory.getBeanDesc(target.getClass());
207
208 int pdSize = desc.getPropertyDescSize();
209 for (int i = 0; i < pdSize; i++) {
210 PropertyDesc pd = desc.getPropertyDesc(i);
211
212 Class<?> clazz = pd.getPropertyType();
213 Object component = getComponentNoException(clazz);
214 if (component != null && pd.isWritable()) {
215 pd.setValue(target, component);
216 }
217 }
218 }
219 }