KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jodd > madvoc > interceptor > ServletConfigInterceptor


1 // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
2

3 package jodd.madvoc.interceptor;
4
5 import jodd.madvoc.ActionRequest;
6 import jodd.madvoc.WebApplication;
7 import jodd.madvoc.injector.ActionFieldInjector;
8 import jodd.madvoc.injector.ActionInjector;
9 import jodd.servlet.upload.MultipartRequestWrapper;
10 import jodd.servlet.ServletUtil;
11
12 import javax.servlet.http.HttpServletRequest JavaDoc;
13 import javax.servlet.http.HttpServletResponse JavaDoc;
14 import java.util.Map JavaDoc;
15 import java.util.HashMap JavaDoc;
16
17 /**
18  * Configures actions prior their execution.
19  */

20 public class ServletConfigInterceptor implements ActionInterceptor {
21
22     private Map JavaDoc<Class JavaDoc, ActionInjector> injectors;
23
24     public ServletConfigInterceptor() {
25         injectors = new HashMap JavaDoc<Class JavaDoc, ActionInjector>();
26     }
27
28     public String JavaDoc intercept(ActionRequest actionRequest) throws Exception JavaDoc {
29         WebApplication webapp = actionRequest.getWebApplication();
30         HttpServletRequest JavaDoc servletRequest = actionRequest.getHttpServletRequest();
31         HttpServletResponse JavaDoc serlvetResponse = actionRequest.getHttpServletResponse();
32
33         // set character encoding
34
servletRequest.setCharacterEncoding(webapp.getEncoding());
35         serlvetResponse.setCharacterEncoding(webapp.getEncoding());
36
37         // multipart
38
if (ServletUtil.isMultipartRequest(servletRequest)) {
39             actionRequest.setHttpServletRequest(new MultipartRequestWrapper(servletRequest, webapp.getFileUploadFactory(), webapp.getEncoding()));
40         }
41
42         // inject
43
Class JavaDoc<? extends Object JavaDoc> actionClass = actionRequest.getAction().getClass();
44         ActionInjector injector = injectors.get(actionClass);
45         if (injector == null) {
46             injector = new ActionFieldInjector();
47             injectors.put(actionClass, injector);
48         }
49
50         injector.inject(actionRequest);
51         String JavaDoc result = actionRequest.invoke();
52         injector.outject(actionRequest);
53         return result;
54     }
55 }
56
Popular Tags