Hi Rishi, I think you missed the import with a wildcard in UtilCacheEvents.java.
>+import java.util.*; Though I think it may have been slipped in due to IDE. Using the wildcard may clutter local namespace with all the classes of util package. Thanks and Regards, *Aditya Sharma* | Enterprise Software Engineer HotWax Commerce <http://www.hotwax.co/> by HotWax Systems <http://www.hotwaxsystems.com/> [image: https://www.linkedin.com/in/aditya-p-sharma/] <https://www.linkedin.com/in/aditya-p-sharma/> On Fri, Nov 2, 2018 at 4:48 PM <[email protected]> wrote: > Author: rishi > Date: Fri Nov 2 11:18:52 2018 > New Revision: 1845572 > > URL: http://svn.apache.org/viewvc?rev=1845572&view=rev > Log: > Improved: Introduce ability to clear specific cache from cache > maintenance. After this user can bulk select the caches and clear them. > Single clear and all clear caches works as is. > (OFBIZ-10402) > Thanks to Yogesh Naroliya for providing the patch and Suraj Khurana for > reporting the ticket. > > Modified: > > ofbiz/ofbiz-framework/trunk/framework/webtools/config/WebtoolsUiLabels.xml > > ofbiz/ofbiz-framework/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/UtilCacheEvents.java > > ofbiz/ofbiz-framework/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml > ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheForms.xml > ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheScreens.xml > ofbiz/ofbiz-framework/trunk/framework/webtools/widget/Menus.xml > > Modified: > ofbiz/ofbiz-framework/trunk/framework/webtools/config/WebtoolsUiLabels.xml > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/config/WebtoolsUiLabels.xml?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- > ofbiz/ofbiz-framework/trunk/framework/webtools/config/WebtoolsUiLabels.xml > (original) > +++ > ofbiz/ofbiz-framework/trunk/framework/webtools/config/WebtoolsUiLabels.xml > Fri Nov 2 11:18:52 2018 > @@ -1150,6 +1150,9 @@ > <value xml:lang="zh">清除这个缓å˜</value> > <value xml:lang="zh-TW">æ¸…é™¤é€™å€‹å¿«å –</value> > </property> > + <property key="WebtoolsClearSelectedCaches"> > + <value xml:lang="en">Clear Selected Caches</value> > + </property> > <property key="WebtoolsCompanyName"> > <value xml:lang="de">OFBiz: Web Tools</value> > <value xml:lang="en">OFBiz: Web Tools</value> > > Modified: > ofbiz/ofbiz-framework/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/UtilCacheEvents.java > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/UtilCacheEvents.java?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- > ofbiz/ofbiz-framework/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/UtilCacheEvents.java > (original) > +++ > ofbiz/ofbiz-framework/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/UtilCacheEvents.java > Fri Nov 2 11:18:52 2018 > @@ -17,10 +17,7 @@ > * under the License. > > *******************************************************************************/ > package org.apache.ofbiz.webtools; > - > -import java.util.Iterator; > -import java.util.Locale; > - > +import java.util.*; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > > @@ -170,6 +167,56 @@ public final class UtilCacheEvents { > request.setAttribute("_EVENT_MESSAGE_", errMsg + " (" + > UtilDateTime.nowDateString("yyyy-MM-dd HH:mm:ss") + ")."); > return "success"; > } > + > + /** An HTTP WebEvent handler that clears the selected caches > + * @param request The HTTP request object for the current JSP or > Servlet request. > + * @param response The HTTP response object for the current JSP or > Servlet request. > + * @return return an HTTP WebEvent handler that clears all caches > + */ > + public static String clearSelectedCachesEvent(HttpServletRequest > request, HttpServletResponse response) { > + > + String errMsg = ""; > + Locale locale = UtilHttp.getLocale(request); > + > + Security security = (Security) request.getAttribute("security"); > + if (!security.hasPermission("UTIL_CACHE_EDIT", > request.getSession())) { > + errMsg = UtilProperties.getMessage(err_resource, > "utilCacheEvents.permissionEdit", locale) + "."; > + request.setAttribute("_ERROR_MESSAGE_", errMsg); > + return "error"; > + } > + > + Map<String, Object> ctx = UtilHttp.getParameterMap(request); > + boolean isSelected; > + List<String> eventList = new LinkedList<>(); > + int rowCount = UtilHttp.getMultiFormRowCount(ctx); > + for (int i = 0; i < rowCount; i++) { > + String suffix = UtilHttp.getMultiRowDelimiter() + i; > + isSelected = (ctx.containsKey("_rowSubmit" + suffix) && > "Y".equalsIgnoreCase((String)ctx.get("_rowSubmit" + suffix))); > + if (!isSelected) { > + continue; > + } > + > + String name = request.getParameter("cacheName"+suffix); > + > + if (name == null) { > + errMsg = UtilProperties.getMessage(err_resource, > "utilCache.couldNotClearCache", locale) + "."; > + eventList.add(errMsg); > + } > + > + UtilCache<?, ?> utilCache = UtilCache.findCache(name); > + > + if (utilCache != null) { > + utilCache.clear(); > + errMsg = UtilProperties.getMessage(err_resource, > "utilCache.clearCache", UtilMisc.toMap("name", name), locale) + "."; > + eventList.add(errMsg); > + } else { > + errMsg = UtilProperties.getMessage(err_resource, > "utilCache.couldNotClearCacheNotFoundName", UtilMisc.toMap("name", name), > locale) + "."; > + eventList.add(errMsg); > + } > + } > + request.setAttribute("_EVENT_MESSAGE_LIST_", eventList); > + return "success"; > + } > > /** An HTTP WebEvent handler that updates the named cache > * @param request The HTTP request object for the current JSP or > Servlet request. > > Modified: > ofbiz/ofbiz-framework/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- > ofbiz/ofbiz-framework/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml > (original) > +++ > ofbiz/ofbiz-framework/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml > Fri Nov 2 11:18:52 2018 > @@ -179,6 +179,12 @@ under the License. > <response name="success" type="view" value="FindUtilCache"/> > <response name="error" type="view" value="FindUtilCache"/> > </request-map> > + <request-map uri="ClearSelectedCaches"> > + <security https="true" auth="true"/> > + <event type="java" > path="org.apache.ofbiz.webtools.UtilCacheEvents" > invoke="clearSelectedCachesEvent"/> > + <response name="success" type="view" value="FindUtilCache"/> > + <response name="error" type="view" value="FindUtilCache"/> > + </request-map> > <request-map uri="ForceGarbageCollection"> > <security https="true" auth="true"/> > <event type="service" invoke="forceGarbageCollection"/> > > Modified: > ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheForms.xml > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheForms.xml?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheForms.xml > (original) > +++ ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheForms.xml > Fri Nov 2 11:18:52 2018 > @@ -28,7 +28,10 @@ under the License. > <field name="usedMemory" > title="${uiLabelMap.WebtoolsUsedMemory}"><display/></field> > <field name="totalCacheMemory" > title="${uiLabelMap.WebtoolsCacheMemory}"><display/></field> > </form> > - <grid name="ListCache" list-name="cacheList" > paginate-target="FindUtilCache" separate-columns="true" > odd-row-style="alternate-row" default-table-style="basic-table hover-bar" > header-row-style="header-row-2"> > + > + <form name="ListCache" type="multi" title="" list-name="cacheList" > target="ClearSelectedCaches" paginate-target="FindUtilCache" > + odd-row-style="alternate-row" default-table-style="basic-table > hover-bar" > > + <field name="_rowSubmit" use-when="hasUtilCacheEdit" > title="${uiLabelMap.CommonSelectAll}"><check/></field> > <field name="cacheName" title="${uiLabelMap.WebtoolsCacheName}" > sort-field="true"><display/></field> > <field name="cacheSize" title="${uiLabelMap.WebtoolsSize}" > sort-field="true"><display/></field> > <field name="hitCount" title="${uiLabelMap.WebtoolsHits}" > sort-field="true"><display/></field> > @@ -38,8 +41,22 @@ under the License. > <field name="expireTime" title="${uiLabelMap.WebtoolsExpireTime}" > sort-field="true"><display/></field> > <field name="useSoftReference" > title="${uiLabelMap.WebtoolsUseSoftRef}" > sort-field="true"><display/></field> > <field name="cacheMemory" > title="${uiLabelMap.WebtoolsCacheMemory}" > sort-field="true"><display/></field> > - <field name="cacheMenu" title=" " > use-when="hasUtilCacheEdit"><include-menu name="ListCacheForm" > location="component://webtools/widget/Menus.xml"/></field> > - </grid> > + <field name="findUtilCacheElements" title=" " > use-when="hasUtilCacheEdit" widget-style="buttontext"> > + <hyperlink description="${uiLabelMap.WebtoolsElements}" > target="FindUtilCacheElements" > > + <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > + </hyperlink> > + </field> > + <field name="EditUtilCache" title=" " use-when="hasUtilCacheEdit" > widget-style="buttontext" > > + <hyperlink description="${uiLabelMap.CommonEdit}" > target="EditUtilCache" > > + <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > + </hyperlink> > + </field> > + <field name="FindUtilCacheClear" title=" " > use-when="hasUtilCacheEdit" widget-style="buttontext"> > + <hyperlink description="${uiLabelMap.CommonClear}" > target="FindUtilCacheClear" > > + <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > + </hyperlink> > + </field> > + </form> > > <grid name="ListCacheElements" list-name="cacheElementsList" > paginate-target="FindUtilCacheElements" separate-columns="true" > odd-row-style="alternate-row" default-table-style="basic-table hover-bar" > header-row-style="header-row-2"> > <field name="elementKey" > title="${uiLabelMap.WebtoolsCacheElementKey}" > sort-field="true"><display/></field> > > Modified: > ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheScreens.xml > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheScreens.xml?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheScreens.xml > (original) > +++ ofbiz/ofbiz-framework/trunk/framework/webtools/widget/CacheScreens.xml > Fri Nov 2 11:18:52 2018 > @@ -41,7 +41,7 @@ under the License. > </screenlet> > <screenlet> > <include-menu name="FindCache" > location="component://webtools/widget/Menus.xml"/> > - <include-grid name="ListCache" > location="component://webtools/widget/CacheForms.xml"/> > + <include-form name="ListCache" > location="component://webtools/widget/CacheForms.xml"/> > <include-menu name="FindCache" > location="component://webtools/widget/Menus.xml"/> > </screenlet> > </widgets> > > Modified: ofbiz/ofbiz-framework/trunk/framework/webtools/widget/Menus.xml > URL: > http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webtools/widget/Menus.xml?rev=1845572&r1=1845571&r2=1845572&view=diff > > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/webtools/widget/Menus.xml > (original) > +++ ofbiz/ofbiz-framework/trunk/framework/webtools/widget/Menus.xml Fri > Nov 2 11:18:52 2018 > @@ -144,23 +144,6 @@ under the License. > <link target="FindUtilCache"/> > </menu-item> > </menu> > - <menu name="ListCacheForm" extends="CommonInlineBarMenu" > extends-resource="component://common/widget/CommonMenus.xml"> > - <menu-item name="findUtilCacheElements" > title="${uiLabelMap.WebtoolsElements}"> > - <link target="FindUtilCacheElements"> > - <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > - </link> > - </menu-item> > - <menu-item name="EditUtilCache" title="${uiLabelMap.CommonEdit}"> > - <link target="EditUtilCache"> > - <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > - </link> > - </menu-item> > - <menu-item name="FindUtilCacheClear" > title="${uiLabelMap.CommonClear}"> > - <link target="FindUtilCacheClear" link-type="hidden-form"> > - <parameter param-name="UTIL_CACHE_NAME" > from-field="cacheName"/> > - </link> > - </menu-item> > - </menu> > > <menu name="ArtifactTabBar" extends="CommonTabBarMenu" > extends-resource="component://common/widget/CommonMenus.xml" > selected-menuitem-context-field-name="tabButtonItem"> > @@ -287,6 +270,9 @@ under the License. > <menu-item name="forceGarbageCollection" > title="${uiLabelMap.WebtoolsRunGC}"> > <link target="ForceGarbageCollection"/> > </menu-item> > + <menu-item name="clearSelectedCaches" > title="${uiLabelMap.WebtoolsClearSelectedCaches}"> > + <link target="javascript: document.ListCache.submit()" > url-mode="plain"/> > + </menu-item> > </menu> > > <menu name="CacheElements" extends="CommonButtonBarMenu" > extends-resource="component://common/widget/CommonMenus.xml"> > > >
