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.util.ArrayList;
22 import java.util.StringTokenizer;
23
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27
28 import org.springframework.extensions.surf.FrameworkUtil;
29 import org.springframework.extensions.surf.RequestContext;
30 import org.springframework.extensions.surf.site.CacheUtil;
31 import org.springframework.web.servlet.ModelAndView;
32 import org.springframework.web.servlet.mvc.AbstractController;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class RemoteController extends AbstractController
53 {
54 private static final String MODE_CACHE = "cache";
55 private static final String MODE_CACHE_COMMAND_INVALIDATE = "invalidate";
56
57 private static final String MODE_WEBSCRIPTS = "webscripts";
58 private static final String MODE_WEBSCRIPTS_COMMAND_RESET = "reset";
59
60 public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception
61 {
62
63 RequestContext context = FrameworkUtil.getCurrentRequestContext();
64
65 String uri = request.getRequestURI();
66
67
68 uri = uri.substring(request.getContextPath().length());
69
70
71 StringTokenizer t = new StringTokenizer(uri, "/");
72 String servletName = t.nextToken();
73 if (!t.hasMoreTokens())
74 {
75 throw new ServletException("Invalid URL: " + uri);
76 }
77 String mode = t.nextToken();
78 if ( !t.hasMoreTokens())
79 {
80 throw new ServletException("Invalid URL: " + uri);
81 }
82 String command = t.nextToken();
83
84
85 ArrayList<String> args = new ArrayList<String>();
86 if (t.hasMoreTokens())
87 {
88 args.add(t.nextToken());
89 }
90
91
92 if (MODE_CACHE.equalsIgnoreCase(mode))
93 {
94 if (MODE_CACHE_COMMAND_INVALIDATE.equalsIgnoreCase(command))
95 {
96
97 CacheUtil.invalidateModelObjectServiceCache(context);
98 }
99 }
100
101
102 if (MODE_WEBSCRIPTS.equalsIgnoreCase(mode))
103 {
104 if (MODE_WEBSCRIPTS_COMMAND_RESET.equalsIgnoreCase(command))
105 {
106 FrameworkUtil.resetWebScripts();
107 }
108 }
109
110 return null;
111 }
112 }