From 90e606abbc3f7a60931a738bf5c9034aeeb87121 Mon Sep 17 00:00:00 2001 From: "Lincoln Baxter, III" Date: Wed, 23 Apr 2014 16:12:16 -0400 Subject: [PATCH] Re-use Freemarker Config --- .../freemarker/FreemarkerTemplateGenerator.java | 15 ++++++++++++++- .../freemarker/FreemarkerTemplateImpl.java | 10 +++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateGenerator.java b/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateGenerator.java index e8902dedec..8c7da32fa7 100644 --- a/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateGenerator.java +++ b/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateGenerator.java @@ -14,6 +14,8 @@ import org.jboss.forge.addon.templates.Template; import org.jboss.forge.addon.templates.TemplateGenerator; +import freemarker.template.Configuration; + /** * A Freemarker implementation of a {@link TemplateGenerator} * @@ -24,6 +26,7 @@ public class FreemarkerTemplateGenerator implements TemplateGenerator { @Inject private ResourceTemplateLoader loader; + private Configuration config; @Override public boolean handles(Class type) @@ -34,7 +37,17 @@ public boolean handles(Class type) @Override public Template create(Resource template, Class type) { - return new FreemarkerTemplateImpl(loader, template); + return new FreemarkerTemplateImpl(loader, template, getConfiguration()); + } + + private Configuration getConfiguration() + { + if (config == null) + { + config = new Configuration(); + config.setTemplateLoader(loader); + } + return config; } } diff --git a/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateImpl.java b/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateImpl.java index 77641f3290..732d81e4c7 100644 --- a/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateImpl.java +++ b/templates/freemarker/src/main/java/org/jboss/forge/addon/templates/freemarker/FreemarkerTemplateImpl.java @@ -7,6 +7,7 @@ import org.jboss.forge.addon.resource.Resource; import org.jboss.forge.addon.templates.AbstractTemplate; +import freemarker.template.Configuration; import freemarker.template.TemplateException; /** @@ -19,16 +20,15 @@ */ class FreemarkerTemplateImpl extends AbstractTemplate implements FreemarkerTemplate { - private final freemarker.template.Configuration freemarkerConfig; + private final freemarker.template.Configuration config; private final ResourceTemplateLoader loader; - public FreemarkerTemplateImpl(ResourceTemplateLoader loader, Resource resource) + public FreemarkerTemplateImpl(ResourceTemplateLoader loader, Resource resource, Configuration config) { super(resource); this.loader = loader; - freemarkerConfig = new freemarker.template.Configuration(); - freemarkerConfig.setTemplateLoader(loader); + this.config = config; } @Override @@ -62,6 +62,6 @@ public void process(Object model, Writer output) throws IOException @Override public freemarker.template.Configuration getFreemarkerConfig() { - return freemarkerConfig; + return config; } }