/*******************************************************************************
* Copyright 2014 Federal Chancellery Austria
* MOA-ID has been developed in a cooperation between BRZ, the Federal
* Chancellery Austria - ICT staff unit, and Graz University of Technology.
*
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* http://www.osor.eu/eupl/
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
* that you distribute must include a readable copy of the "NOTICE" text file.
******************************************************************************/
/*
* Copyright 2003 Federal Chancellery Austria
* MOA-ID has been developed in a cooperation between BRZ, the Federal
* Chancellery Austria - ICT staff unit, and Graz University of Technology.
*
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* http://www.osor.eu/eupl/
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
package at.gv.egovernment.moa.id.commons.api.exceptions;
import java.io.PrintStream;
import java.io.PrintWriter;
import at.gv.egovernment.moa.id.commons.utils.MOAIDMessageProvider;
/**
* Base class of technical MOA exceptions.
*
* Technical exceptions are exceptions that originate from system failure (e.g.,
* a database connection fails, a component is not available, etc.)
*
* @author Patrick Peck, Ivancsics Paul
* @version $Id$
*/
public class MOAIDException extends Exception {
/**
*
*/
private static final long serialVersionUID = -1507246171708083912L;
/** message ID */
private String messageId;
/** wrapped exception */
private Throwable wrapped;
private Object[] parameters;
/**
* Create a new MOAIDException
.
*
* @param messageId The identifier of the message associated with this
* exception.
* @param parameters Additional message parameters.
*/
public MOAIDException(String messageId, Object[] parameters) {
super(MOAIDMessageProvider.getInstance().getMessage(messageId, parameters));
this.messageId = messageId;
this.parameters = parameters;
}
/**
* Create a new MOAIDException
.
*
* @param messageId The identifier of the message associated with this
* MOAIDException
.
* @param parameters Additional message parameters.
* @param wrapped The exception wrapped by this
* MOAIDException
.
*/
public MOAIDException(
String messageId,
Object[] parameters,
Throwable wrapped) {
super(MOAIDMessageProvider.getInstance().getMessage(messageId, parameters));
this.messageId = messageId;
this.wrapped = wrapped;
this.parameters = parameters;
}
/**
* Print a stack trace of this exception to System.err
.
*
* @see java.lang.Throwable#printStackTrace()
*/
public void printStackTrace() {
printStackTrace(System.err);
}
/**
* Print a stack trace of this exception, including the wrapped exception.
*
* @param s The stream to write the stack trace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
*/
public void printStackTrace(PrintStream s) {
if (getWrapped() == null)
super.printStackTrace(s);
else {
s.print("Root exception: ");
getWrapped().printStackTrace(s);
}
}
/**
* Print a stack trace of this exception, including the wrapped exception.
*
* @param s The stream to write the stacktrace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
*/
public void printStackTrace(PrintWriter s) {
if (getWrapped() == null)
super.printStackTrace(s);
else {
s.print("Root exception: ");
getWrapped().printStackTrace(s);
}
}
/**
* @return message ID
*/
public String getMessageId() {
return messageId;
}
/**
* @return wrapped exception
*/
public Throwable getWrapped() {
return wrapped;
}
/**
* @return the parameters
*/
public Object[] getParameters() {
return parameters;
}
}