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;