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