/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.exception;
import static org.mule.runtime.api.i18n.I18nMessageFactory.createStaticMessage;
import static org.mule.runtime.api.util.Preconditions.checkArgument;
import org.mule.runtime.api.exception.MuleRuntimeException;
import org.mule.runtime.api.message.Error;
import org.mule.runtime.api.message.ErrorType;
/**
* Internal {@link RuntimeException} implementation to throw {@link Throwable throwables} that indicates explicitly
* the {@link ErrorType} that is wanted to throw.
* Also gives the possibility to declare a message for the {@link Error} being built.
*
* @since 4.0
*/
public class TypedException extends MuleRuntimeException {
private ErrorType errorType;
/**
* @param throwable The {@link TypedException#getCause()} of this new exception.
* @param errorType The {@link ErrorType} that identifies the {@link TypedException#getCause()} {@link Throwable}
*/
public TypedException(Throwable throwable, ErrorType errorType) {
super(throwable);
checkArgument(errorType != null, "The 'errorType' argument can not be null");
this.errorType = errorType;
}
/**
* @param throwable The {@link TypedException#getCause()} of this new exception.
* @param errorType The {@link ErrorType} that identifies the {@link TypedException#getCause()} {@link Throwable}
* @param message error message to override the once from the original exception
*/
public TypedException(Throwable throwable, ErrorType errorType, String message) {
super(createStaticMessage(message), throwable);
checkArgument(errorType != null, "The 'errorType' argument can not be null");
this.errorType = errorType;
}
/**
* @return The {@link ErrorType} of the thrown exception
*/
public ErrorType getErrorType() {
return errorType;
}
}