    001    package calhoun.util;
    002
    003    /** Exception type for consistency check errors.  It is unchecked to simplify error handling in other Java code.
    004     * It is a wrapper for problems that arise from failed consistency checks.It is a subclass of ConfigException.
    005     * You should assume error messages will be viewed by the user.
    006     */
    007    public class CheckException extends RuntimeException {
    008
    009            private static final long serialVersionUID = 4225964190101139621L;
    010
    011            public CheckException() {
    012            }
    013
    014            public CheckException(String arg0) {
    015                    super(arg0);
    016            }
    017
    018            public CheckException(String arg0, Throwable arg1) {
    019                    super(arg0);
    020                    if(arg1.getCause() != null)
    021                            initCause(arg1.getCause());
    022                    else
    023                            initCause(arg1);
    024            }
    025
    026            public CheckException(Throwable arg) {
    027                    if(arg.getCause() != null)
    028                            initCause(arg.getCause());
    029                    else
    030                            initCause(arg);
    031            }
    032
    033        /**
    034         * Gets the plain message unembellished with stack traces and causes.
    035         */
    036        public String getPlainMessage() {
    037            String message = super.getMessage();
    038            // Strip off the bean toString when it is added to the message
    039            int index = message.indexOf(": calhoun.");
    040            if ( index != -1 )
    041                message = message.substring(0, index);
    042            return message;
    043        }
    044
    045            @Override
    046            public String getMessage() {
    047                    String ret = super.getMessage();
    048                    Throwable cause = getCause();
    049                    if(cause != null) {
    050                            ret += " caused by: "+cause.getMessage()+" - "+cause.toString();
    051                    }
    052                    return ret;
    053            }
    054    }