/*
jBilling - The Enterprise Open Source Billing System
Copyright (C) 2003-2011 Enterprise jBilling Software Ltd. and Emiliano Conde
This file is part of jbilling.
jbilling is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
jbilling is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with jbilling. If not, see <http://www.gnu.org/licenses/>.
*/
package com.sapienter.jbilling.common;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.log4j.Logger;
public class SessionInternalError extends RuntimeException {
private String errorMessages[] = null;
public SessionInternalError() {
}
public SessionInternalError(String s) {
super(s);
}
public SessionInternalError(String s, Class className, Exception e) {
super(s);
Logger log = Logger.getLogger(className);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
log.fatal(s + e.getMessage() + "\n" + sw.toString());
}
public SessionInternalError(Exception e) {
super(e.getMessage());
if (e instanceof SessionInternalError) {
setErrorMessages(((SessionInternalError) e).getErrorMessages());
}
Logger log = Logger.getLogger("com.sapienter.jbilling");
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
log.fatal("Internal error: " + e.getMessage() + "\n" + sw.toString());
}
public SessionInternalError(String message, Throwable e) {
super(message + " Cause: " + e.getMessage(), e);
}
public SessionInternalError(String message, Throwable e, String[] errors) {
super(message, e);
setErrorMessages(errors);
}
public SessionInternalError(String message, String[] errors) {
super(message);
setErrorMessages(errors);
}
public void setErrorMessages(String errors[]) {
this.errorMessages = errors;
}
public String[] getErrorMessages() {
return errorMessages;
}
}