Author: jleroux
Date: Wed May 18 11:52:44 2016
New Revision: 1744396
URL: http://svn.apache.org/viewvc?rev=1744396&view=rev
Log:
An enhanced patch from Ingo Wolfmayr for "CategoryContent & ProductContent
cachekey problem on multi tenant environment"
https://issues.apache.org/jira/browse/OFBIZ-7071
When creating a blog-entry with empty article text, it is not possible to add
update the article. Content entry is created but not assigned to contentId of
blog-entry. The attached patch fixes this.
jleroux: I extended to all possible cases in "content contex"t and checked that
there was no cases outside "content context"
Modified:
ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderContentWrapper.java
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryContentWrapper.java
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.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
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=1744396&r1=1744395&r2=1744396&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
Wed May 18 11:52:44 2016
@@ -98,7 +98,7 @@ public class OrderContentWrapper impleme
String orderItemSeqId = (order.getEntityName().equals("OrderItem")?
order.getString("orderItemSeqId"): "_NA_");
- String cacheKey = orderContentTypeId + SEPARATOR + locale + SEPARATOR
+ mimeTypeId + SEPARATOR + order.get("orderId") + SEPARATOR + orderItemSeqId +
SEPARATOR + encoderType;
+ String cacheKey = orderContentTypeId + SEPARATOR + locale + SEPARATOR
+ mimeTypeId + SEPARATOR + order.get("orderId") + SEPARATOR + orderItemSeqId +
SEPARATOR + encoderType + SEPARATOR + delegator;
try {
String cachedValue = orderContentCache.get(cacheKey);
if (cachedValue != null) {
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryContentWrapper.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryContentWrapper.java?rev=1744396&r1=1744395&r2=1744396&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryContentWrapper.java
(original)
+++
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryContentWrapper.java
Wed May 18 11:52:44 2016
@@ -97,7 +97,7 @@ public class CategoryContentWrapper impl
public static String getProductCategoryContentAsText(GenericValue
productCategory, String prodCatContentTypeId, Locale locale, String mimeTypeId,
Delegator delegator, LocalDispatcher dispatcher, String encoderType) {
String candidateFieldName =
ModelUtil.dbNameToVarName(prodCatContentTypeId);
UtilCodec.SimpleEncoder encoder = UtilCodec.getEncoder(encoderType);
- String cacheKey = prodCatContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productCategory.get("productCategoryId") +
SEPARATOR + encoderType;
+ String cacheKey = prodCatContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productCategory.get("productCategoryId") +
SEPARATOR + encoderType + SEPARATOR + delegator;
try {
String cachedValue = categoryContentCache.get(cacheKey);
if (cachedValue != null) {
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.java?rev=1744396&r1=1744395&r2=1744396&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.java
(original)
+++
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.java
Wed May 18 11:52:44 2016
@@ -120,7 +120,7 @@ public class ProductConfigItemContentWra
public static String getProductConfigItemContentAsText(GenericValue
productConfigItem, String confItemContentTypeId, Locale locale, String
mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, String
encoderType) {
UtilCodec.SimpleEncoder encoder = UtilCodec.getEncoder(encoderType);
String candidateFieldName =
ModelUtil.dbNameToVarName(confItemContentTypeId);
- String cacheKey = confItemContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productConfigItem.get("configItemId") +
SEPARATOR + encoderType;
+ String cacheKey = confItemContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productConfigItem.get("configItemId") +
SEPARATOR + encoderType + SEPARATOR + delegator;
try {
String cachedValue = configItemContentCache.get(cacheKey);
if (cachedValue != null) {
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=1744396&r1=1744395&r2=1744396&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
Wed May 18 11:52:44 2016
@@ -18,11 +18,11 @@
*******************************************************************************/
package org.ofbiz.product.config;
+import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
@@ -31,6 +31,7 @@ import org.ofbiz.base.util.UtilGenerics;
import org.ofbiz.base.util.UtilHttp;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.cache.UtilCache;
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
@@ -42,7 +43,6 @@ import org.ofbiz.product.product.Product
import org.ofbiz.product.store.ProductStoreWorker;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.webapp.website.WebSiteWorker;
-import org.ofbiz.base.util.cache.UtilCache;
/**
* Product Config Worker class to reduce code in templates.
@@ -65,7 +65,8 @@ public class ProductConfigWorker {
/* caching: there is one cache created, "product.config" Each
product's config wrapper is cached with a key of
* productId::catalogId::webSiteId::currencyUomId, or whatever the
SEPARATOR is defined above to be.
*/
- String cacheKey = productId + SEPARATOR + productStoreId +
SEPARATOR + catalogId + SEPARATOR + webSiteId + SEPARATOR + currencyUomId;
+ Delegator delegator = (Delegator)
request.getAttribute("delegator");
+ String cacheKey = productId + SEPARATOR + productStoreId +
SEPARATOR + catalogId + SEPARATOR + webSiteId + SEPARATOR + currencyUomId +
SEPARATOR + delegator;
configWrapper = productConfigCache.get(cacheKey);
if (configWrapper == null) {
configWrapper = new
ProductConfigWrapper((Delegator)request.getAttribute("delegator"),
@@ -345,7 +346,7 @@ public class ProductConfigWorker {
List<GenericValue> components =
oneOption.getComponents();
for (GenericValue component: components) {
if (oneOption.isVirtualComponent(component) &&
UtilValidate.isNotEmpty(componentOptions)) {
- String componentOption =
componentOptions.get(component.getString("productId"));
+ String componentOption =
componentOptions.get(component.getString("productId"));
GenericValue configOptionProductOption =
delegator.makeValue("ConfigOptionProductOption");
configOptionProductOption.put("configId",
configId);
configOptionProductOption.put("configItemId",
configItemId);
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=1744396&r1=1744395&r2=1744396&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
Wed May 18 11:52:44 2016
@@ -109,7 +109,7 @@ public class ProductContentWrapper imple
/* caching: there is one cache created, "product.content" Each
product's content is cached with a key of
* contentTypeId::locale::mimeType::productId, or whatever the
SEPARATOR is defined above to be.
*/
- String cacheKey = productContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + product.get("productId") + SEPARATOR +
encoderType;
+ String cacheKey = productContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + product.get("productId") + SEPARATOR +
encoderType + SEPARATOR + delegator;
try {
String cachedValue = productContentCache.get(cacheKey);
if (cachedValue != null) {
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=1744396&r1=1744395&r2=1744396&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
Wed May 18 11:52:44 2016
@@ -114,7 +114,7 @@ public class ProductPromoContentWrapper
/* caching: there is one cache created, "product.promo.content" Each
productPromo's content is cached with a key of
* contentTypeId::locale::mimeType::productPromoId, or whatever the
SEPARATOR is defined above to be.
*/
- String cacheKey = productPromoContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productPromo.get("productPromoId") +
SEPARATOR + encoderType;
+ String cacheKey = productPromoContentTypeId + SEPARATOR + locale +
SEPARATOR + mimeTypeId + SEPARATOR + productPromo.get("productPromoId") +
SEPARATOR + encoderType + SEPARATOR + delegator;
try {
String cachedValue = productPromoContentCache.get(cacheKey);
if (cachedValue != null) {