Author: cbegin
Date: Sat Jan 23 15:42:08 2010
New Revision: 902425
URL: http://svn.apache.org/viewvc?rev=902425&view=rev
Log:
fixed ibatis-733 ResultContext.stop() has no effect
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java?rev=902425&r1=902424&r2=902425&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
(original)
+++
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
Sat Jan 23 15:42:08 2010
@@ -12,10 +12,7 @@
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.factory.ObjectFactory;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.ResultHandler;
-import org.apache.ibatis.session.RowBounds;
-import org.apache.ibatis.session.AutoMappingBehavior;
+import org.apache.ibatis.session.*;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.TypeHandlerRegistry;
@@ -127,7 +124,7 @@
protected void handleRowValues(ResultSet rs, ResultMap resultMap,
ResultHandler resultHandler, RowBounds rowBounds) throws SQLException {
final DefaultResultContext resultContext = new DefaultResultContext();
skipRows(rs, rowBounds);
- while (shouldProcessMoreRows(rs, resultContext.getResultCount(),
rowBounds)) {
+ while (shouldProcessMoreRows(rs, resultContext, rowBounds)) {
final ResultMap discriminatedResultMap =
resolveDiscriminatedResultMap(rs, resultMap);
Object rowValue = getRowValue(rs, discriminatedResultMap, null);
resultContext.nextResultObject(rowValue);
@@ -135,8 +132,8 @@
}
}
- protected boolean shouldProcessMoreRows(ResultSet rs, int count, RowBounds
rowBounds) throws SQLException {
- return rs.next() && count < rowBounds.getLimit();
+ protected boolean shouldProcessMoreRows(ResultSet rs, ResultContext context,
RowBounds rowBounds) throws SQLException {
+ return rs.next() && context.getResultCount() < rowBounds.getLimit() &&
!context.isStopped();
}
protected void skipRows(ResultSet rs, RowBounds rowBounds) throws
SQLException {
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java?rev=902425&r1=902424&r2=902425&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
(original)
+++
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
Sat Jan 23 15:42:08 2010
@@ -69,7 +69,7 @@
protected void handleRowValues(ResultSet rs, ResultMap resultMap,
ResultHandler resultHandler, RowBounds rowBounds) throws SQLException {
final DefaultResultContext resultContext = new DefaultResultContext();
skipRows(rs, rowBounds);
- while (shouldProcessMoreRows(rs, resultContext.getResultCount(),
rowBounds)) {
+ while (shouldProcessMoreRows(rs, resultContext, rowBounds)) {
final ResultMap discriminatedResultMap =
resolveDiscriminatedResultMap(rs, resultMap);
final CacheKey rowKey = createRowKey(discriminatedResultMap, rs);
final boolean knownValue = globalRowValueCache.containsKey(rowKey);
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=902425&r1=902424&r2=902425&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
(original)
+++
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
Sat Jan 23 15:42:08 2010
@@ -464,6 +464,27 @@
}
}
+ private static class TestResultHandler implements ResultHandler {
+ int count = 0;
+ public void handleResult(ResultContext context) {
+ count++;
+ if (count == 2) context.stop();
+ }
+ }
+
+ @Test
+ public void shouldStopResultHandler() throws Exception {
+ SqlSession session = sqlMapper.openSession();
+
+ try {
+ final TestResultHandler resultHandler = new TestResultHandler();
+ session.select("domain.blog.mappers.BlogMapper.selectAllPosts", null,
resultHandler);
+ assertEquals(2, resultHandler.count);
+ } finally {
+ session.close();
+ }
+ }
+
@Test
public void shouldOffsetAndLimitResultsUsingMapperClass() throws Exception {
SqlSession session = sqlMapper.openSession();