1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.plugins.s2;
17
18 import javax.el.ELResolver;
19 import javax.servlet.ServletContext;
20 import javax.servlet.jsp.JspApplicationContext;
21 import javax.servlet.jsp.JspFactory;
22
23 import org.seasar.cubby.plugin.AbstractPlugin;
24 import org.seasar.cubby.plugins.s2.el.S2BeanELResolver;
25 import org.seasar.cubby.spi.BeanDescProvider;
26 import org.seasar.cubby.spi.ContainerProvider;
27 import org.seasar.cubby.spi.ConverterProvider;
28 import org.seasar.cubby.spi.PathResolverProvider;
29 import org.seasar.cubby.spi.Provider;
30 import org.seasar.cubby.spi.RequestParserProvider;
31 import org.seasar.framework.container.S2Container;
32 import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
33 import org.seasar.framework.log.Logger;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class S2ContainerPlugin extends AbstractPlugin {
53
54
55 private static final Logger logger = Logger
56 .getLogger(S2ContainerPlugin.class);
57
58 static {
59
60
61
62
63
64 try {
65 Class.forName("org.apache.jasper.compiler.JspRuntimeContext");
66 } catch (final Exception e) {
67 }
68 }
69
70
71
72
73 public S2ContainerPlugin() {
74 support(BeanDescProvider.class);
75 support(ContainerProvider.class);
76 support(RequestParserProvider.class);
77 support(PathResolverProvider.class);
78 support(ConverterProvider.class);
79 }
80
81
82 private ServletContext servletContext;
83
84
85
86
87 @Override
88 public void initialize(final ServletContext servletContext) {
89 this.servletContext = servletContext;
90 }
91
92
93
94
95
96
97
98 @Override
99 public void ready() {
100 final JspFactory jspFactory = JspFactory.getDefaultFactory();
101 if (jspFactory != null) {
102 final JspApplicationContext jspApplicationContext = jspFactory
103 .getJspApplicationContext(servletContext);
104 final S2Container container = SingletonS2ContainerFactory
105 .getContainer();
106 final ELResolver[] elResolvers = (ELResolver[]) container
107 .findAllComponents(ELResolver.class);
108 for (final ELResolver elResolver : elResolvers) {
109 jspApplicationContext.addELResolver(elResolver);
110 logger.log("ICUB0001", new Object[] { elResolver });
111 }
112 }
113 }
114
115
116
117
118 public <S extends Provider> S getProvider(final Class<S> service) {
119 if (this.isSupport(service)) {
120 final S2Container container = SingletonS2ContainerFactory
121 .getContainer();
122 return service.cast(container.getComponent(service));
123 } else {
124 return null;
125 }
126 }
127
128 }