Author: jacopoc
Date: Thu Jun 21 16:12:59 2012
New Revision: 1352592
URL: http://svn.apache.org/viewvc?rev=1352592&view=rev
Log:
Removed unnecessary synchronized blocks; made UtilCache objects private and
final.
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java?rev=1352592&r1=1352591&r2=1352592&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java
(original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java Thu
Jun 21 16:12:59 2012
@@ -47,8 +47,8 @@ import org.xml.sax.SAXException;
public class FormFactory {
public static final String module = FormFactory.class.getName();
- public static final UtilCache<String, ModelForm> formLocationCache =
UtilCache.createUtilCache("widget.form.locationResource", 0, 0, false);
- public static final UtilCache<String, ModelForm> formWebappCache =
UtilCache.createUtilCache("widget.form.webappResource", 0, 0, false);
+ private static final UtilCache<String, ModelForm> formLocationCache =
UtilCache.createUtilCache("widget.form.locationResource", 0, 0, false);
+ private static final UtilCache<String, ModelForm> formWebappCache =
UtilCache.createUtilCache("widget.form.webappResource", 0, 0, false);
public static Map<String, ModelForm> getFormsFromLocation(String
resourceName, ModelReader entityModelReader, DispatchContext dispatchContext)
throws IOException, SAXException, ParserConfigurationException {
@@ -68,24 +68,19 @@ public class FormFactory {
String cacheKey = resourceName + "#" + formName;
ModelForm modelForm = formLocationCache.get(cacheKey);
if (modelForm == null) {
- synchronized (formLocationCache) {
- modelForm = formLocationCache.get(cacheKey);
- if (modelForm == null) {
- /*
- ClassLoader loader =
Thread.currentThread().getContextClassLoader();
- if (loader == null) {
- loader = FormFactory.class.getClassLoader();
- }
- */
- URL formFileUrl =
FlexibleLocation.resolveLocation(resourceName); //, loader);
- Document formFileDoc =
UtilXml.readXmlDocument(formFileUrl, true, true);
- if (formFileDoc == null) {
- throw new IllegalArgumentException("Could not find
resource [" + resourceName + "]");
- }
- modelForm = createModelForm(formFileDoc,
entityModelReader, dispatchContext, resourceName, formName);
- formLocationCache.put(cacheKey, modelForm);
- }
+ /*
+ ClassLoader loader =
Thread.currentThread().getContextClassLoader();
+ if (loader == null) {
+ loader = FormFactory.class.getClassLoader();
+ }
+ */
+ URL formFileUrl = FlexibleLocation.resolveLocation(resourceName);
//, loader);
+ Document formFileDoc = UtilXml.readXmlDocument(formFileUrl, true,
true);
+ if (formFileDoc == null) {
+ throw new IllegalArgumentException("Could not find resource ["
+ resourceName + "]");
}
+ modelForm = createModelForm(formFileDoc, entityModelReader,
dispatchContext, resourceName, formName);
+ modelForm = formLocationCache.putIfAbsentAndGet(cacheKey,
modelForm);
}
if (modelForm == null) {
throw new IllegalArgumentException("Could not find form with name
[" + formName + "] in class resource [" + resourceName + "]");
@@ -99,20 +94,15 @@ public class FormFactory {
String cacheKey = webappName + "::" + resourceName + "::" + formName;
ModelForm modelForm = formWebappCache.get(cacheKey);
if (modelForm == null) {
- synchronized (formWebappCache) {
- modelForm = formWebappCache.get(cacheKey);
- if (modelForm == null) {
- ServletContext servletContext = (ServletContext)
request.getAttribute("servletContext");
- Delegator delegator = (Delegator)
request.getAttribute("delegator");
- LocalDispatcher dispatcher = (LocalDispatcher)
request.getAttribute("dispatcher");
- URL formFileUrl = servletContext.getResource(resourceName);
- Document formFileDoc =
UtilXml.readXmlDocument(formFileUrl, true, true);
- Element formElement =
UtilXml.firstChildElement(formFileDoc.getDocumentElement(), "form", "name",
formName);
- modelForm = new ModelForm(formElement,
delegator.getModelReader(), dispatcher.getDispatchContext());
- modelForm.setFormLocation(resourceName);
- formWebappCache.put(cacheKey, modelForm);
- }
- }
+ ServletContext servletContext = (ServletContext)
request.getAttribute("servletContext");
+ Delegator delegator = (Delegator)
request.getAttribute("delegator");
+ LocalDispatcher dispatcher = (LocalDispatcher)
request.getAttribute("dispatcher");
+ URL formFileUrl = servletContext.getResource(resourceName);
+ Document formFileDoc = UtilXml.readXmlDocument(formFileUrl, true,
true);
+ Element formElement =
UtilXml.firstChildElement(formFileDoc.getDocumentElement(), "form", "name",
formName);
+ modelForm = new ModelForm(formElement, delegator.getModelReader(),
dispatcher.getDispatchContext());
+ modelForm.setFormLocation(resourceName);
+ modelForm = formWebappCache.putIfAbsentAndGet(cacheKey, modelForm);
}
if (modelForm == null) {
throw new IllegalArgumentException("Could not find form with name
[" + formName + "] in webapp resource [" + resourceName + "] in the webapp [" +
webappName + "]");
@@ -131,13 +121,8 @@ public class FormFactory {
String cacheKey = formLocation + "#" + formName;
ModelForm modelForm = formLocationCache.get(cacheKey);
if (modelForm == null) {
- synchronized (formLocationCache) {
- modelForm = formLocationCache.get(cacheKey);
- if (modelForm == null) {
- modelForm = createModelForm(formElement,
entityModelReader, dispatchContext, formLocation, formName);
- formLocationCache.put(cacheKey, modelForm);
- }
- }
+ modelForm = createModelForm(formElement,
entityModelReader, dispatchContext, formLocation, formName);
+ modelForm = formLocationCache.putIfAbsentAndGet(cacheKey,
modelForm);
}
modelFormMap.put(formName, modelForm);
}