Author: jleroux
Date: Sat Oct 31 05:39:13 2015
New Revision: 1711578
URL: http://svn.apache.org/viewvc?rev=1711578&view=rev
Log:
A modified patch from Ritu Raj Lakhera for "Enhancement in the content
wrappers" https://issues.apache.org/jira/browse/OFBIZ-6701
Some enhancements in the content wrapper JAVA classes. We used these
enhancements in our project and observed good change in website performance.
1. If content is empty string or null then method 'get*ContentAsText' are not
caching the result.
And thus every time this method is making SQL call even no content in database.
Method should cache the empty string and null as result.
2. Overloaded method 'get*ContentAsText' is also using cache method of
Delegator for '*Content' entity selection and passing 'true' to use cache for
'*Worker.renderContentAsText' method. This approach is making unnecessary
copies of cache for content.
I Content wrapper cache
II *Content entity cache
III Content, Dataresource, ElectrocText and etc... entities
cache(ContentWorker.renderContentAsText)
If I again call the 'get*ContentAsText' method then this will return the result
from content wrapper cache. So there is no use of *Content, Content,
Dataresource and ElectrocText cache. And these cache also filling the memory of
application.
jleroux: Ritu Raj initially provided the changes only for the product content
wrapper saying "We also applied the same logic for category content wrapper." I
asked him if he could provide a patch for all content wrappers. I completed the
parts for Category and Workeffort content wrapper which missed some lines.
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/category/CategoryContentWrapper.java
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigItemContentWrapper.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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -104,10 +104,14 @@ public class OrderContentWrapper impleme
}
Writer outWriter = new StringWriter();
- getOrderContentAsText(null, null, order, orderContentTypeId,
locale, mimeTypeId, delegator, dispatcher, outWriter);
+ getOrderContentAsText(null, null, order, orderContentTypeId,
locale, mimeTypeId, delegator, dispatcher, outWriter, false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- outString = orderContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
+ if (UtilValidate.isEmpty(outString)) {
+ outString = outString == null? "" : outString;
+ }
+ outString = encoder.encode(outString);
+ if (orderContentCache != null) {
+ orderContentCache.put(cacheKey, outString);
}
return outString;
@@ -121,6 +125,10 @@ public class OrderContentWrapper impleme
}
public static void getOrderContentAsText(String orderId, String
orderItemSeqId, GenericValue order, String orderContentTypeId, Locale locale,
String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer
outWriter) throws GeneralException, IOException {
+ getOrderContentAsText(orderId, orderItemSeqId, order,
orderContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter, true);
+ }
+
+ public static void getOrderContentAsText(String orderId, String
orderItemSeqId, GenericValue order, String orderContentTypeId, Locale locale,
String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer
outWriter, boolean cache) throws GeneralException, IOException {
if (orderId == null && order != null) {
orderId = order.getString("orderId");
}
@@ -141,13 +149,13 @@ public class OrderContentWrapper impleme
"orderItemSeqId", orderItemSeqId,
"orderContentTypeId", orderContentTypeId)
.orderBy("-fromDate")
- .cache().filterByDate().queryFirst();
+ .cache(cache).filterByDate().queryFirst();
if (orderContent != null) {
// when rendering the order content, always include the
OrderHeader/OrderItem and OrderContent records that this comes from
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("order", order);
inContext.put("orderContent", orderContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
orderContent.getString("contentId"), outWriter, inContext, locale, mimeTypeId,
null, null, false);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
orderContent.getString("contentId"), outWriter, inContext, locale, mimeTypeId,
null, null, cache);
}
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -153,15 +153,18 @@ public class PartyContentWrapper impleme
}
Writer outWriter = new StringWriter();
- getPartyContentAsText(contentId, party.getString("partyId"),
party, partyContentTypeId, locale, mimeTypeId, delegator, dispatcher,
outWriter);
+ getPartyContentAsText(contentId, party.getString("partyId"),
party, partyContentTypeId, locale, mimeTypeId, delegator, dispatcher,
outWriter, false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- return partyContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- } else {
- String candidateOut =
party.getModelEntity().isField(candidateFieldName) ?
party.getString(candidateFieldName): "";
- return candidateOut == null? "" : encoder.encode(candidateOut);
+ if (UtilValidate.isEmpty(outString)) {
+ outString = party.getModelEntity().isField(candidateFieldName)
? party.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
}
+ outString = encoder.encode(outString);
+ if (partyContentCache != null) {
+ partyContentCache.put(cacheKey, outString);
+ }
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering PartyContent, inserting empty
String", module);
String candidateOut =
party.getModelEntity().isField(candidateFieldName) ?
party.getString(candidateFieldName): "";
@@ -174,6 +177,10 @@ public class PartyContentWrapper impleme
}
public static void getPartyContentAsText(String contentId, String partyId,
GenericValue party, String partyContentTypeId, Locale locale, String
mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer outWriter)
throws GeneralException, IOException {
+ getPartyContentAsText(contentId, partyId, party, partyContentTypeId,
locale, mimeTypeId, delegator, dispatcher, outWriter, true);
+ }
+
+ public static void getPartyContentAsText(String contentId, String partyId,
GenericValue party, String partyContentTypeId, Locale locale, String
mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer outWriter,
boolean cache) throws GeneralException, IOException {
if (partyId == null && party != null) {
partyId = party.getString("partyId");
}
@@ -227,7 +234,7 @@ public class PartyContentWrapper impleme
// otherwise a content field
GenericValue partyContent;
if (contentId != null) {
- partyContent =
EntityQuery.use(delegator).from("PartyContent").where("partyId", partyId,
"contentId", contentId).cache().queryOne();
+ partyContent =
EntityQuery.use(delegator).from("PartyContent").where("partyId", partyId,
"contentId", contentId).cache(cache).queryOne();
} else {
partyContent = getFirstPartyContentByType(partyId, party,
partyContentTypeId, delegator);
}
@@ -236,7 +243,7 @@ public class PartyContentWrapper impleme
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("party", party);
inContext.put("partyContent", partyContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
partyContent.getString("contentId"), outWriter, inContext, locale, mimeTypeId,
null, null, false);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
partyContent.getString("contentId"), outWriter, inContext, locale, mimeTypeId,
null, null, cache);
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -102,14 +102,17 @@ public class CategoryContentWrapper impl
return cachedValue;
}
Writer outWriter = new StringWriter();
- getProductCategoryContentAsText(null, productCategory,
prodCatContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter);
+ getProductCategoryContentAsText(null, productCategory,
prodCatContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- outString = categoryContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- return encoder.encode(outString);
- } else {
- return null;
+ if (UtilValidate.isEmpty(outString)) {
+ outString =
productCategory.getModelEntity().isField(candidateFieldName) ?
productCategory.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
}
+ outString = encoder.encode(outString);
+ if (categoryContentCache != null) {
+ categoryContentCache.put(cacheKey, outString);
+ }
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering CategoryContent, inserting
empty String", module);
return productCategory.getString(candidateFieldName);
@@ -120,6 +123,10 @@ public class CategoryContentWrapper impl
}
public static void getProductCategoryContentAsText(String
productCategoryId, GenericValue productCategory, String prodCatContentTypeId,
Locale locale, String mimeTypeId, Delegator delegator, LocalDispatcher
dispatcher, Writer outWriter) throws GeneralException, IOException {
+ getProductCategoryContentAsText(null, productCategory,
prodCatContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
true);
+ }
+
+ public static void getProductCategoryContentAsText(String
productCategoryId, GenericValue productCategory, String prodCatContentTypeId,
Locale locale, String mimeTypeId, Delegator delegator, LocalDispatcher
dispatcher, Writer outWriter, boolean cache) throws GeneralException,
IOException {
if (productCategoryId == null && productCategory != null) {
productCategoryId = productCategory.getString("productCategoryId");
}
@@ -151,7 +158,7 @@ public class CategoryContentWrapper impl
}
}
- List<GenericValue> categoryContentList =
EntityQuery.use(delegator).from("ProductCategoryContent").where("productCategoryId",
productCategoryId, "prodCatContentTypeId",
prodCatContentTypeId).orderBy("-fromDate").cache(true).queryList();
+ List<GenericValue> categoryContentList =
EntityQuery.use(delegator).from("ProductCategoryContent").where("productCategoryId",
productCategoryId, "prodCatContentTypeId",
prodCatContentTypeId).orderBy("-fromDate").cache(cache).queryList();
categoryContentList = EntityUtil.filterByDate(categoryContentList);
GenericValue categoryContent = null;
@@ -160,7 +167,7 @@ public class CategoryContentWrapper impl
if ( sessionLocale == null ) sessionLocale = fallbackLocale;
// look up all content found for locale
for( GenericValue currentContent: categoryContentList ) {
- GenericValue content =
EntityQuery.use(delegator).from("Content").where("contentId",
currentContent.getString("contentId")).cache().queryOne();
+ GenericValue content =
EntityQuery.use(delegator).from("Content").where("contentId",
currentContent.getString("contentId")).cache(cache).queryOne();
if ( sessionLocale.equals(content.getString("localeString")) ) {
// valid locale found
categoryContent = currentContent;
@@ -175,7 +182,7 @@ public class CategoryContentWrapper impl
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("productCategory", productCategory);
inContext.put("categoryContent", categoryContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
categoryContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, null, null, true);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
categoryContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, null, null, cache);
}
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -125,15 +125,17 @@ public class ProductConfigItemContentWra
return cachedValue;
}
Writer outWriter = new StringWriter();
- getProductConfigItemContentAsText(null, productConfigItem,
confItemContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter);
+ getProductConfigItemContentAsText(null, productConfigItem,
confItemContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- outString = configItemContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- return encoder.encode(outString);
- } else {
- String candidateOut =
productConfigItem.getModelEntity().isField(candidateFieldName) ?
productConfigItem.getString(candidateFieldName): "";
- return candidateOut == null? "" : encoder.encode(candidateOut);
+ if (UtilValidate.isEmpty(outString)) {
+ outString =
productConfigItem.getModelEntity().isField(candidateFieldName) ?
productConfigItem.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
}
+ outString = encoder.encode(outString);
+ if (configItemContentCache != null) {
+ configItemContentCache.put(cacheKey, outString);
+ }
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering ProdConfItemContent, inserting
empty String", module);
String candidateOut =
productConfigItem.getModelEntity().isField(candidateFieldName) ?
productConfigItem.getString(candidateFieldName): "";
@@ -146,6 +148,10 @@ public class ProductConfigItemContentWra
}
public static void getProductConfigItemContentAsText(String configItemId,
GenericValue productConfigItem, String confItemContentTypeId, Locale locale,
String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer
outWriter) throws GeneralException, IOException {
+ getProductConfigItemContentAsText(configItemId, productConfigItem,
confItemContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
true);
+ }
+
+ public static void getProductConfigItemContentAsText(String configItemId,
GenericValue productConfigItem, String confItemContentTypeId, Locale locale,
String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher, Writer
outWriter, boolean cache) throws GeneralException, IOException {
if (configItemId == null && productConfigItem != null) {
configItemId = productConfigItem.getString("configItemId");
}
@@ -177,7 +183,7 @@ public class ProductConfigItemContentWra
GenericValue productConfigItemContent =
EntityQuery.use(delegator).from("ProdConfItemContent")
.where("configItemId", configItemId, "confItemContentTypeId",
confItemContentTypeId)
.orderBy("-fromDate")
- .cache(true)
+ .cache(cache)
.filterByDate()
.queryFirst();
if (productConfigItemContent != null) {
@@ -185,7 +191,7 @@ public class ProductConfigItemContentWra
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("productConfigItem", productConfigItem);
inContext.put("productConfigItemContent",
productConfigItemContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
productConfigItemContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, null, null, false);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
productConfigItemContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, null, null, cache);
}
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -115,14 +115,17 @@ public class ProductContentWrapper imple
}
Writer outWriter = new StringWriter();
- getProductContentAsText(null, product, productContentTypeId,
locale, mimeTypeId, partyId, roleTypeId, delegator, dispatcher, outWriter);
+ getProductContentAsText(null, product, productContentTypeId,
locale, mimeTypeId, partyId, roleTypeId, delegator, dispatcher, outWriter,
false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- return productContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- } else {
- String candidateOut =
product.getModelEntity().isField(candidateFieldName) ?
product.getString(candidateFieldName): "";
- return candidateOut == null? "" : encoder.encode(candidateOut);
+ if (UtilValidate.isEmpty(outString)) {
+ outString =
product.getModelEntity().isField(candidateFieldName) ?
product.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
}
+ outString = encoder.encode(outString);
+ if (productContentCache != null) {
+ productContentCache.put(cacheKey, outString);
+ }
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering ProductContent, inserting empty
String", module);
String candidateOut =
product.getModelEntity().isField(candidateFieldName) ?
product.getString(candidateFieldName): "";
@@ -135,6 +138,10 @@ public class ProductContentWrapper imple
}
public static void getProductContentAsText(String productId, GenericValue
product, String productContentTypeId, Locale locale, String mimeTypeId, String
partyId, String roleTypeId, Delegator delegator, LocalDispatcher dispatcher,
Writer outWriter) throws GeneralException, IOException {
+ getProductContentAsText(productId, product, productContentTypeId,
locale, mimeTypeId, partyId, roleTypeId, delegator, dispatcher, outWriter,
true);
+ }
+
+ public static void getProductContentAsText(String productId, GenericValue
product, String productContentTypeId, Locale locale, String mimeTypeId, String
partyId, String roleTypeId, Delegator delegator, LocalDispatcher dispatcher,
Writer outWriter, boolean cache) throws GeneralException, IOException {
if (productId == null && product != null) {
productId = product.getString("productId");
}
@@ -179,11 +186,11 @@ public class ProductContentWrapper imple
}
}
- List<GenericValue> productContentList =
EntityQuery.use(delegator).from("ProductContent").where("productId", productId,
"productContentTypeId",
productContentTypeId).orderBy("-fromDate").cache(true).filterByDate().queryList();
+ List<GenericValue> productContentList =
EntityQuery.use(delegator).from("ProductContent").where("productId", productId,
"productContentTypeId",
productContentTypeId).orderBy("-fromDate").cache(cache).filterByDate().queryList();
if (UtilValidate.isEmpty(productContentList) &&
("Y".equals(product.getString("isVariant")))) {
GenericValue parent = ProductWorker.getParentProduct(productId,
delegator);
if (UtilValidate.isNotEmpty(parent)) {
- productContentList =
EntityQuery.use(delegator).from("ProductContent").where("productId",
parent.get("productId"), "productContentTypeId",
productContentTypeId).orderBy("-fromDate").cache(true).filterByDate().queryList();
+ productContentList =
EntityQuery.use(delegator).from("ProductContent").where("productId",
parent.get("productId"), "productContentTypeId",
productContentTypeId).orderBy("-fromDate").cache(cache).filterByDate().queryList();
}
}
GenericValue productContent = EntityUtil.getFirst(productContentList);
@@ -192,7 +199,7 @@ public class ProductContentWrapper imple
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("product", product);
inContext.put("productContent", productContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
productContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, partyId, roleTypeId, true);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
productContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, partyId, roleTypeId, cache);
}
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -118,14 +118,17 @@ public class ProductPromoContentWrapper
}
Writer outWriter = new StringWriter();
- getProductPromoContentAsText(null, productPromo,
productPromoContentTypeId, locale, mimeTypeId, partyId, roleTypeId, delegator,
dispatcher, outWriter);
+ getProductPromoContentAsText(null, productPromo,
productPromoContentTypeId, locale, mimeTypeId, partyId, roleTypeId, delegator,
dispatcher, outWriter, false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- return productPromoContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- } else {
- String candidateOut =
productPromo.getModelEntity().isField(candidateFieldName) ?
productPromo.getString(candidateFieldName): "";
- return candidateOut == null? "" : encoder.encode(candidateOut);
+ if (UtilValidate.isEmpty(outString)) {
+ outString =
productPromo.getModelEntity().isField(candidateFieldName) ?
productPromo.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
}
+ outString = encoder.encode(outString);
+ if (productPromoContentCache != null) {
+ productPromoContentCache.put(cacheKey, outString);
+ }
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering ProductPromoContent, inserting
empty String", module);
String candidateOut =
productPromo.getModelEntity().isField(candidateFieldName) ?
productPromo.getString(candidateFieldName): "";
@@ -138,6 +141,10 @@ public class ProductPromoContentWrapper
}
public static void getProductPromoContentAsText(String productPromoId,
GenericValue productPromo, String productPromoContentTypeId, Locale locale,
String mimeTypeId, String partyId, String roleTypeId, Delegator delegator,
LocalDispatcher dispatcher, Writer outWriter) throws GeneralException,
IOException {
+ getProductPromoContentAsText(productPromoId, productPromo,
productPromoContentTypeId, locale, mimeTypeId, partyId, roleTypeId, delegator,
dispatcher, outWriter, true);
+ }
+
+ public static void getProductPromoContentAsText(String productPromoId,
GenericValue productPromo, String productPromoContentTypeId, Locale locale,
String mimeTypeId, String partyId, String roleTypeId, Delegator delegator,
LocalDispatcher dispatcher, Writer outWriter, boolean cache) throws
GeneralException, IOException {
if (UtilValidate.isEmpty(productPromoId) &&
UtilValidate.isNotEmpty(productPromo)) {
productPromoId = productPromo.getString("productPromoId");
}
@@ -173,7 +180,7 @@ public class ProductPromoContentWrapper
exprs.add(EntityCondition.makeCondition("productPromoId",
EntityOperator.EQUALS, productPromoId));
exprs.add(EntityCondition.makeCondition("productPromoContentTypeId",
EntityOperator.EQUALS, productPromoContentTypeId));
- List<GenericValue> productPromoContentList =
EntityQuery.use(delegator).from("ProductPromoContent").where(EntityCondition.makeCondition(exprs,
EntityOperator.AND)).orderBy("-fromDate").cache(true).queryList();
+ List<GenericValue> productPromoContentList =
EntityQuery.use(delegator).from("ProductPromoContent").where(EntityCondition.makeCondition(exprs,
EntityOperator.AND)).orderBy("-fromDate").cache(cache).queryList();
GenericValue productPromoContent = null;
if (UtilValidate.isNotEmpty(productPromoContentList)) {
productPromoContent =
EntityUtil.getFirst(EntityUtil.filterByDate(productPromoContentList));
@@ -184,7 +191,7 @@ public class ProductPromoContentWrapper
Map<String, Object> inContext = new HashMap<String, Object>();
inContext.put("productPromo", productPromo);
inContext.put("productPromoContent", productPromoContent);
- ContentWorker.renderContentAsText(dispatcher, delegator,
productPromoContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, partyId, roleTypeId, true);
+ ContentWorker.renderContentAsText(dispatcher, delegator,
productPromoContent.getString("contentId"), outWriter, inContext, locale,
mimeTypeId, partyId, roleTypeId, cache);
}
}
}
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=1711578&r1=1711577&r2=1711578&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
Sat Oct 31 05:39:13 2015
@@ -95,7 +95,7 @@ public class WorkEffortContentWrapper im
* @return String containing the contentId
*/
public String getContentId(String contentTypeId) {
- GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator());
+ GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator(), true);
if (workEffortContent != null) {
return workEffortContent.getString("contentId");
} else {
@@ -109,7 +109,7 @@ public class WorkEffortContentWrapper im
* @return String containing the name of the content record
*/
public String getContentName(String contentTypeId) {
- GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator());
+ GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator(), true);
if (workEffortContent != null) {
GenericValue content;
try {
@@ -133,7 +133,7 @@ public class WorkEffortContentWrapper im
* @return Timestamp of the fromDate field for this content type
*/
public Timestamp getFromDate(String contentTypeId) {
- GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator());
+ GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator(), true);
if (workEffortContent != null) {
return workEffortContent.getTimestamp("fromDate");
} else {
@@ -142,7 +142,7 @@ public class WorkEffortContentWrapper im
}
public String getDataResourceId(String contentTypeId) {
- GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator());
+ GenericValue workEffortContent = getFirstWorkEffortContentByType(null,
workEffort, contentTypeId, workEffort.getDelegator(), true);
if (workEffortContent != null) {
GenericValue content;
try {
@@ -248,14 +248,17 @@ public class WorkEffortContentWrapper im
}
Writer outWriter = new StringWriter();
- getWorkEffortContentAsText(contentId, null, workEffort,
workEffortContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter);
+ getWorkEffortContentAsText(contentId, null, workEffort,
workEffortContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
false);
String outString = outWriter.toString();
- if (outString.length() > 0) {
- return workEffortContentCache.putIfAbsentAndGet(cacheKey,
encoder.encode(outString));
- } else {
- String candidateOut =
workEffort.getModelEntity().isField(candidateFieldName) ?
workEffort.getString(candidateFieldName): "";
- return candidateOut == null? "" : encoder.encode(candidateOut);
+ if (UtilValidate.isEmpty(outString)) {
+ outString =
workEffort.getModelEntity().isField(candidateFieldName) ?
workEffort.getString(candidateFieldName): "";
+ outString = outString == null? "" : outString;
+ }
+ outString = encoder.encode(outString);
+ if (workEffortContentCache != null) {
+ workEffortContentCache.put(cacheKey, outString);
}
+ return outString;
} catch (GeneralException e) {
Debug.logError(e, "Error rendering WorkEffortContent, inserting
empty String", module);
String candidateOut =
workEffort.getModelEntity().isField(candidateFieldName) ?
workEffort.getString(candidateFieldName): "";
@@ -268,6 +271,10 @@ public class WorkEffortContentWrapper im
}
public static void getWorkEffortContentAsText(String contentId, String
workEffortId, GenericValue workEffort, String workEffortContentTypeId, Locale
locale, String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher,
Writer outWriter) throws GeneralException, IOException {
+ getWorkEffortContentAsText(contentId, null, workEffort,
workEffortContentTypeId, locale, mimeTypeId, delegator, dispatcher, outWriter,
true);
+ }
+
+ public static void getWorkEffortContentAsText(String contentId, String
workEffortId, GenericValue workEffort, String workEffortContentTypeId, Locale
locale, String mimeTypeId, Delegator delegator, LocalDispatcher dispatcher,
Writer outWriter, boolean cache) throws GeneralException, IOException {
if (workEffortId == null && workEffort != null) {
workEffortId = workEffort.getString("workEffortId");
}
@@ -303,9 +310,9 @@ public class WorkEffortContentWrapper im
// otherwise check content record
GenericValue workEffortContent;
if (contentId != null) {
- workEffortContent =
EntityQuery.use(delegator).from("WorkEffortContent").where("workEffortId",
workEffortId, "contentId", contentId).cache().queryOne();
+ workEffortContent =
EntityQuery.use(delegator).from("WorkEffortContent").where("workEffortId",
workEffortId, "contentId", contentId).cache(cache).queryOne();
} else {
- workEffortContent = getFirstWorkEffortContentByType(workEffortId,
workEffort, workEffortContentTypeId, delegator);
+ workEffortContent = getFirstWorkEffortContentByType(workEffortId,
workEffort, workEffortContentTypeId, delegator, cache);
}
if (workEffortContent != null) {
// when rendering the product content, always include the Product
and ProductContent records that this comes from
@@ -339,7 +346,7 @@ public class WorkEffortContentWrapper im
return contentList;
}
- public static GenericValue getFirstWorkEffortContentByType(String
workEffortId, GenericValue workEffort, String workEffortContentTypeId,
Delegator delegator) {
+ public static GenericValue getFirstWorkEffortContentByType(String
workEffortId, GenericValue workEffort, String workEffortContentTypeId,
Delegator delegator, boolean cache) {
if (workEffortId == null && workEffort != null) {
workEffortId = workEffort.getString("workEffortId");
}
@@ -358,7 +365,7 @@ public class WorkEffortContentWrapper im
.where("workEffortId", workEffortId,
"workEffortContentTypeId", workEffortContentTypeId)
.orderBy("-fromDate")
.filterByDate()
- .cache(true)
+ .cache(cache)
.queryFirst();
} catch (GeneralException e) {
Debug.logError(e, module);