1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.springframework.extensions.surf.bean;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.springframework.extensions.surf.FrameworkUtil;
27 import org.springframework.extensions.surf.RequestContext;
28 import org.springframework.extensions.surf.TemplatesContainer;
29 import org.springframework.extensions.surf.WebFrameworkServiceRegistry;
30 import org.springframework.extensions.surf.site.CacheUtil;
31 import org.springframework.extensions.webscripts.DeclarativeWebScript;
32 import org.springframework.extensions.webscripts.Status;
33 import org.springframework.extensions.webscripts.WebScriptRequest;
34
35
36
37
38
39
40 public class ConsoleUpdate extends DeclarativeWebScript
41 {
42 private WebFrameworkServiceRegistry serviceRegistry;
43
44 public void setServiceRegistry(WebFrameworkServiceRegistry serviceRegistry)
45 {
46 this.serviceRegistry = serviceRegistry;
47 }
48
49
50
51
52 @Override
53 protected Map<String, Object> executeImpl(WebScriptRequest req, Status status)
54 {
55 List<String> tasks = new ArrayList<String>();
56
57
58 boolean resetWebscripts = false;
59 boolean resetTemplates = false;
60 boolean resetObjects = false;
61
62
63 String reset = req.getParameter("reset");
64
65 if ("webscripts".equalsIgnoreCase(reset))
66 {
67 resetWebscripts = true;
68 }
69 if ("templates".equalsIgnoreCase(reset))
70 {
71 resetTemplates = true;
72 }
73 if ("objects".equalsIgnoreCase(reset))
74 {
75 resetObjects = true;
76 }
77 if ("all".equalsIgnoreCase(reset))
78 {
79 resetWebscripts = true;
80 resetTemplates = true;
81 resetObjects = true;
82 }
83
84
85 if (resetWebscripts)
86 {
87
88 int previousCount = getContainer().getRegistry().getWebScripts().size();
89 int previousFailures = getContainer().getRegistry().getFailures().size();
90 getContainer().reset();
91 tasks.add("Reset Web Scripts Registry; registered " + getContainer().getRegistry().getWebScripts().size() + " Web Scripts. Previously, there were " + previousCount + ".");
92 int newFailures = getContainer().getRegistry().getFailures().size();
93 if (newFailures != 0 || previousFailures != 0)
94 {
95 tasks.add("Warning: found " + newFailures + " broken Web Scripts. Previously, there were " + previousFailures + ".");
96 }
97 }
98
99
100 if (resetTemplates)
101 {
102 TemplatesContainer container = serviceRegistry.getTemplatesContainer();
103 container.reset();
104
105 tasks.add("Reset Templates Registry.");
106 }
107
108
109 if (resetObjects)
110 {
111 RequestContext context = FrameworkUtil.getCurrentRequestContext();
112 CacheUtil.invalidateModelObjectServiceCache(context);
113
114 tasks.add("Reset Surf Objects Registry.");
115 }
116
117
118 Map<String, Object> model = new HashMap<String, Object>(7, 1.0f);
119 model.put("tasks", tasks);
120 model.put("webscripts", getContainer().getRegistry().getWebScripts());
121 model.put("failures", getContainer().getRegistry().getFailures());
122 return model;
123 }
124
125 }