1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.plugins.spring;
17
18 import javax.servlet.ServletContext;
19
20 import org.seasar.cubby.plugin.AbstractPlugin;
21 import org.seasar.cubby.spi.BeanDescProvider;
22 import org.seasar.cubby.spi.ContainerProvider;
23 import org.seasar.cubby.spi.ConverterProvider;
24 import org.seasar.cubby.spi.PathResolverProvider;
25 import org.seasar.cubby.spi.Provider;
26 import org.seasar.cubby.spi.RequestParserProvider;
27 import org.springframework.beans.factory.BeanFactoryUtils;
28 import org.springframework.context.ApplicationContext;
29 import org.springframework.web.context.ContextLoader;
30 import org.springframework.web.context.ContextLoaderListener;
31 import org.springframework.web.context.request.RequestContextListener;
32 import org.springframework.web.context.support.WebApplicationContextUtils;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 public class SpringPlugin extends AbstractPlugin {
85
86 private ApplicationContext applicationContext;
87
88
89
90
91 public SpringPlugin() {
92 support(BeanDescProvider.class);
93 support(ContainerProvider.class);
94 support(RequestParserProvider.class);
95 support(PathResolverProvider.class);
96 support(ConverterProvider.class);
97 }
98
99
100
101
102 @Override
103 public void initialize(final ServletContext servletContext)
104 throws Exception {
105 super.initialize(servletContext);
106 this.applicationContext = WebApplicationContextUtils
107 .getRequiredWebApplicationContext(servletContext);
108 }
109
110
111
112
113 @Override
114 public <S extends Provider> S getProvider(final Class<S> service) {
115
116 if (this.isSupport(service)) {
117 final String[] names = BeanFactoryUtils
118 .beanNamesForTypeIncludingAncestors(applicationContext,
119 service);
120 return service.cast(applicationContext.getBean(names[0]));
121 } else {
122 return null;
123 }
124 }
125
126 }