001
014
015 package com.liferay.portal.freemarker;
016
017 import com.liferay.portal.kernel.io.unsync.UnsyncStringWriter;
018 import com.liferay.portal.kernel.util.StringPool;
019
020 import freemarker.cache.ClassTemplateLoader;
021
022 import freemarker.template.Configuration;
023 import freemarker.template.DefaultObjectWrapperBuilder;
024 import freemarker.template.Template;
025
026 import java.io.Writer;
027
028
032 public class FreeMarkerUtil {
033
034 public static String process(String name, Object context) throws Exception {
035 UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter();
036
037 process(name, context, unsyncStringWriter);
038
039 return unsyncStringWriter.toString();
040 }
041
042 public static void process(String name, Object context, Writer writer)
043 throws Exception {
044
045 Template template = _getConfiguration().getTemplate(name);
046
047 template.process(context, writer);
048 }
049
050 private static Configuration _getConfiguration() {
051 if (_configuration != null) {
052 return _configuration;
053 }
054
055 _configuration = new Configuration(Configuration.getVersion());
056
057 DefaultObjectWrapperBuilder defaultObjectWrapperBuilder =
058 new DefaultObjectWrapperBuilder(Configuration.getVersion());
059
060 _configuration.setObjectWrapper(defaultObjectWrapperBuilder.build());
061
062 _configuration.setTemplateLoader(
063 new ClassTemplateLoader(FreeMarkerUtil.class, StringPool.SLASH));
064 _configuration.setTemplateUpdateDelayMilliseconds(Long.MAX_VALUE);
065
066 return _configuration;
067 }
068
069 private static Configuration _configuration;
070
071 }