View Javadoc

1   /**
2    * Copyright (C) 2005-2009 Alfresco Software Limited.
3    *
4    * This file is part of the Spring Surf Extension project.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *  http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
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   * Handles POST processing for console reset commands
37   * 
38   * @author muzquiano
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      /* (non-Javadoc)
50       * @see org.alfresco.web.scripts.DeclarativeWebScript#executeImpl(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.WebScriptResponse)
51       */
52      @Override
53      protected Map<String, Object> executeImpl(WebScriptRequest req, Status status)
54      {
55          List<String> tasks = new ArrayList<String>();
56          
57          // actions
58          boolean resetWebscripts = false;
59          boolean resetTemplates = false;
60          boolean resetObjects = false;
61  
62          // reset index
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          // web script resets
85          if (resetWebscripts)
86          {
87              // reset list of web scripts
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          // template resets
100         if (resetTemplates)
101         {
102             TemplatesContainer container = serviceRegistry.getTemplatesContainer();
103             container.reset();
104             
105             tasks.add("Reset Templates Registry.");
106         }
107         
108         // surf registry
109         if (resetObjects)
110         {
111             RequestContext context = FrameworkUtil.getCurrentRequestContext();
112             CacheUtil.invalidateModelObjectServiceCache(context);
113             
114             tasks.add("Reset Surf Objects Registry.");
115         }
116         
117         // create model for rendering
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 }