Inline Regards Scott On 3/10/2010, at 11:03 PM, jler...@apache.org 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. > + 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
Description: S/MIME cryptographic signature