/* *************************************************************************
IT Mill Toolkit
Development of Browser User Interfaces Made Easy
Copyright (C) 2000-2006 IT Mill Ltd
*************************************************************************
This product is distributed under commercial license that can be found
from the product package on license.pdf. Use of this product might
require purchasing a commercial license from IT Mill Ltd. For guidelines
on usage, see licensing-guidelines.html
*************************************************************************
For more information, contact:
IT Mill Ltd phone: +358 2 4802 7180
Ruukinkatu 2-4 fax: +358 2 4802 7181
20540, Turku email: info@itmill.com
Finland company www: www.itmill.com
Primary source for information and releases: www.itmill.com
********************************************************************** */
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
String message = getLocalizedMessage();
if (message != null) {
target.addSection("h2", message);
}
// Paint the exception
if (cause != null) {
target.addSection("h3", "Exception");
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() {
}
}