1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.springframework.extensions.webscripts.servlet.mvc;
20
21 import java.util.Map;
22 import java.util.StringTokenizer;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import org.springframework.extensions.config.Config;
28 import org.springframework.extensions.config.ConfigService;
29 import org.springframework.extensions.config.ServerConfigElement;
30 import org.springframework.extensions.config.ServerProperties;
31 import org.springframework.extensions.surf.util.I18NUtil;
32 import org.springframework.extensions.webscripts.RuntimeContainer;
33 import org.springframework.extensions.webscripts.servlet.ServletAuthenticatorFactory;
34 import org.springframework.extensions.webscripts.servlet.WebScriptServletRuntime;
35 import org.springframework.web.servlet.view.AbstractUrlBasedView;
36 import org.springframework.web.util.WebUtils;
37
38
39
40
41
42
43 public class WebScriptView extends AbstractUrlBasedView
44 {
45 protected RuntimeContainer container;
46 protected ServletAuthenticatorFactory authenticatorFactory;
47 protected ConfigService configService;
48
49
50 protected static ServerProperties serverProperties;
51
52 public WebScriptView(RuntimeContainer container, ServletAuthenticatorFactory authenticatorFactory, ConfigService configService)
53 {
54 this.container = container;
55 this.authenticatorFactory = authenticatorFactory;
56 this.configService = configService;
57
58
59 Config config = configService.getConfig("Server");
60 serverProperties = (ServerConfigElement)config.getConfigElement(ServerConfigElement.CONFIG_ELEMENT_ID);
61 }
62
63
64
65
66 protected void renderMergedOutputModel(
67 Map model, HttpServletRequest request, HttpServletResponse response) throws Exception
68 {
69
70 String uri = this.getUrl();
71
72
73 exposeModelAsRequestAttributes(model, request);
74
75 if (logger.isDebugEnabled())
76 logger.debug("Processing request (" + request.getMethod() + ") " + request.getRequestURL() + (request.getQueryString() != null ? "?" + request.getQueryString() : ""));
77
78 if (request.getCharacterEncoding() == null)
79 {
80 request.setCharacterEncoding("UTF-8");
81 }
82
83 setLanguageFromRequestHeader(request);
84
85
86 WebScriptServletRuntime runtime = new WebScriptServletRuntime(container, authenticatorFactory, request, response, serverProperties);
87 runtime.executeScript();
88 }
89
90
91
92
93
94
95 protected void exposeForwardRequestAttributes(HttpServletRequest request) {
96 WebUtils.exposeForwardRequestAttributes(request);
97 }
98
99
100
101
102 public static void setLanguageFromRequestHeader(HttpServletRequest req)
103 {
104
105 String acceptLang = req.getHeader("Accept-Language");
106 if (acceptLang != null && acceptLang.length() != 0)
107 {
108 StringTokenizer t = new StringTokenizer(acceptLang, ",; ");
109
110 String language = t.nextToken().replace('-', '_');
111 I18NUtil.setLocale(I18NUtil.parseLocale(language));
112 }
113 }
114
115 }