From 91d6e2f8ec7c52671cf76941e4881f1aecdaad49 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 1 Feb 2016 12:37:23 +0000 Subject: [PATCH] Improve extensibility and reusability of MustacheTemplateEngine Previously, MustacheTemplateEngine hard coded the configuration of its Mustache Compiler. This commit adds an overloaded constructor that allows a custom Compiler to be used. It also adds protected accessors for the compiler and the template resource resolver so that they can be easily accessed by subclasses. Closes gh-149 --- .../mustache/MustacheTemplateEngine.java | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java index df142045..9e372ac4 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2015 the original author or authors. + * Copyright 2014-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,18 +36,32 @@ import org.springframework.restdocs.templates.TemplateResourceResolver; */ public class MustacheTemplateEngine implements TemplateEngine { - private final Compiler compiler = Mustache.compiler().escapeHTML(false); + private final Compiler compiler; private final TemplateResourceResolver templateResourceResolver; /** - * Creates a new {@link MustacheTemplateEngine} that will use the given + * Creates a new {@code MustacheTemplateEngine} that will use the given * {@code templateResourceResolver} to resolve template paths. * - * @param templateResourceResolver The resolve to use + * @param templateResourceResolver the resolver to use */ public MustacheTemplateEngine(TemplateResourceResolver templateResourceResolver) { + this(templateResourceResolver, Mustache.compiler().escapeHTML(false)); + } + + /** + * Creates a new {@code MustacheTemplateEngine} that will use the given + * {@code tempalteResourceResolver} to resolve templates and the given + * {@code compiler} to compile them. + * + * @param templateResourceResolver the resolver to use + * @param compiler the compiler to use + */ + public MustacheTemplateEngine(TemplateResourceResolver templateResourceResolver, + Compiler compiler) { this.templateResourceResolver = templateResourceResolver; + this.compiler = compiler; } @Override @@ -58,4 +72,23 @@ public class MustacheTemplateEngine implements TemplateEngine { templateResource.getInputStream()))); } + /** + * Returns the {@link Compiler} used to compile Mustache templates. + * + * @return the compiler + */ + protected final Compiler getCompiler() { + return this.compiler; + } + + /** + * Returns the {@link TemplateResourceResolver} used to resolve the template resources + * prior to compilation. + * + * @return the resolver + */ + protected final TemplateResourceResolver getTemplateResourceResolver() { + return this.templateResourceResolver; + } + }