Avoid error log from velocity if no custom e-mail template exists

The code to determine the template that should be used for sending an
e-mail notification first tries to load a custom e-mail template and
only if a custom template cannot be found it falls back to the
default template. The problem is that trying to load a non-existing
custom e-mail template results in an error log, e.g.:
  ERROR velocity : ResourceManager : unable to find resource
    'ChangeSubject.vm' in any resource loader.

The new code checks whether a custom template exists before trying
to load it.

Change-Id: Icec3067792f1d2102a11bec1356844280b9e72f9
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2011-11-04 11:12:32 +01:00
parent 92122fa827
commit 60c7cdf710

View File

@@ -374,13 +374,10 @@ public abstract class OutgoingEmail {
protected String velocifyFile(String name) throws EmailException {
try {
RuntimeInstance runtime = args.velocityRuntime;
Template template;
try {
template = runtime.getTemplate(name, "UTF-8");
} catch (org.apache.velocity.exception.ResourceNotFoundException notFound) {
if (runtime.getLoaderNameForResource(name) == null) {
name = "com/google/gerrit/server/mail/" + name;
template = runtime.getTemplate(name, "UTF-8");
}
Template template = runtime.getTemplate(name, "UTF-8");
StringWriter w = new StringWriter();
template.merge(velocityContext, w);
return w.toString();