Author: cbegin
Date: Sun Oct 11 02:14:26 2009
New Revision: 823998

URL: http://svn.apache.org/viewvc?rev=823998&view=rev
Log:
Hooked in FastResultSetHandler

Added:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
      - copied, changed from r823802, 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
Removed:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
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/mapping/MappedStatement.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMap.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/Configuration.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
    ibatis/java/ibatis-3/trunk/version.properties

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=823998&r1=823997&r2=823998&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
 Sun Oct 11 02:14:26 2009
@@ -24,7 +24,7 @@
 import java.util.List;
 import java.util.Set;
 
-public abstract class FastResultSetHandler implements ResultSetHandler {
+public class FastResultSetHandler implements ResultSetHandler {
 
   protected final Executor executor;
   protected final Configuration configuration;
@@ -178,7 +178,7 @@
       resultObject = foundValues ? resultObject : null;
       return resultObject;
     }
-    return null;
+    return resultObject;
   }
 
   protected ResultLoaderRegistry instantiateResultLoaderRegistry() {

Copied: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 (from r823802, 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.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?p2=ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java&p1=ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java&r1=823802&r2=823998&rev=823998&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 Sun Oct 11 02:14:26 2009
@@ -22,15 +22,24 @@
 import java.sql.Statement;
 import java.util.*;
 
-public class DefaultResultSetHandler extends FastResultSetHandler {
+public class NestedResultSetHandler extends FastResultSetHandler {
 
   private final Map<CacheKey, Set<CacheKey>> localRowValueCaches;
   private final Map<CacheKey, Object> globalRowValueCache;
 
-  public DefaultResultSetHandler(Executor executor, MappedStatement 
mappedStatement, ParameterHandler parameterHandler, ResultHandler 
resultHandler, BoundSql boundSql, RowBounds rowBounds) {
+  public NestedResultSetHandler(Executor executor, MappedStatement 
mappedStatement, ParameterHandler parameterHandler, ResultHandler 
resultHandler, BoundSql boundSql, RowBounds rowBounds) {
     super(executor, mappedStatement, parameterHandler, resultHandler, 
boundSql, rowBounds);
     localRowValueCaches = new HashMap<CacheKey, Set<CacheKey>>();
     globalRowValueCache = new HashMap<CacheKey, Object>();
+    ensureNoRowBounds(rowBounds);
+  }
+
+  private void ensureNoRowBounds(RowBounds rowBounds) {
+    if (rowBounds != null
+        && (rowBounds.getLimit() < RowBounds.NO_ROW_LIMIT
+        || rowBounds.getOffset() > RowBounds.NO_ROW_OFFSET)) {
+      throw new ExecutorException("Mapped Statements with nested result 
mappings cannot be safely constrained by RowBounds.");
+    }
   }
 
   //

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java?rev=823998&r1=823997&r2=823998&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
 Sun Oct 11 02:14:26 2009
@@ -28,6 +28,7 @@
   private SqlCommandType sqlCommandType;
   private KeyGenerator keyGenerator;
   private String keyProperty;
+  private boolean hasNestedResultMaps;
 
   private MappedStatement() {
   }
@@ -64,6 +65,9 @@
 
     public Builder resultMaps(List<ResultMap> resultMaps) {
       mappedStatement.resultMaps = resultMaps;
+      for (ResultMap resultMap : resultMaps) {
+        mappedStatement.hasNestedResultMaps = 
mappedStatement.hasNestedResultMaps || resultMap.hasNestedResultMaps();
+      }
       return this;
     }
 
@@ -146,6 +150,10 @@
     return id;
   }
 
+  public boolean hasNestedResultMaps() {
+    return hasNestedResultMaps;
+  }
+
   public Integer getFetchSize() {
     return fetchSize;
   }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMap.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMap.java?rev=823998&r1=823997&r2=823998&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMap.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMap.java
 Sun Oct 11 02:14:26 2009
@@ -14,6 +14,7 @@
   private List<ResultMapping> propertyResultMappings;
   private Set<String> mappedColumns;
   private Discriminator discriminator;
+  private boolean hasNestedResultMaps;
 
   private ResultMap() {
   }
@@ -42,6 +43,7 @@
       resultMap.constructorResultMappings = new ArrayList<ResultMapping>();
       resultMap.propertyResultMappings = new ArrayList<ResultMapping>();
       for (ResultMapping resultMapping : resultMap.resultMappings) {
+        resultMap.hasNestedResultMaps = resultMap.hasNestedResultMaps || 
resultMapping.getNestedResultMapId() != null;
         final String column = resultMapping.getColumn();
         if (column != null) {
           resultMap.mappedColumns.add(column.toUpperCase());
@@ -79,6 +81,10 @@
     return id;
   }
 
+  public boolean hasNestedResultMaps() {
+    return hasNestedResultMaps;
+  }
+
   public Class getType() {
     return type;
   }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/Configuration.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/Configuration.java?rev=823998&r1=823997&r2=823998&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/Configuration.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/Configuration.java
 Sun Oct 11 02:14:26 2009
@@ -14,8 +14,9 @@
 import org.apache.ibatis.executor.keygen.KeyGenerator;
 import org.apache.ibatis.executor.parameter.DefaultParameterHandler;
 import org.apache.ibatis.executor.parameter.ParameterHandler;
-import org.apache.ibatis.executor.resultset.DefaultResultSetHandler;
+import org.apache.ibatis.executor.resultset.NestedResultSetHandler;
 import org.apache.ibatis.executor.resultset.ResultSetHandler;
+import org.apache.ibatis.executor.resultset.FastResultSetHandler;
 import org.apache.ibatis.executor.statement.RoutingStatementHandler;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.mapping.*;
@@ -180,7 +181,9 @@
   }
 
   public ResultSetHandler newResultSetHandler(Executor executor, 
MappedStatement mappedStatement, RowBounds rowBounds, ParameterHandler 
parameterHandler, ResultHandler resultHandler, BoundSql boundSql) {
-    ResultSetHandler resultSetHandler = new DefaultResultSetHandler(executor, 
mappedStatement, parameterHandler, resultHandler, boundSql, rowBounds);
+    ResultSetHandler resultSetHandler = mappedStatement.hasNestedResultMaps() ?
+        new NestedResultSetHandler(executor, mappedStatement, 
parameterHandler, resultHandler, boundSql, rowBounds)
+        : new FastResultSetHandler(executor, mappedStatement, 
parameterHandler, resultHandler, boundSql, rowBounds);
     resultSetHandler = (ResultSetHandler) 
interceptorChain.pluginAll(resultSetHandler);
     return resultSetHandler;
   }

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=823998&r1=823997&r2=823998&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
 Sun Oct 11 02:14:26 2009
@@ -41,7 +41,7 @@
   public void shouldSelectCountOfPosts() throws Exception {
     SqlSession session = sqlMapper.openSession();
     try {
-      int count = (Integer) 
session.selectOne("domain.blog.mappers.BlogMapper.selectCountOfPosts");
+      Integer count = (Integer) 
session.selectOne("domain.blog.mappers.BlogMapper.selectCountOfPosts");
       assertEquals(5, count);
     } finally {
       session.close();

Modified: ibatis/java/ibatis-3/trunk/version.properties
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/version.properties?rev=823998&r1=823997&r2=823998&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/version.properties (original)
+++ ibatis/java/ibatis-3/trunk/version.properties Sun Oct 11 02:14:26 2009
@@ -1,5 +1,5 @@
 #Build version info
-#Sat Aug 29 18:30:00 MDT 2009
+#Sat Oct 10 20:04:35 MDT 2009
 version=3.0.0
-buildDate=2009/08/29 18\:30
-buildNum=201
+buildDate=2009/10/10 20\:04
+buildNum=203


Reply via email to