Author: deepak
Date: Mon Nov 13 06:26:53 2017
New Revision: 1815059
URL:
http://svn.apache.org/viewvc?rev=1815059&view=revLog:
Fixed: Content related changes needs OFBiz server restart (OFBIZ-9922)
DataResourceWorker call the FreeMarkerWorker.renderTemplateFromString if dataTemplateTypeId is FTL,
and pass the dataResource.lastUpdatedStamp to update the ftl cache.
But if you use ftl file as objectInfo so dataResource.lastUpdatedStamp will not change if you update the ftl file
Thanks Suraj Khurana for reporting the issue.
Modified:
ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java
Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java?rev=1815059&r1=1815058&r2=1815059&view=diff==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java Mon Nov 13 06:26:53 2017
@@ -57,6 +57,7 @@ import org.apache.ofbiz.base.util.Genera
import org.apache.ofbiz.base.util.StringUtil;
import org.apache.ofbiz.base.util.StringUtil.StringWrapper;
import org.apache.ofbiz.base.util.UtilCodec;
+import org.apache.ofbiz.base.util.UtilDateTime;
import org.apache.ofbiz.base.util.UtilGenerics;
import org.apache.ofbiz.base.util.UtilHttp;
import org.apache.ofbiz.base.util.UtilIO;
@@ -674,7 +675,17 @@ public class DataResourceWorker impleme
// render the FTL template
boolean useTemplateCache = cache && !UtilProperties.getPropertyAsBoolean("content", "disable.ftl.template.cache", false);
- Timestamp lastUpdatedStamp = dataResource.getTimestamp("lastUpdatedStamp");
+ //Do not use dataResource.lastUpdatedStamp for dataResource template caching as it may use ftl file or electronicText
+ // If dataResource using ftl file use nowTimestamp to avoid freemarker caching
+ Timestamp lastUpdatedStamp = UtilDateTime.nowTimestamp();
+ //If dataResource is type of ELECTRONIC_TEXT then only use the lastUpdatedStamp of electronicText entity for freemarker caching
+ if ("ELECTRONIC_TEXT".equals(dataResource.getString("dataResourceTypeId"))) {
+ GenericValue electronicText = dataResource.getRelatedOne("ElectronicText", true);
+ if (electronicText != null) {
+ lastUpdatedStamp = electronicText.getTimestamp("lastUpdatedStamp");
+ }
+ }
+
FreeMarkerWorker.renderTemplateFromString("delegator:" + delegator.getDelegatorName() + ":DataResource:" + dataResourceId, templateText, templateContext, out, lastUpdatedStamp.getTime(), useTemplateCache);
} catch (TemplateException e) {
throw new GeneralException("Error rendering FTL template", e);