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
This commit is contained in:
Andy Wilkinson
2016-02-01 12:37:23 +00:00
parent 2410f06ff5
commit 91d6e2f8ec

View File

@@ -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;
}
}