package com.enonic.cms.web.error; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.google.common.collect.Maps; import com.enonic.cms.core.portal.rendering.tracing.RenderTrace; import com.enonic.cms.web.portal.template.TemplateProcessor; @Component public final class ErrorPageRendererImpl implements ErrorPageRenderer { @Autowired protected TemplateProcessor templateProcessor; @Value("${cms.error.page.detailInformation}") protected boolean detailInformation; @Override public void render( final HttpServletResponse res, final ErrorDetails details ) throws IOException { final Map<String, Object> model = Maps.newHashMap(); model.put( "details", details ); final String result = this.templateProcessor.process( getTemplateName(), model ); res.setStatus( details.getStatusCode() ); res.setContentType( "text/html" ); res.setCharacterEncoding( "UTF-8" ); res.getWriter().println( result ); } private String getTemplateName() { final boolean details = this.detailInformation || RenderTrace.isExecutingInDebugMode(); return details ? "errorPage.ftl" : "errorPageMinimal.ftl"; } }