Author: cbegin
Date: Sun Apr 18 01:07:48 2010
New Revision: 935286

URL: http://svn.apache.org/viewvc?rev=935286&view=rev
Log:
ibatis-776 Error if no resultType or resultMap provided in XML file, should 
iBatis be able to infer resultType from mapper interface

Modified:
    ibatis/java/ibatis-3/trunk/   (props changed)
    
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
    
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java

Propchange: ibatis/java/ibatis-3/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Apr 18 01:07:48 2010
@@ -6,3 +6,5 @@ ibatis-3-core.iml
 .project
 *.ipr
 *.iws
+
+ibatis-core.iml

Modified: 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java?rev=935286&r1=935285&r2=935286&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
 Sun Apr 18 01:07:48 2010
@@ -93,17 +93,32 @@ public class FastResultSetHandler implem
   public List handleResultSets(Statement stmt) throws SQLException {
     final List multipleResults = new ArrayList();
     final List<ResultMap> resultMaps = mappedStatement.getResultMaps();
-    int count = 0;
+    int resultMapCount = resultMaps.size();
+    int resultSetCount = 0;
     ResultSet rs = stmt.getResultSet();
-    while (rs != null && resultMaps.size() > count) {
-      final ResultMap resultMap = resultMaps.get(count);
+    validateResultMapsCount(rs,resultMapCount);
+    while (rs != null && resultMapCount > resultSetCount) {
+      final ResultMap resultMap = resultMaps.get(resultSetCount);
       handleResultSet(rs, resultMap, multipleResults);
       rs = getNextResultSet(stmt);
-      count++;
+      cleanUpAfterHandlingResultSet();
+      resultSetCount++;
     }
     return collapseSingleResultList(multipleResults);
   }
 
+  protected void cleanUpAfterHandlingResultSet() {
+  }
+
+  protected void validateResultMapsCount(ResultSet rs, int resultMapCount) {
+    if (rs != null && resultMapCount < 1) {
+      throw new ExecutorException(
+          "A query was run and no Result Maps were found for the Mapped 
Statement '"
+              + mappedStatement.getId()
+              + "'.  It's likely that neither a Result Type nor a Result Map 
was specified.");
+    }
+  }
+
   protected void handleResultSet(ResultSet rs, ResultMap resultMap, List 
multipleResults) throws SQLException {
     if (resultHandler == null) {
       DefaultResultHandler defaultResultHandler = new DefaultResultHandler();

Modified: 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java?rev=935286&r1=935285&r2=935286&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 Sun Apr 18 01:07:48 2010
@@ -47,19 +47,9 @@ public class NestedResultSetHandler exte
   // HANDLE RESULT SETS
   //
 
-  public List handleResultSets(Statement stmt) throws SQLException {
-    final List multipleResults = new ArrayList();
-    final List<ResultMap> resultMaps = mappedStatement.getResultMaps();
-    int count = 0;
-    ResultSet rs = stmt.getResultSet();
-    while (rs != null) {
-      final ResultMap resultMap = resultMaps.get(count);
-      handleResultSet(rs, resultMap, multipleResults);
-      rs = getNextResultSet(stmt);
-      count++;
-      globalRowValueCache.clear();
-    }
-    return collapseSingleResultList(multipleResults);
+  protected void cleanUpAfterHandlingResultSet() {
+    super.cleanUpAfterHandlingResultSet();
+    globalRowValueCache.clear();
   }
 
   //


Reply via email to