1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.springframework.extensions.surf.mvc;
20
21 import java.io.IOException;
22 import java.util.StringTokenizer;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.springframework.extensions.surf.FrameworkUtil;
30 import org.springframework.extensions.surf.ThreadLocalPreviewContext;
31 import org.springframework.extensions.surf.WebFrameworkConstants;
32 import org.springframework.web.servlet.ModelAndView;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class PreviewController extends AbstractWebFrameworkController
53 {
54 private static Log logger = LogFactory.getLog(PreviewController.class);
55
56
57
58
59 public Log getLogger()
60 {
61 return logger;
62 }
63
64
65
66
67 public ModelAndView createModelAndView(HttpServletRequest request, HttpServletResponse response)
68 {
69
70
71 if (this.getWebFrameworkConfiguration().isPreviewEnabled())
72 {
73 boolean updated = false;
74
75
76 String storeId = null;
77 String webappId = null;
78
79
80 String uri = request.getRequestURI();
81
82
83 uri = uri.substring(request.getContextPath().length());
84
85
86 StringTokenizer t = new StringTokenizer(uri, "/");
87 String servletName = t.nextToken();
88 if (t.hasMoreTokens())
89 {
90 storeId = t.nextToken();
91 }
92 if (t.hasMoreTokens())
93 {
94 webappId = t.nextToken();
95 }
96
97
98
99 String _storeId = (String) request.getParameter(WebFrameworkConstants.STORE_ID_REQUEST_PARAM_NAME);
100 if (_storeId == null)
101 {
102 _storeId = (String) request.getParameter("s");
103 }
104 if (_storeId != null)
105 {
106 storeId = _storeId;
107 }
108 String _webappId = (String) request.getParameter(WebFrameworkConstants.WEBAPP_ID_REQUEST_PARAM_NAME);
109 if (_webappId == null)
110 {
111 _webappId = (String) request.getParameter("w");
112 }
113 if (_webappId != null)
114 {
115 webappId = _webappId;
116 }
117
118
119 if (storeId != null)
120 {
121 updated = true;
122 request.getSession(true).setAttribute(WebFrameworkConstants.STORE_ID_SESSION_ATTRIBUTE_NAME, storeId);
123 }
124 if (storeId != null && webappId != null)
125 {
126 updated = true;
127 request.getSession(true).setAttribute(WebFrameworkConstants.WEBAPP_ID_SESSION_ATTRIBUTE_NAME, webappId);
128 }
129
130
131
132 if (updated)
133 {
134
135 ThreadLocalPreviewContext sandboxContext = new ThreadLocalPreviewContext(storeId, webappId);
136
137
138 FrameworkUtil.resetWebScripts();
139
140
141
142
143
144
145
146
147
148
149
150
151 }
152
153
154 try {
155 response.sendRedirect(request.getContextPath());
156 }
157 catch (IOException ioe){ }
158 }
159
160 return null;
161 }
162 }