All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.bund.bva.isyfact.exception.BaseException Maven / Gradle / Ivy

/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * The Federal Office of Administration (Bundesverwaltungsamt, BVA)
 * licenses this file to you under the Apache License, Version 2.0 (the
 * License). You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package de.bund.bva.isyfact.exception;

import java.util.UUID;

import de.bund.bva.isyfact.exception.common.FehlertextUtil;

/**
 * Abstrakte (checked) Hauptexception, welche als Basis für die abstrakten fachlichen und technischen
 * Exceptions (checked) auf Anwendungsebene verwendet wird.
 * 

* Die Applikationsspezifischen Exceptions sollen nicht von direkt von {@link BaseException} erben, * sondern von {@link BusinessException} (für fachliche checked Exceptions) oder * {@link TechnicalException} (für technische checked Exceptions). *

* */ public abstract class BaseException extends Exception { /** * Ausnahme-ID. */ private String ausnahmeId; /** * Die eineindeutige ID, die den aufgetretenen Fehler referenziert (nicht die Fehlerart). */ private String uniqueId; /** * Erstellt eine neue checked Exception mit einer Ausnahme-ID für den Fehlertext und einem Werten * für die Variablenersetzung im Fehlertext. *

* Der Grund wird nicht initialisiert und kann später durch den Aufruf der Methode * {@link #initCause(Throwable)} initialisiert werden. * * @param ausnahmeId * Die Ausnahme-ID. Der Schlüssel, welcher verwendet wird, um einen Nachrichtentext, welcher * als Fehler-Nachricht für die Exception verwendet wird aus einem ResourceBundle zu laden. * @param fehlertextProvider * Die FehlertextProvider-Implementierung, welche verwendet wird, um eine Fehlertext zu laden. * @param parameter * Variable Anzahl an Parameterwerten. Parameterwert f¨r die mögliche Variable in einer * Fehler-Nachricht. */ protected BaseException(String ausnahmeId, FehlertextProvider fehlertextProvider, String... parameter) { super(fehlertextProvider.getMessage(ausnahmeId, parameter)); this.ausnahmeId = ausnahmeId; this.uniqueId = UUID.randomUUID().toString(); } /** * Erstellt eine neue checked Exception mit einer Ausnahme-ID für den Fehlertext, einem Werten für * die Variablenersetzung im Fehlertext und mit dem übergebenen Grund. *

* Anmerkung: Der Fehlertext von cause (dem Grund) ist nicht automatisch mit dem * übergebenen Fehlertext verbunden. * * @param ausnahmeId * Die Ausnahme-ID. Der Schlüssel der den Fehlertext identifiziert. * @param throwable * Der Grund. Throwable wird gespeichert für die spätere Nutzung durch die Methode * {@link #getCause()}. null als Wert ist erlaubt und bedeutet, dass kein Grund * existiert oder der Grund nicht bekannt ist. * @param fehlertextProvider * Die FehlertextProvider-Implementierung, welche verwendet wird, um eine Fehlertext zu laden. * @param parameter * Variable Anzahl an Parameterwerten. Parameterwert f¨r die mögliche Variable in einer * Fehler-Nachricht. */ protected BaseException(String ausnahmeId, Throwable throwable, FehlertextProvider fehlertextProvider, String... parameter) { super(fehlertextProvider.getMessage(ausnahmeId, parameter), throwable); this.ausnahmeId = ausnahmeId; setUniqueId(throwable); } /** * setzt die UniqueId aus der übergebenen Exception. * * @param throwable * Die übergebene Exception. */ private void setUniqueId(Throwable throwable) { if (throwable instanceof BaseException) { this.uniqueId = ((BaseException) throwable).getUniqueId(); } else if (throwable instanceof TechnicalRuntimeException) { this.uniqueId = ((TechnicalRuntimeException) throwable).getUniqueId(); } else { this.uniqueId = UUID.randomUUID().toString(); } } /** * Liefert die Ausnahme-ID zurück, welche gleichzeitig der Schlüssel für den Fehlertext ist. * * @return Ausnahme-ID String sofern gesetzt, ansonsten null. */ public String getAusnahmeId() { return this.ausnahmeId; } /** * Liefert die eineindeutige ID zurück, welche beim Auftreten der Exception erzeugt wurde. * * @return Die Ausnahme-ID */ public String getUniqueId() { return this.uniqueId; } /** * @return Den unformattierten Fehlertext */ public String getFehlertext() { return super.getMessage(); } /** * {@inheritDoc} */ @Override public String getMessage() { return FehlertextUtil.erweitereFehlertext(this.ausnahmeId, super.getMessage(), this.uniqueId); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy