1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.objectfactory.guice;
35
36 import info.magnolia.cms.core.AggregationState;
37 import info.magnolia.cms.core.Channel;
38 import info.magnolia.context.Context;
39 import info.magnolia.context.MgnlContext;
40 import info.magnolia.context.WebContext;
41 import info.magnolia.objectfactory.annotation.LazySingleton;
42 import info.magnolia.objectfactory.annotation.LocalScoped;
43 import info.magnolia.objectfactory.annotation.SessionScoped;
44
45 import javax.servlet.http.HttpServletRequest;
46 import javax.servlet.http.HttpServletResponse;
47 import javax.servlet.http.HttpSession;
48
49 import com.google.inject.Provider;
50
51
52
53
54 public class GuiceContextAndScopesConfigurer extends AbstractGuiceComponentConfigurer {
55
56 @Override
57 protected void configure() {
58
59
60 bind(Context.class).toProvider(new Provider<Context>() {
61 @Override
62 public Context get() {
63 return MgnlContext.getInstance();
64 }
65 });
66 bind(WebContext.class).toProvider(new Provider<WebContext>() {
67 @Override
68 public WebContext get() {
69 return MgnlContext.getWebContextOrNull();
70 }
71 });
72 bind(AggregationState.class).toProvider(new Provider<AggregationState>() {
73 @Override
74 public AggregationState get() {
75 final WebContext webContext = MgnlContext.getWebContextOrNull();
76 return webContext == null ? null : webContext.getAggregationState();
77 }
78 });
79 bind(Channel.class).toProvider(new Provider<Channel>() {
80 @Override
81 public Channel get() {
82 final WebContext webContext = MgnlContext.getWebContextOrNull();
83 return webContext == null ? null : webContext.getAggregationState().getChannel();
84 }
85 });
86 bind(HttpSession.class).toProvider(new Provider<HttpSession>() {
87 @Override
88 public HttpSession get() {
89 final WebContext webContext = MgnlContext.getWebContextOrNull();
90 return webContext == null ? null : webContext.getRequest().getSession();
91 }
92 });
93 bind(HttpServletRequest.class).toProvider(new Provider<HttpServletRequest>() {
94 @Override
95 public HttpServletRequest get() {
96 final WebContext webContext = MgnlContext.getWebContextOrNull();
97 return webContext == null ? null : webContext.getRequest();
98 }
99 });
100 bind(HttpServletResponse.class).toProvider(new Provider<HttpServletResponse>() {
101 @Override
102 public HttpServletResponse get() {
103 final WebContext webContext = MgnlContext.getWebContextOrNull();
104 return webContext == null ? null : webContext.getResponse();
105 }
106 });
107
108
109 bindScope(LocalScoped.class, MagnoliaScopes.LOCAL);
110 bindScope(SessionScoped.class, MagnoliaScopes.SESSION);
111 bindScope(LazySingleton.class, MagnoliaScopes.LAZY_SINGLETON);
112 }
113 }