1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.interceptor;
17
18 import static org.seasar.cubby.CubbyConstants.ATTR_PARAMS;
19
20 import java.util.Map;
21
22 import javax.servlet.http.HttpServletRequest;
23
24 import org.aopalliance.intercept.MethodInterceptor;
25 import org.aopalliance.intercept.MethodInvocation;
26 import org.seasar.cubby.CubbyConstants;
27 import org.seasar.cubby.action.Action;
28 import org.seasar.cubby.action.ActionResult;
29 import org.seasar.cubby.controller.ActionContext;
30 import org.seasar.cubby.controller.CubbyConfiguration;
31 import org.seasar.cubby.controller.RequestParser;
32 import org.seasar.cubby.controller.ThreadContext;
33 import org.seasar.cubby.dxo.FormDxo;
34
35
36
37
38
39
40
41
42
43 public class InitializeInterceptor implements MethodInterceptor {
44
45
46 private HttpServletRequest request;
47
48
49 private ActionContext context;
50
51
52
53
54
55
56
57 public void setRequest(final HttpServletRequest request) {
58 this.request = request;
59 }
60
61
62
63
64
65
66
67 public void setActionContext(final ActionContext context) {
68 this.context = context;
69 }
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 public Object invoke(final MethodInvocation invocation) throws Throwable {
85 setupParams(context, request);
86 setupForm(context, request);
87
88 final Action action = context.getAction();
89 action.initialize();
90
91 final ActionResult result = (ActionResult) invocation.proceed();
92 if (result != null) {
93 result.prerender(context);
94 }
95
96 return result;
97 }
98
99
100
101
102
103
104
105
106
107 void setupParams(final ActionContext context,
108 final HttpServletRequest request) {
109 final CubbyConfiguration configuration = ThreadContext
110 .getConfiguration();
111 final RequestParser requestParser = configuration.getRequestParser();
112 final Map<String, Object[]> parameterMap = requestParser
113 .getParameterMap(request);
114 request.setAttribute(ATTR_PARAMS, parameterMap);
115 }
116
117
118
119
120
121
122
123
124
125 private void setupForm(final ActionContext context,
126 final HttpServletRequest request) {
127 final Object formBean = context.getFormBean();
128 if (formBean != null) {
129 final FormDxo formDxo = context.getFormDxo();
130 final Map<String, Object[]> params = getAttribute(request,
131 ATTR_PARAMS);
132 formDxo.convert(params, formBean);
133 }
134 }
135
136
137
138
139
140
141
142
143
144
145
146
147 @SuppressWarnings("unchecked")
148 private static <T> T getAttribute(final HttpServletRequest request,
149 final String name) {
150 return (T) request.getAttribute(name);
151 }
152
153 }