1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.plugins.guice;
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
29 import com.google.inject.Injector;
30 import com.google.inject.servlet.GuiceServletContextListener;
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 public class GuicePlugin extends AbstractPlugin {
55
56
57 public static final String MODULE_INIT_PARAM_NAME = "cubby.guice.module";
58
59
60 private Injector injector;
61
62
63
64
65 public GuicePlugin() {
66 support(BeanDescProvider.class);
67 support(ContainerProvider.class);
68 support(RequestParserProvider.class);
69 support(PathResolverProvider.class);
70 support(ConverterProvider.class);
71 }
72
73
74
75
76 @Override
77 public void initialize(final ServletContext servletContext)
78 throws Exception {
79 super.initialize(servletContext);
80
81 this.injector = (Injector) servletContext.getAttribute(Injector.class
82 .getName());
83 if (this.injector == null) {
84 throw new IllegalStateException(Injector.class.getName()
85 + "is not confugured.");
86 }
87 }
88
89
90
91
92 @Override
93 public void destroy() {
94 this.injector = null;
95 super.destroy();
96 }
97
98
99
100
101 @Override
102 public <S extends Provider> S getProvider(final Class<S> service) {
103 if (this.isSupport(service)) {
104 return service.cast(this.injector.getInstance(service));
105 } else {
106 return null;
107 }
108 }
109
110
111
112
113
114
115 public Injector getInjector() {
116 return injector;
117 }
118
119 }