Inline
Regards Scott On 3/10/2010, at 11:03 PM, [hidden email] wrote: > Author: jleroux > Date: Sun Oct 3 10:03:14 2010 > New Revision: 1003943 > > URL: http://svn.apache.org/viewvc?rev=1003943&view=rev > Log: > A patch from Sascha Rodekamp "Additional parameter for FreeMarker to tell if it should load ftl files from cache or not" (https://issues.apache.org/jira/browse/OFBIZ-3970) - OFBIZ-3970 > > This patch allows you to tell FreeMarker if it should load the ftl files from cache or not as extension for the method description. If you have a few screens which shouldn't use the cache you can configure them separately. The use case is loading content with templates which are stored in the DB and can be modified during the runtime (CMS). > > Modified: > ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java > > Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=1003943&r1=1003942&r2=1003943&view=diff > ============================================================================== > --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java (original) > +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java Sun Oct 3 10:03:14 2010 > @@ -155,10 +155,22 @@ public class FreeMarkerWorker { > * @param outWriter The Writer to render to > */ > public static void renderTemplate(String templateLocation, String templateString, Map<String, Object> context, Appendable outWriter) throws TemplateException, IOException { > + renderTemplate(templateLocation, templateString, context, outWriter, true); > + } > + > + /** > + * Renders a template contained in a String. > + * @param templateLocation A unique ID for this template - used for caching > + * @param templateString The String containing the template > + * @param context The context Map > + * @param outWriter The Writer to render to > + * @param useCache try to get template from cache > + */ > + public static void renderTemplate(String templateLocation, String templateString, Map<String, Object> context, Appendable outWriter, boolean useCache) throws TemplateException, IOException { > if (UtilValidate.isEmpty(templateString)) { > renderTemplate(templateLocation, context, outWriter); > } else { > - renderTemplateFromString(templateString, templateLocation, context, outWriter); > + renderTemplateFromString(templateString, templateLocation, context, outWriter, useCache); > } > } > > @@ -167,34 +179,46 @@ public class FreeMarkerWorker { > * @param templateLocation A unique ID for this template - used for caching > * @param context The context Map > * @param outWriter The Writer to render to > + * @param useCache try to get template from cache > */ > public static void renderTemplate(String templateLocation, Map<String, Object> context, Appendable outWriter) throws TemplateException, IOException { > Template template = getTemplate(templateLocation); > renderTemplate(template, context, outWriter); > } > > - public static void clearTemplateFromCache(String templateLocation) { > - synchronized (cachedTemplates) { > - cachedTemplates.remove(templateLocation); > - } > - } > > - public static Environment renderTemplateFromString(String templateString, String templateLocation, Map<String, Object> context, Appendable outWriter) throws TemplateException, IOException { > - Template template = cachedTemplates.get(templateLocation); > + public static Environment renderTemplateFromString(String templateString, String templateLocation, Map<String, Object> context, Appendable outWriter, boolean useCache) throws TemplateException, IOException { > + Template template = null; > + if (useCache){ > + template = cachedTemplates.get(templateLocation); > + } > if (template == null) { > - synchronized (cachedTemplates) { > - template = cachedTemplates.get(templateLocation); > - if (template == null) { > - Reader templateReader = new StringReader(templateString); > - template = new Template(templateLocation, templateReader, defaultOfbizConfig); > - templateReader.close(); > - cachedTemplates.put(templateLocation, template); > + if (useCache){ > + synchronized (cachedTemplates) { > + template = cachedTemplates.get(templateLocation); > + if (template == null) { > + Reader templateReader = new StringReader(templateString); > + template = new Template(templateLocation, templateReader, defaultOfbizConfig); > + templateReader.close(); > + cachedTemplates.put(templateLocation, template); > + } > } > + } else { > + Reader templateReader = new StringReader(templateString); > + template = new Template(templateLocation, templateReader, defaultOfbizConfig); > + templateReader.close(); > } > } > + > return renderTemplate(template, context, outWriter); > } > > + public static void clearTemplateFromCache(String templateLocation) { > + synchronized (cachedTemplates) { > + cachedTemplates.remove(templateLocation); > + } > + } > + > /** > * Renders a Template instance. > * @param template A Template instance > > smime.p7s (3K) Download Attachment |
Administrator
|
Scott Gray wrote:
> Inline > > Regards > Scott > On 3/10/2010, at 11:03 PM, [hidden email] wrote: > >> Author: jleroux >> Date: Sun Oct 3 10:03:14 2010 >> New Revision: 1003943 >> >> URL: http://svn.apache.org/viewvc?rev=1003943&view=rev >> Log: >> A patch from Sascha Rodekamp "Additional parameter for FreeMarker to tell if it should load ftl files from cache or not" >> (https://issues.apache.org/jira/browse/OFBIZ-3970) - OFBIZ-3970 >> >> This patch allows you to tell FreeMarker if it should load the ftl files from cache or not as extension for the method >> description. If you have a few screens which shouldn't use the cache you can configure them separately. The use case is loading >> content with templates which are stored in the DB and can be modified during the runtime (CMS). >> >> Modified: >> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java >> >> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=1003943&r1=1003942&r2=1003943&view=diff >> ============================================================================== --- >> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java (original) +++ >> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/template/FreeMarkerWorker.java Sun Oct 3 10:03:14 2010 @@ -155,10 +155,22 @@ >> public class FreeMarkerWorker { >> * @param outWriter The Writer to render to >> */ >> public static void renderTemplate(String templateLocation, String templateString, Map<String, Object> context, Appendable >> outWriter) throws TemplateException, IOException { + renderTemplate(templateLocation, templateString, context, outWriter, >> true); + } >> + >> + /** >> + * Renders a template contained in a String. >> + * @param templateLocation A unique ID for this template - used for caching >> + * @param templateString The String containing the template >> + * @param context The context Map >> + * @param outWriter The Writer to render to >> + * @param useCache try to get template from cache >> + */ >> + public static void renderTemplate(String templateLocation, String templateString, Map<String, Object> context, Appendable >> outWriter, boolean useCache) throws TemplateException, IOException { if (UtilValidate.isEmpty(templateString)) { >> renderTemplate(templateLocation, context, outWriter); >> } else { >> - renderTemplateFromString(templateString, templateLocation, context, outWriter); >> + renderTemplateFromString(templateString, templateLocation, context, outWriter, useCache); >> } >> } >> >> @@ -167,34 +179,46 @@ public class FreeMarkerWorker { >> * @param templateLocation A unique ID for this template - used for caching >> * @param context The context Map >> * @param outWriter The Writer to render to >> + * @param useCache try to get template from cache >> */ >> public static void renderTemplate(String templateLocation, Map<String, Object> context, Appendable outWriter) throws >> TemplateException, IOException { Template template = getTemplate(templateLocation); >> renderTemplate(template, context, outWriter); >> } >> >> - public static void clearTemplateFromCache(String templateLocation) { >> - synchronized (cachedTemplates) { >> - cachedTemplates.remove(templateLocation); >> - } >> - } >> >> - public static Environment renderTemplateFromString(String templateString, String templateLocation, Map<String, Object> >> context, Appendable outWriter) throws TemplateException, IOException { >> - Template template = cachedTemplates.get(templateLocation); > > As I mentioned in the jira issue, the above method should have been deprecated and not replaced. Right Scott, I pointed it out also and finally Sascha convinced me because I then looked at renderTemplate and not renderTemplateFromString, no excuses anyway :/ Done at r1004148 Thanks Jacques > >> + public static Environment renderTemplateFromString(String templateString, String templateLocation, Map<String, Object> >> context, Appendable outWriter, boolean useCache) throws TemplateException, IOException { + Template template = null; >> + if (useCache){ >> + template = cachedTemplates.get(templateLocation); >> + } >> if (template == null) { >> - synchronized (cachedTemplates) { >> - template = cachedTemplates.get(templateLocation); >> - if (template == null) { >> - Reader templateReader = new StringReader(templateString); >> - template = new Template(templateLocation, templateReader, defaultOfbizConfig); >> - templateReader.close(); >> - cachedTemplates.put(templateLocation, template); >> + if (useCache){ >> + synchronized (cachedTemplates) { >> + template = cachedTemplates.get(templateLocation); >> + if (template == null) { >> + Reader templateReader = new StringReader(templateString); >> + template = new Template(templateLocation, templateReader, defaultOfbizConfig); >> + templateReader.close(); >> + cachedTemplates.put(templateLocation, template); >> + } >> } >> + } else { >> + Reader templateReader = new StringReader(templateString); >> + template = new Template(templateLocation, templateReader, defaultOfbizConfig); >> + templateReader.close(); >> } >> } >> + >> return renderTemplate(template, context, outWriter); >> } >> >> + public static void clearTemplateFromCache(String templateLocation) { >> + synchronized (cachedTemplates) { >> + cachedTemplates.remove(templateLocation); >> + } >> + } >> + >> /** >> * Renders a Template instance. >> * @param template A Template instance |
Free forum by Nabble | Edit this page |