/* @ITMillApache2LicenseForJavaFiles@ */ package com.itmill.toolkit.terminal; import java.io.PrintWriter; import java.io.StringWriter; /** * SystemError is a runtime exception caused by error in system. * The system error can be shown to the user as it implements * ErrorMessage interface, but contains technical information * such as stack trace and exception. * * @author IT Mill Ltd. * @version * @VERSION@ * @since 3.0 */ public class SystemError extends RuntimeException implements ErrorMessage { /** * Serial generated by eclipse. */ private static final long serialVersionUID = 3256445789512675891L; /** * The cause of the system error. The cause is stored separately as JDK 1.3 * does not support causes natively. */ private Throwable cause = null; /** * Constructor for SystemError with error message specified. * * @param message * the Textual error description. */ public SystemError(String message) { super(message); } /** * Constructor for SystemError with causing exception and error message. * * @param message * the Textual error description. * @param cause * the throwable causing the system error. */ public SystemError(String message, Throwable cause) { super(message); this.cause = cause; } /** * Constructor for SystemError with cause. * * @param cause * the throwable causing the system error. */ public SystemError(Throwable cause) { this.cause = cause; } /** * @see com.itmill.toolkit.terminal.ErrorMessage#getErrorLevel() */ public final int getErrorLevel() { return ErrorMessage.SYSTEMERROR; } /** * @see com.itmill.toolkit.terminal.Paintable#paint(com.itmill.toolkit.terminal.PaintTarget) */ public void paint(PaintTarget target) throws PaintException { target.startTag("error"); target.addAttribute("level", "system"); // Paint the error message final String message = getLocalizedMessage(); if (message != null) { target.addSection("h2", message); } // Paint the exception if (cause != null) { target.addSection("h3", "Exception"); final StringWriter buffer = new StringWriter(); cause.printStackTrace(new PrintWriter(buffer)); target.addSection("pre", buffer.toString()); } target.endTag("error"); } /** * Gets cause for the error. * * @return the cause. * @see java.lang.Throwable#getCause() */ public Throwable getCause() { return cause; } /* Documented in super interface */ public void addListener(RepaintRequestListener listener) { } /* Documented in super interface */ public void removeListener(RepaintRequestListener listener) { } /* Documented in super interface */ public void requestRepaint() { } /* Documented in super interface */ public void requestRepaintRequests() { } }