/*
* Copyright 2002-2017 the original author or authors.
*
* Licensed 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 org.springframework.transaction;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
Exception thrown when a general transaction system error is encountered,
like on commit or rollback.
Author: Juergen Hoeller Since: 24.03.2003
/**
* Exception thrown when a general transaction system error is encountered,
* like on commit or rollback.
*
* @author Juergen Hoeller
* @since 24.03.2003
*/
@SuppressWarnings("serial")
public class TransactionSystemException extends TransactionException {
@Nullable
private Throwable applicationException;
Constructor for TransactionSystemException.
Params: - msg – the detail message
/**
* Constructor for TransactionSystemException.
* @param msg the detail message
*/
public TransactionSystemException(String msg) {
super(msg);
}
Constructor for TransactionSystemException.
Params: - msg – the detail message
- cause – the root cause from the transaction API in use
/**
* Constructor for TransactionSystemException.
* @param msg the detail message
* @param cause the root cause from the transaction API in use
*/
public TransactionSystemException(String msg, Throwable cause) {
super(msg, cause);
}
Set an application exception that was thrown before this transaction exception,
preserving the original exception despite the overriding TransactionSystemException.
Params: - ex – the application exception
Throws: - IllegalStateException – if this TransactionSystemException already holds an
application exception
/**
* Set an application exception that was thrown before this transaction exception,
* preserving the original exception despite the overriding TransactionSystemException.
* @param ex the application exception
* @throws IllegalStateException if this TransactionSystemException already holds an
* application exception
*/
public void initApplicationException(Throwable ex) {
Assert.notNull(ex, "Application exception must not be null");
if (this.applicationException != null) {
throw new IllegalStateException("Already holding an application exception: " + this.applicationException);
}
this.applicationException = ex;
}
Return the application exception that was thrown before this transaction exception,
if any.
Returns: the application exception, or null
if none set
/**
* Return the application exception that was thrown before this transaction exception,
* if any.
* @return the application exception, or {@code null} if none set
*/
@Nullable
public final Throwable getApplicationException() {
return this.applicationException;
}
Return the exception that was the first to be thrown within the failed transaction:
i.e. the application exception, if any, or the TransactionSystemException's own cause.
Returns: the original exception, or null
if there was none
/**
* Return the exception that was the first to be thrown within the failed transaction:
* i.e. the application exception, if any, or the TransactionSystemException's own cause.
* @return the original exception, or {@code null} if there was none
*/
@Nullable
public Throwable getOriginalException() {
return (this.applicationException != null ? this.applicationException : getCause());
}
@Override
public boolean contains(@Nullable Class<?> exType) {
return super.contains(exType) || (exType != null && exType.isInstance(this.applicationException));
}
}