Author: cbegin Date: Tue Mar 23 02:46:53 2010 New Revision: 926441 URL: http://svn.apache.org/viewvc?rev=926441&view=rev Log: fixed transactional cache that was not committing implicitly on session close
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/external/ExternalTransaction.java ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransaction.java ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jta/JtaTransaction.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java Modified: ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/external/ExternalTransaction.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/external/ExternalTransaction.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/external/ExternalTransaction.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/external/ExternalTransaction.java Tue Mar 23 02:46:53 2010 @@ -61,7 +61,7 @@ public class ExternalTransaction extends try { isolationLevel.restoreIsolationLevel(executor.getTransaction().getConnection()); } finally { - executor.close(); + executor.close(false); executor = null; } } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransaction.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransaction.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransaction.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransaction.java Tue Mar 23 02:46:53 2010 @@ -61,7 +61,7 @@ public class JdbcTransaction extends Bas try { isolationLevel.restoreIsolationLevel(executor.getTransaction().getConnection()); } finally { - executor.close(); + executor.close(false); executor = null; } } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jta/JtaTransaction.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jta/JtaTransaction.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jta/JtaTransaction.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/transaction/jta/JtaTransaction.java Tue Mar 23 02:46:53 2010 @@ -106,7 +106,7 @@ public class JtaTransaction extends Base try { isolationLevel.restoreIsolationLevel(executor.getTransaction().getConnection()); } finally { - executor.close(); + executor.close(false); executor = null; } } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java Tue Mar 23 02:46:53 2010 @@ -43,9 +43,13 @@ public abstract class BaseExecutor imple return transaction; } - public void close() { + public void close(boolean forceRollback) { try { - if (transaction != null) transaction.close(); + try { + rollback(forceRollback); + } finally { + if (transaction != null) transaction.close(); + } } catch (SQLException e) { // Ignore. There's nothing that can be done at this point. } finally { Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java Tue Mar 23 02:46:53 2010 @@ -25,11 +25,15 @@ public class CachingExecutor implements return delegate.getTransaction(); } - public void close() { - delegate.close(); - tcm.commit(); + public void close(boolean forceRollback) { + try { + tcm.commit(); + } finally { + delegate.close(forceRollback); + } } + public boolean isClosed() { return delegate.isClosed(); } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java Tue Mar 23 02:46:53 2010 @@ -34,8 +34,8 @@ public interface Executor { Transaction getTransaction(); - void close(); - + void close(boolean forceRollback); + boolean isClosed(); } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java Tue Mar 23 02:46:53 2010 @@ -72,7 +72,7 @@ public class ResultLoader { return localExecutor.query(mappedStatement, parameterObject, RowBounds.DEFAULT, Executor.NO_RESULT_HANDLER); } finally { if (localExecutor != executor) { - localExecutor.close(); + localExecutor.close(false); } } } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java Tue Mar 23 02:46:53 2010 @@ -143,11 +143,8 @@ public class DefaultSqlSession implement public void close() { try { - try { - rollback(false); - } finally { - executor.close(); - } + executor.close(isCommitOrRollbackRequired(false)); + dirty = false; } catch (Exception e) { throw ExceptionFactory.wrapException("Error closing transaction. Cause: " + e, e); } finally { Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java?rev=926441&r1=926440&r2=926441&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java Tue Mar 23 02:46:53 2010 @@ -9,7 +9,7 @@ import org.apache.ibatis.session.RowBoun import java.util.List; import java.util.Map; -...@cachenamespace +...@cachenamespace(readWrite = false) public interface BoundBlogMapper { //======================================================