|
Author: jacopoc
Date: Tue May 29 14:01:45 2012 New Revision: 1343729 URL: http://svn.apache.org/viewvc?rev=1343729&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/base/src/org/ofbiz/base/config/ResourceLoader.java Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/config/ResourceLoader.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/config/ResourceLoader.java?rev=1343729&r1=1343728&r2=1343729&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/config/ResourceLoader.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/config/ResourceLoader.java Tue May 29 14:01:45 2012 @@ -35,7 +35,7 @@ import org.w3c.dom.Element; public abstract class ResourceLoader { public static final String module = ResourceLoader.class.getName(); - protected static UtilCache<String, Object> loaderCache = UtilCache.createUtilCache("resource.ResourceLoaders", 0, 0); + private static final UtilCache<String, Object> loaderCache = UtilCache.createUtilCache("resource.ResourceLoaders", 0, 0); protected String name; protected String prefix; @@ -61,19 +61,14 @@ public abstract class ResourceLoader { ResourceLoader loader = (ResourceLoader) loaderCache.get(xmlFilename + "::" + loaderName); if (loader == null) { - synchronized (ResourceLoader.class) { - loader = (ResourceLoader) loaderCache.get(xmlFilename + "::" + loaderName); - if (loader == null) { - Element rootElement = getXmlRootElement(xmlFilename); - - Element loaderElement = UtilXml.firstChildElement(rootElement, "resource-loader", "name", loaderName); - - loader = makeLoader(loaderElement); - - if (loader != null) { - loaderCache.put(xmlFilename + "::" + loaderName, loader); - } - } + Element rootElement = getXmlRootElement(xmlFilename); + + Element loaderElement = UtilXml.firstChildElement(rootElement, "resource-loader", "name", loaderName); + + loader = makeLoader(loaderElement); + + if (loader != null) { + loader = (ResourceLoader) loaderCache.putIfAbsentAndGet(xmlFilename + "::" + loaderName, loader); } } @@ -98,29 +93,24 @@ public abstract class ResourceLoader { Document document = (Document) loaderCache.get(xmlFilename); if (document == null) { - synchronized (ResourceLoader.class) { - document = (Document) loaderCache.get(xmlFilename); - if (document == null) { - URL confUrl = UtilURL.fromResource(xmlFilename); - - if (confUrl == null) { - throw new GenericConfigException("ERROR: could not find the [" + xmlFilename + "] XML file on the classpath"); - } - - try { - document = UtilXml.readXmlDocument(confUrl); - } catch (org.xml.sax.SAXException e) { - throw new GenericConfigException("Error reading " + xmlFilename + "", e); - } catch (javax.xml.parsers.ParserConfigurationException e) { - throw new GenericConfigException("Error reading " + xmlFilename + "", e); - } catch (java.io.IOException e) { - throw new GenericConfigException("Error reading " + xmlFilename + "", e); - } - - if (document != null) { - loaderCache.put(xmlFilename, document); - } - } + URL confUrl = UtilURL.fromResource(xmlFilename); + + if (confUrl == null) { + throw new GenericConfigException("ERROR: could not find the [" + xmlFilename + "] XML file on the classpath"); + } + + try { + document = UtilXml.readXmlDocument(confUrl); + } catch (org.xml.sax.SAXException e) { + throw new GenericConfigException("Error reading " + xmlFilename + "", e); + } catch (javax.xml.parsers.ParserConfigurationException e) { + throw new GenericConfigException("Error reading " + xmlFilename + "", e); + } catch (java.io.IOException e) { + throw new GenericConfigException("Error reading " + xmlFilename + "", e); + } + + if (document != null) { + document = (Document) loaderCache.putIfAbsentAndGet(xmlFilename, document); } } return document; |
| Free forum by Nabble | Edit this page |
