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());