/******************************************************************************* * 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; } }