package net.ameba.cassandra.web.util;
import java.io.IOException;
import java.io.Writer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.NoSuchMessageException;
import org.springframework.stereotype.Component;
import freemarker.core.Environment;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
/**
*
* @author snamura
*/
@Component("exceptionHandler")
public class FreemarkerExceptionHandler implements TemplateExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(FreemarkerExceptionHandler.class);
/*
* (non-Javadoc)
* @see freemarker.template.TemplateExceptionHandler#handleTemplateException(freemarker.template.TemplateException, freemarker.core.Environment, java.io.Writer)
*/
public void handleTemplateException(
TemplateException exception,
Environment environment,
Writer writer)
throws TemplateException {
try {
if (exception.getCause().getClass() == NoSuchMessageException.class) {
NoSuchMessageException ex = (NoSuchMessageException) exception.getCause();
writer.write(ex.getMessage());
} else {
writer.write("Error: ");
writer.write(exception.getMessage());
}
} catch (IOException ex) {
log.warn(ex.getMessage(), ex);
}
}
}