You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2012/05/29 14:24:20 UTC

svn commit: r1343696 - in /ofbiz/trunk/applications: order/src/org/ofbiz/order/order/ party/src/org/ofbiz/party/content/ product/src/org/ofbiz/product/config/ product/src/org/ofbiz/product/product/ workeffort/src/org/ofbiz/workeffort/content/

Author: jacopoc
Date: Tue May 29 12:24:19 2012
New Revision: 1343696

URL: http://svn.apache.org/viewvc?rev=1343696&view=rev
Log:
Improved code that manages the cache:
* protected the UtilCache object (static field) by making it private and final
* removed unnecessary synchronization
* removed unnecessary null checks
* moved code that initializes static cache fields out of constructors
* replaced get+null check+get with get+null check
* replaced containsKey + null check + get with get + null check
* replaced some put with putIfAbsentAndGet


Modified:
    ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java
    ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
    ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWorker.java
    ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductContentWrapper.java
    ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductPromoContentWrapper.java
    ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/content/WorkEffortContentWrapper.java

Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java Tue May 29 12:24:19 2012
@@ -50,7 +50,7 @@ public class OrderContentWrapper {
     public static final String module = OrderContentWrapper.class.getName();
     public static final String SEPARATOR = "::";    // cache key separator
 
-    public static UtilCache<String, String> orderContentCache;
+    private static final UtilCache<String, String> orderContentCache = UtilCache.createUtilCache("order.content", true); // use soft reference to free up memory if needed
 
     public static OrderContentWrapper makeOrderContentWrapper(GenericValue order, HttpServletRequest request) {
         return new OrderContentWrapper(order, request);
@@ -66,9 +66,6 @@ public class OrderContentWrapper {
         this.order = order;
         this.locale = locale;
         this.mimeTypeId = mimeTypeId;
-        if (orderContentCache == null) {
-            orderContentCache = UtilCache.createUtilCache("order.content", true);     // use soft reference to free up memory if needed
-        }
     }
 
     public OrderContentWrapper(GenericValue order, HttpServletRequest request) {
@@ -76,9 +73,6 @@ public class OrderContentWrapper {
         this.order = order;
         this.locale = UtilHttp.getLocale(request);
         this.mimeTypeId = "text/html";
-        if (orderContentCache == null) {
-            orderContentCache = UtilCache.createUtilCache("order.content", true);     // use soft reference to free up memory if needed
-        }
     }
 
     public String get(String orderContentTypeId) {
@@ -102,17 +96,16 @@ public class OrderContentWrapper {
 
         String cacheKey = orderContentTypeId + SEPARATOR + locale + SEPARATOR + mimeTypeId + SEPARATOR + order.get("orderId") + SEPARATOR + orderItemSeqId;
         try {
-            if (orderContentCache != null && orderContentCache.get(cacheKey) != null) {
-                return orderContentCache.get(cacheKey);
+            String cachedValue = orderContentCache.get(cacheKey);
+            if (cachedValue != null) {
+                return cachedValue;
             }
 
             Writer outWriter = new StringWriter();
             getOrderContentAsText(null, null, order, orderContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter);
             String outString = outWriter.toString();
             if (outString.length() > 0) {
-                if (orderContentCache != null) {
-                    orderContentCache.put(cacheKey, outString);
-                }
+                outString = orderContentCache.putIfAbsentAndGet(cacheKey, outString);
             }
             return outString;
 

Modified: ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java (original)
+++ ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java Tue May 29 12:24:19 2012
@@ -47,7 +47,7 @@ public class PartyContentWrapper impleme
     public static final String module = PartyContentWrapper.class.getName();
     public static final String CACHE_KEY_SEPARATOR = "::";
 
-    public static UtilCache<String, String> partyContentCache = UtilCache.createUtilCache("party.content.rendered", true);
+    private static final UtilCache<String, String> partyContentCache = UtilCache.createUtilCache("party.content.rendered", true);
 
     protected LocalDispatcher dispatcher;
     protected GenericValue party;
@@ -135,8 +135,11 @@ public class PartyContentWrapper impleme
         }
 
         try {
-            if (useCache && partyContentCache.get(cacheKey) != null) {
-                return partyContentCache.get(cacheKey);
+            if (useCache) {
+                String cachedValue = partyContentCache.get(cacheKey);
+                if (cachedValue != null) {
+                    return cachedValue;
+                }
             }
 
             Writer outWriter = new StringWriter();
@@ -144,10 +147,7 @@ public class PartyContentWrapper impleme
 
             String outString = outWriter.toString();
             if (outString.length() > 0) {
-                if (partyContentCache != null) {
-                    partyContentCache.put(cacheKey, outString);
-                }
-                return outString;
+                return partyContentCache.putIfAbsentAndGet(cacheKey, outString);
             } else {
                 String candidateOut = party.getModelEntity().isField(candidateFieldName) ? party.getString(candidateFieldName): "";
                 return candidateOut == null ? "" : candidateOut;

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWorker.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWorker.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWorker.java Tue May 29 12:24:19 2012
@@ -52,7 +52,7 @@ public class ProductConfigWorker {
     public static final String resource = "ProductUiLabels";
     public static final String SEPARATOR = "::";    // cache key separator
 
-    public static UtilCache<String, ProductConfigWrapper> productConfigCache = UtilCache.createUtilCache("product.config", true);     // use soft reference to free up memory if needed
+    private static final UtilCache<String, ProductConfigWrapper> productConfigCache = UtilCache.createUtilCache("product.config", true);     // use soft reference to free up memory if needed
 
     public static ProductConfigWrapper getProductConfigWrapper(String productId, String currencyUomId, HttpServletRequest request) {
         ProductConfigWrapper configWrapper = null;
@@ -65,15 +65,16 @@ public class ProductConfigWorker {
              * productId::catalogId::webSiteId::currencyUomId, or whatever the SEPARATOR is defined above to be.
              */
             String cacheKey = productId + SEPARATOR + productStoreId + SEPARATOR + catalogId + SEPARATOR + webSiteId + SEPARATOR + currencyUomId;
-            if (!productConfigCache.containsKey(cacheKey)) {
+            configWrapper = productConfigCache.get(cacheKey);
+            if (configWrapper == null) {
                 configWrapper = new ProductConfigWrapper((Delegator)request.getAttribute("delegator"),
                                                          (LocalDispatcher)request.getAttribute("dispatcher"),
                                                          productId, productStoreId, catalogId, webSiteId,
                                                          currencyUomId, UtilHttp.getLocale(request),
                                                          autoUserLogin);
-                productConfigCache.put(cacheKey, new ProductConfigWrapper(configWrapper));
+                configWrapper = productConfigCache.putIfAbsentAndGet(cacheKey, new ProductConfigWrapper(configWrapper));
             } else {
-                configWrapper = new ProductConfigWrapper(productConfigCache.get(cacheKey));
+                configWrapper = new ProductConfigWrapper(configWrapper);
             }
         } catch (ProductConfigWrapperException we) {
             configWrapper = null;

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductContentWrapper.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductContentWrapper.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductContentWrapper.java Tue May 29 12:24:19 2012
@@ -54,7 +54,7 @@ public class ProductContentWrapper imple
     public static final String module = ProductContentWrapper.class.getName();
     public static final String SEPARATOR = "::";    // cache key separator
 
-    public static UtilCache<String, String> productContentCache = UtilCache.createUtilCache("product.content.rendered", true);
+    private static final UtilCache<String, String> productContentCache = UtilCache.createUtilCache("product.content.rendered", true);
 
     public static ProductContentWrapper makeProductContentWrapper(GenericValue product, HttpServletRequest request) {
         return new ProductContentWrapper(product, request);
@@ -107,18 +107,16 @@ public class ProductContentWrapper imple
          */
         String cacheKey = productContentTypeId + SEPARATOR + locale + SEPARATOR + mimeTypeId + SEPARATOR + product.get("productId");
         try {
-            if (productContentCache.get(cacheKey) != null) {
-                return productContentCache.get(cacheKey);
+            String cachedValue = productContentCache.get(cacheKey);
+            if (cachedValue != null) {
+                return cachedValue;
             }
 
             Writer outWriter = new StringWriter();
             getProductContentAsText(null, product, productContentTypeId, locale, mimeTypeId, partyId, roleTypeId, delegator, dispatcher, outWriter);
             String outString = outWriter.toString();
             if (outString.length() > 0) {
-                if (productContentCache != null) {
-                    productContentCache.put(cacheKey, outString);
-                }
-                return outString;
+                return productContentCache.putIfAbsentAndGet(cacheKey, outString);
             } else {
                 String candidateOut = product.getModelEntity().isField(candidateFieldName) ? product.getString(candidateFieldName): "";
                 return candidateOut == null? "" : candidateOut;

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductPromoContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductPromoContentWrapper.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductPromoContentWrapper.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductPromoContentWrapper.java Tue May 29 12:24:19 2012
@@ -58,7 +58,7 @@ public class ProductPromoContentWrapper 
     public static final String module = ProductPromoContentWrapper.class.getName();
     public static final String SEPARATOR = "::";    // cache key separator
 
-    public static UtilCache<String, String> productPromoContentCache = UtilCache.createUtilCache("product.promo.content.rendered", true);
+    private static final UtilCache<String, String> productPromoContentCache = UtilCache.createUtilCache("product.promo.content.rendered", true);
 
     public static ProductPromoContentWrapper makeProductPromoContentWrapper(GenericValue productPromo, HttpServletRequest request) {
         return new ProductPromoContentWrapper(productPromo, request);
@@ -111,18 +111,16 @@ public class ProductPromoContentWrapper 
          */
         String cacheKey = productPromoContentTypeId + SEPARATOR + locale + SEPARATOR + mimeTypeId + SEPARATOR + productPromo.get("productPromoId");
         try {
-            if (productPromoContentCache.get(cacheKey) != null) {
-                return productPromoContentCache.get(cacheKey);
+            String cachedValue = productPromoContentCache.get(cacheKey);
+            if (cachedValue != null) {
+                return cachedValue;
             }
 
             Writer outWriter = new StringWriter();
             getProductPromoContentAsText(null, productPromo, productPromoContentTypeId, locale, mimeTypeId, partyId, roleTypeId, delegator, dispatcher, outWriter);
             String outString = outWriter.toString();
             if (outString.length() > 0) {
-                if (productPromoContentCache != null) {
-                    productPromoContentCache.put(cacheKey, outString);
-                }
-                return outString;
+                return productPromoContentCache.putIfAbsentAndGet(cacheKey, outString);
             } else {
                 String candidateOut = productPromo.getModelEntity().isField(candidateFieldName) ? productPromo.getString(candidateFieldName): "";
                 return candidateOut == null? "" : candidateOut;

Modified: ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/content/WorkEffortContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/content/WorkEffortContentWrapper.java?rev=1343696&r1=1343695&r2=1343696&view=diff
==============================================================================
--- ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/content/WorkEffortContentWrapper.java (original)
+++ ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/content/WorkEffortContentWrapper.java Tue May 29 12:24:19 2012
@@ -52,7 +52,7 @@ public class WorkEffortContentWrapper im
     public static final String module = WorkEffortContentWrapper.class.getName();
     public static final String CACHE_KEY_SEPARATOR = "::";
 
-    public static UtilCache<String, String> workEffortContentCache = UtilCache.createUtilCache("workeffort.content.rendered", true);
+    private static final UtilCache<String, String> workEffortContentCache = UtilCache.createUtilCache("workeffort.content.rendered", true);
 
     protected LocalDispatcher dispatcher;
     protected GenericValue workEffort;
@@ -236,18 +236,18 @@ public class WorkEffortContentWrapper im
         }
 
         try {
-            if (useCache && workEffortContentCache.get(cacheKey) != null) {
-                return workEffortContentCache.get(cacheKey);
+            if (useCache) {
+                String cachedValue = workEffortContentCache.get(cacheKey);
+                if (cachedValue != null) {
+                    return cachedValue;
+                }
             }
 
             Writer outWriter = new StringWriter();
             getWorkEffortContentAsText(contentId, null, workEffort, workEffortContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter);
             String outString = outWriter.toString();
             if (outString.length() > 0) {
-                if (workEffortContentCache != null) {
-                    workEffortContentCache.put(cacheKey, outString);
-                }
-                return outString;
+                return workEffortContentCache.putIfAbsentAndGet(cacheKey, outString);
             } else {
                 String candidateOut = workEffort.getModelEntity().isField(candidateFieldName) ? workEffort.getString(candidateFieldName): "";
                 return candidateOut == null? "" : candidateOut;