// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package fitnesse.responders; import fitnesse.FitNesseContext; import fitnesse.Responder; import fitnesse.http.Request; import fitnesse.http.Response; import fitnesse.http.SimpleResponse; import fitnesse.html.template.HtmlPage; public class ErrorResponder implements Responder { private Exception exception; private String message; private int statusCode; public ErrorResponder(Exception e) { exception = e; statusCode = 400; } public ErrorResponder(String message) { this(message, 400); } public ErrorResponder(String message, int statusCode) { this.message = message; this.statusCode = statusCode; } @Override public Response makeResponse(FitNesseContext context, Request request) throws Exception { SimpleResponse response = new SimpleResponse(statusCode); HtmlPage html = context.pageFactory.newPage(); html.addTitles("Error Occurred"); html.setMainTemplate("error"); html.put("exception", exception); if (exception != null) html.put("exception", exception); if (message != null) html.put("message", message); response.setContent(html.html()); return response; } public static String makeExceptionString(Throwable e) { StringBuilder builder = new StringBuilder(); builder.append(e.toString()).append("\n"); for (StackTraceElement stackTraceElement : e.getStackTrace()) { builder.append("\t") .append(stackTraceElement) .append("\n"); } return builder.toString(); } }