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

org.xwiki.logging.AbstractMessageException Maven / Gradle / Ivy

There is a newer version: 16.10.2
Show newest version
/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.xwiki.logging;

import org.slf4j.Marker;

/**
 * An exception which support the same parameter system than {@link Message}.
 * 
 * @version $Id: c2f27d94dec9f4fc1608fce8c055020501802bc0 $
 * @since 15.0RC1
 * @since 14.10.1
 */
public abstract class AbstractMessageException extends Exception
{
    /**
     * Serialization identifier.
     */
    private static final long serialVersionUID = 1L;

    private final Message message;

    /**
     * Constructs a new exception with the specified detail message and cause.
     * 
     * @param translationKey the key used to find the translation
     * @param message the log message
     * @param arguments the arguments to insert in the message. If the last argument is a {@link Throwable}, it's
     *            extracted as the cause.
     * @see Message#Message
     */
    protected AbstractMessageException(String translationKey, String message, Object... arguments)
    {
        super(LogUtils.getThrowable(arguments));

        this.message = new Message(translationKey, message, arguments);
    }

    /**
     * Constructs a new exception with the specified detail message and cause.
     * 
     * @param marker the log marker
     * @param message the log message
     * @param argumentArray the event arguments to insert in the message
     * @param cause the throwable associated to the event
     * @see Message#Message(Marker, String, Object[], Throwable)
     */
    protected AbstractMessageException(Marker marker, String message, Object[] argumentArray, Throwable cause)
    {
        super(cause);

        this.message = new Message(marker, message, argumentArray, cause);
    }

    @Override
    public String getMessage()
    {
        return this.message.getFormattedMessage();
    }

    /**
     * @return the actual {@link Message}
     */
    public Message getParameterizedMessage()
    {
        return this.message;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy