You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2008/12/28 21:38:46 UTC

svn commit: r729772 - in /ibatis/trunk/java/ibatis-3: ./ ibatis-3-core/src/main/java/org/apache/ibatis/api/ ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/ ibatis-3-core/src/test/java/org/apache/ibatis/api/

Author: cbegin
Date: Sun Dec 28 12:38:45 2008
New Revision: 729772

URL: http://svn.apache.org/viewvc?rev=729772&view=rev
Log:
refactored transaction management in session api

Modified:
    ibatis/trunk/java/ibatis-3/TODO
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java

Modified: ibatis/trunk/java/ibatis-3/TODO
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=729772&r1=729771&r2=729772&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Sun Dec 28 12:38:45 2008
@@ -1,20 +1,16 @@
-Known Issues
-  * Duplicate element IDs are clobbering each other in config
-  * Statement (other elements?) not found does not fail gracefully
-
-Core
+Improvements
+ * Duplicate element IDs are clobbering each other in config
+ * Statement (other elements?) not found does not fail gracefully
  * Improved Error Messages
+ * Exception hierarchy returned from exceptionfactory
 
-XML Config
+Incomplete
  * Named parameter parsing/merging
  * Loosely bound cache id to instance
    - (perhaps use late-binding lookup proxies for all config elements?)
 
 API
- * Transaction Manager (REAL AutoCommit support...)
  * Mapper Interface Binding
- * Client / Mapper Factory
- * Exception hierarchy returned from exceptionfactory
 
 Testing
  * Functional tests

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java?rev=729772&r1=729771&r2=729772&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java Sun Dec 28 12:38:45 2008
@@ -24,7 +24,9 @@
   int delete(String statement, Object parameter);
 
   void commit();
-  void end();
+  void commit(boolean force);
+  void rollback();
+  void rollback(boolean force);
   void close();
 
 }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java?rev=729772&r1=729771&r2=729772&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java Sun Dec 28 12:38:45 2008
@@ -92,17 +92,25 @@
   }
 
   public void commit() {
+    commit(false);
+  }
+
+  public void commit(boolean force) {
     try {
-      executor.commit(!autoCommit && dirty);
+      executor.commit(isCommitOrRollbackRequired(force));
       dirty = false;
     } catch (SQLException e) {
       throw ExceptionFactory.wrapException("Error committing transaction.  Cause: " + e, e);
     }
   }
 
-  public void end() {
+  public void rollback() {
+    rollback(false);
+  }
+
+  public void rollback(boolean force) {
     try {
-      executor.rollback(!autoCommit && dirty);
+      executor.rollback(isCommitOrRollbackRequired(force));
       dirty = false;
     } catch (SQLException e) {
       throw ExceptionFactory.wrapException("Error rolling back transaction.  Cause: " + e, e);
@@ -112,9 +120,7 @@
   public void close() {
     try {
       try {
-        if (dirty) {
-          this.end();
-        }
+        rollback(false);
       } finally {
         executor.close();
       }
@@ -123,5 +129,8 @@
     }
   }
 
+  private boolean isCommitOrRollbackRequired(boolean force) {
+    return (!autoCommit && dirty) || force;
+  }
 
 }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java?rev=729772&r1=729771&r2=729772&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java Sun Dec 28 12:38:45 2008
@@ -2,7 +2,6 @@
 
 import org.junit.*;
 import org.apache.ibatis.BaseDataTest;
-import org.apache.ibatis.api.*;
 import org.apache.ibatis.io.Resources;
 
 import java.io.Reader;
@@ -87,7 +86,7 @@
       authors = session.selectList("com.domain.AuthorMapper.selectAuthor", id);
       Assert.assertEquals(0,authors.size());
 
-      session.end();
+      session.rollback();
       authors = session.selectList("com.domain.AuthorMapper.selectAuthor", id);
       Assert.assertEquals(1,authors.size());