|
Author: jacopoc
Date: Tue May 29 13:46:49 2012 New Revision: 1343724 URL: http://svn.apache.org/viewvc?rev=1343724&view=rev Log: Improved code that manages the cache: * protected the UtilCache object (static field) by making it private and final * removed unnecessary synchronization Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/BsfEventHandler.java Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/BsfEventHandler.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/BsfEventHandler.java?rev=1343724&r1=1343723&r2=1343724&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/BsfEventHandler.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/BsfEventHandler.java Tue May 29 13:46:49 2012 @@ -43,7 +43,7 @@ import org.ofbiz.webapp.control.ConfigXM public class BsfEventHandler implements EventHandler { public static final String module = BsfEventHandler.class.getName(); - public static UtilCache<String, String> eventCache = UtilCache.createUtilCache("webapp.BsfEvents"); + private static final UtilCache<String, String> eventCache = UtilCache.createUtilCache("webapp.BsfEvents"); /** * @see org.ofbiz.webapp.event.EventHandler#init(javax.servlet.ServletContext) @@ -85,38 +85,30 @@ public class BsfEventHandler implements cacheName = event.invoke; scriptString = eventCache.get(cacheName); if (scriptString == null) { - synchronized(eventCache) { - if (scriptString == null) { - if (Debug.verboseOn()) { - Debug.logVerbose("Loading BSF Script at location: " + cacheName, module); - } - URL scriptUrl = FlexibleLocation.resolveLocation(cacheName); - if (scriptUrl == null) { - throw new EventHandlerException("BSF script not found at location [" + cacheName + "]"); - } - scriptStream = scriptUrl.openStream(); - scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream)); - scriptStream.close(); - eventCache.put(cacheName, scriptString); - } + if (Debug.verboseOn()) { + Debug.logVerbose("Loading BSF Script at location: " + cacheName, module); } + URL scriptUrl = FlexibleLocation.resolveLocation(cacheName); + if (scriptUrl == null) { + throw new EventHandlerException("BSF script not found at location [" + cacheName + "]"); + } + scriptStream = scriptUrl.openStream(); + scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream)); + scriptStream.close(); + scriptString = eventCache.putIfAbsentAndGet(cacheName, scriptString); } } else { // we are a script in the webapp - load by resource cacheName = context.getServletContextName() + ":" + event.path + event.invoke; scriptString = eventCache.get(cacheName); if (scriptString == null) { - synchronized(eventCache) { - if (scriptString == null) { - scriptStream = context.getResourceAsStream(event.path + event.invoke); - if (scriptStream == null) { - throw new EventHandlerException("Could not find BSF script file in webapp context: " + event.path + event.invoke); - } - scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream)); - scriptStream.close(); - eventCache.put(cacheName, scriptString); - } + scriptStream = context.getResourceAsStream(event.path + event.invoke); + if (scriptStream == null) { + throw new EventHandlerException("Could not find BSF script file in webapp context: " + event.path + event.invoke); } + scriptString = IOUtils.getStringFromReader(new InputStreamReader(scriptStream)); + scriptStream.close(); + scriptString = eventCache.putIfAbsentAndGet(cacheName, scriptString); } } |
| Free forum by Nabble | Edit this page |
