Browse Source

TransactionTemplate catches undeclared checked exception and rethrows it as UndeclaredThrowableException (SPR-6361)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2455 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Juergen Hoeller 16 years ago
parent
commit
0da90e38cf
  1. 9
      org.springframework.transaction/src/main/java/org/springframework/transaction/support/TransactionTemplate.java

9
org.springframework.transaction/src/main/java/org/springframework/transaction/support/TransactionTemplate.java

@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
package org.springframework.transaction.support;
import java.lang.reflect.UndeclaredThrowableException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -123,7 +125,7 @@ public class TransactionTemplate extends DefaultTransactionDefinition @@ -123,7 +125,7 @@ public class TransactionTemplate extends DefaultTransactionDefinition
}
else {
TransactionStatus status = this.transactionManager.getTransaction(this);
T result = null;
T result;
try {
result = action.doInTransaction(status);
}
@ -137,6 +139,11 @@ public class TransactionTemplate extends DefaultTransactionDefinition @@ -137,6 +139,11 @@ public class TransactionTemplate extends DefaultTransactionDefinition
rollbackOnException(status, err);
throw err;
}
catch (Exception ex) {
// Transactional code threw unexpected exception -> rollback
rollbackOnException(status, ex);
throw new UndeclaredThrowableException(ex, "TransactionCallback threw undeclared checked exception");
}
this.transactionManager.commit(status);
return result;
}

Loading…
Cancel
Save