1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.plugins.spring;
18
19 import javax.servlet.ServletContext;
20
21 import org.seasar.cubby.plugin.AbstractPlugin;
22 import org.seasar.cubby.spi.BeanDescProvider;
23 import org.seasar.cubby.spi.ContainerProvider;
24 import org.seasar.cubby.spi.ConverterProvider;
25 import org.seasar.cubby.spi.PathResolverProvider;
26 import org.seasar.cubby.spi.Provider;
27 import org.seasar.cubby.spi.RequestParserProvider;
28 import org.springframework.beans.factory.BeanFactoryUtils;
29 import org.springframework.context.ApplicationContext;
30 import org.springframework.web.context.ContextLoader;
31 import org.springframework.web.context.ContextLoaderListener;
32 import org.springframework.web.context.request.RequestContextListener;
33 import org.springframework.web.context.support.WebApplicationContextUtils;
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
85 public class SpringPlugin extends AbstractPlugin {
86
87 private ApplicationContext applicationContext;
88
89
90
91
92 public SpringPlugin() {
93 support(BeanDescProvider.class);
94 support(ContainerProvider.class);
95 support(RequestParserProvider.class);
96 support(PathResolverProvider.class);
97 support(ConverterProvider.class);
98 }
99
100
101
102
103 @Override
104 public void initialize(final ServletContext servletContext)
105 throws Exception {
106 super.initialize(servletContext);
107 this.applicationContext = WebApplicationContextUtils
108 .getRequiredWebApplicationContext(servletContext);
109 }
110
111
112
113
114 @Override
115 public <S extends Provider> S getProvider(final Class<S> service) {
116
117 if (this.isSupport(service)) {
118 final String[] names = BeanFactoryUtils
119 .beanNamesForTypeIncludingAncestors(applicationContext,
120 service);
121 return service.cast(applicationContext.getBean(names[0]));
122 } else {
123 return null;
124 }
125 }
126
127 }