KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > google > inject > servlet > ServletModule


1 /**
2  * Copyright (C) 2006 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package com.google.inject.servlet;
18
19 import com.google.inject.AbstractModule;
20 import com.google.inject.TypeLiteral;
21 import com.google.inject.Provider;
22 import static com.google.inject.servlet.ServletScopes.REQUEST;
23 import static com.google.inject.servlet.ServletScopes.SESSION;
24
25 import java.util.Map JavaDoc;
26
27 import javax.servlet.ServletRequest JavaDoc;
28 import javax.servlet.ServletResponse JavaDoc;
29 import javax.servlet.http.HttpServletRequest JavaDoc;
30 import javax.servlet.http.HttpServletResponse JavaDoc;
31 import javax.servlet.http.HttpSession JavaDoc;
32
33 /**
34  * Configures the servlet scopes and creates bindings for the servlet API
35  * objects so you can inject the request, response, session, etc.
36  *
37  * @author crazybob@google.com (Bob Lee)
38  */

39 public class ServletModule extends AbstractModule {
40
41   protected void configure() {
42     // Scopes.
43
bindScope(RequestScoped.class, REQUEST);
44     bindScope(SessionScoped.class, SESSION);
45
46     // Bind request.
47
Provider<HttpServletRequest JavaDoc> requestProvider =
48         new Provider<HttpServletRequest JavaDoc>() {
49           public HttpServletRequest JavaDoc get() {
50             return GuiceFilter.getRequest();
51           }
52
53           public String JavaDoc toString() {
54             return "RequestProvider";
55           }
56         };
57     bind(HttpServletRequest JavaDoc.class).toProvider(requestProvider);
58     bind(ServletRequest JavaDoc.class).toProvider(requestProvider);
59
60     // Bind response.
61
Provider<HttpServletResponse JavaDoc> responseProvider =
62         new Provider<HttpServletResponse JavaDoc>() {
63           public HttpServletResponse JavaDoc get() {
64             return GuiceFilter.getResponse();
65           }
66
67           public String JavaDoc toString() {
68             return "ResponseProvider";
69           }
70         };
71     bind(HttpServletResponse JavaDoc.class).toProvider(responseProvider);
72     bind(ServletResponse JavaDoc.class).toProvider(responseProvider);
73
74     // Bind session.
75
bind(HttpSession JavaDoc.class).toProvider(new Provider<HttpSession JavaDoc>() {
76       public HttpSession JavaDoc get() {
77         return GuiceFilter.getRequest().getSession();
78       }
79
80       public String JavaDoc toString() {
81         return "SessionProvider";
82       }
83     });
84
85     // Bind request parameters.
86
bind(new TypeLiteral<Map JavaDoc<String JavaDoc, String JavaDoc[]>>() {})
87         .annotatedWith(RequestParameters.class)
88         .toProvider(new Provider<Map JavaDoc<String JavaDoc, String JavaDoc[]>>() {
89               @SuppressWarnings JavaDoc({"unchecked"})
90               public Map JavaDoc<String JavaDoc, String JavaDoc[]> get() {
91                 return GuiceFilter.getRequest().getParameterMap();
92               }
93
94               public String JavaDoc toString() {
95                 return "RequestParametersProvider";
96               }
97             });
98   }
99 }
100
Popular Tags