Author: cbegin
Date: Mon Sep  7 07:23:49 2009
New Revision: 812020

URL: http://svn.apache.org/viewvc?rev=812020&view=rev
Log:
ignored properties of unknown types

Modified:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NewResultSetHandler.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NewResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NewResultSetHandler.java?rev=812020&r1=812019&r2=812020&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NewResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NewResultSetHandler.java
 Mon Sep  7 07:23:49 2009
@@ -124,10 +124,12 @@
     final List<ResultMapping> propertyMappings = 
resultMap.getPropertyResultMappings();
     for (ResultMapping propertyMapping : propertyMappings) {
       final TypeHandler typeHandler = propertyMapping.getTypeHandler();
-      final String property = propertyMapping.getProperty();
-      final String column = propertyMapping.getColumn();
-      final Object value = typeHandler.getResult(rs, column);
-      metaObject.setValue(property, value);
+      if (typeHandler != null) {
+        final String property = propertyMapping.getProperty();
+        final String column = propertyMapping.getColumn();
+        final Object value = typeHandler.getResult(rs, column);
+        metaObject.setValue(property, value);
+      }
     }
   }
 
@@ -136,9 +138,11 @@
       final String property = metaObject.findProperty(columnName);
       if (property != null) {
         final Class propertyType = metaObject.getSetterType(property);
-        final TypeHandler typeHandler = 
typeHandlerRegistry.getTypeHandler(propertyType);
-        final Object value = typeHandler.getResult(rs, columnName);
-        metaObject.setValue(property, value);
+        if (typeHandlerRegistry.hasTypeHandler(propertyType)) {
+          final TypeHandler typeHandler = 
typeHandlerRegistry.getTypeHandler(propertyType);
+          final Object value = typeHandler.getResult(rs, columnName);
+          metaObject.setValue(property, value);
+        }
       }
     }
   }
@@ -167,9 +171,7 @@
       final String columnName = configuration.isUseColumnLabel() ? 
rsmd.getColumnLabel(1) : rsmd.getColumnName(1);
       final TypeHandler typeHandler = 
typeHandlerRegistry.getTypeHandler(resultType);
       return typeHandler.getResult(rs,columnName);
-    } else if (constructorMappings.size() == 0) {
-      return objectFactory.create(resultType);
-    } else {
+    } else if (constructorMappings.size() > 0) {
       final List<Class> parameterTypes = new ArrayList<Class>();
       final List<Object> parameterValues = new ArrayList<Object>();
       for(ResultMapping constructorMapping : constructorMappings) {
@@ -181,6 +183,8 @@
         parameterValues.add(value);
       }
       return objectFactory.create(resultType, parameterTypes, parameterValues);
+    } else {
+      return objectFactory.create(resultType);
     }
   }
 


Reply via email to