svn commit: r1352592 - /ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1352592 - /ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormFactory.java

jacopoc
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);
             }