Author: gbayon
Date: Wed Oct 26 11:03:52 2005
New Revision: 328694

URL: http://svn.apache.org/viewcvs?rev=328694&view=rev
Log:
- Added support for Implicit Result Maps as
    <result property='author.firstName’ column=” Persons.FirstName”/>
or
   SELECT    Persons.FirstName as 'author.firstName’

Modified:
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs 
Wed Oct 26 11:03:52 2005
@@ -99,7 +99,7 @@
                /// <param name="obj">The object to check</param>
                /// <param name="propertyName">The name of the property</param>
                /// <returns>The type of the property</returns>
-               private static Type GetPropertyTypeForSetter(object obj, string 
propertyName) 
+               public static Type GetPropertyTypeForSetter(object obj, string 
propertyName) 
                {
                        Type type = obj.GetType();
 
@@ -243,11 +243,39 @@
                        return type;
                }
 
+               /// <summary>
+               ///  Returns the PropertyInfo of the set property on the 
specified type.
+               /// </summary>
+               /// <param name="type">The type to check</param>
+               /// <param name="propertyName">The name of the property</param>
+               /// <returns>The type of the property</returns>
+               public static PropertyInfo GetPropertyInfoForSetter(Type type, 
string propertyName) 
+               {
+                       PropertyInfo propertyInfo =null;
+                       if (propertyName.IndexOf('.') > -1) 
+                       {
+                               StringTokenizer parser = new 
StringTokenizer(propertyName, ".");
+                               IEnumerator enumerator = parser.GetEnumerator();
+                               Type parentType = null;
 
+                               while (enumerator.MoveNext()) 
+                               {
+                                       propertyName = 
(string)enumerator.Current;
+                                       parentType = type;
+                                       type = 
ReflectionInfo.GetInstance(type).GetSetterType(propertyName);
+                               }
+                               propertyInfo = 
ReflectionInfo.GetInstance(parentType).GetSetter(propertyName);
+                       } 
+                       else 
+                       {
+                               propertyInfo = 
ReflectionInfo.GetInstance(type).GetSetter(propertyName);
+                       }
+
+                       return propertyInfo;
+               }
 
                private static object GetArrayProperty(object obj, string 
indexedName) 
                {
-
                        object value = null;
 
                        try 
@@ -614,7 +642,6 @@
                        
                        return hasProperty;
                }
-
 
                /// <summary>
                /// 

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs 
Wed Oct 26 11:03:52 2005
@@ -170,10 +170,12 @@
                public PropertyInfo GetSetter(string propertyName) 
                {
                        PropertyInfo propertyInfo = (PropertyInfo) 
_setProperties[propertyName];
+
                        if (propertyInfo == null) 
                        {
                                throw new ProbeException("There is no Set 
property named '" + propertyName + "' in class '" + _className + "'");
-                       }
+                       }                               
+
                        return propertyInfo;
                }
 
@@ -289,6 +291,34 @@
                        }
                }
 
+//             /// <summary>
+//             ///  Returns the type that the get expects to receive as a 
parameter when
+//             ///  setting a property value.
+//             /// </summary>
+//             /// <param name="type">The type to check</param>
+//             /// <param name="propertyName">The name of the property</param>
+//             /// <returns>The type of the property</returns>
+//             public static ReflectionInfo GetReflectionInfoForGetter(Type 
type, string propertyName) 
+//             {
+//                     ReflectionInfo reflectionInfo = null;
+//                     if (propertyName.IndexOf('.') > -1) 
+//                     {
+//                             StringTokenizer parser = new 
StringTokenizer(propertyName, ".");
+//                             IEnumerator enumerator = parser.GetEnumerator();
+//
+//                             while (enumerator.MoveNext()) 
+//                             {
+//                                     propertyName = 
(string)enumerator.Current;
+//                                     type = 
ReflectionInfo.GetInstance(type).GetGetterType(propertyName);
+//                             }
+//                     } 
+//                     else 
+//                     {
+//                             reflectionInfo = 
ReflectionInfo.GetInstance(type);
+//                     }
+//
+//                     return type;
+//             }
 
                /// <summary>
                /// Gets an instance of ReflectionInfo for the specified type.

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
                
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+                               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id" column="Order_ID"/>
                        <result property="Date" column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -256,6 +272,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -152,7 +152,6 @@
                                                
column="Order_ID=Order_ID,LineItem_ID=Order_FavouriteLineItem" 
                                                select="GetDynSpecificLineItem" 
/>
                </resultMap>
-               
                <resultMap id="order-joined-favourite" class="Order">
                        <result property="Id"                                   
column="Order_ID"/>
                        <result property="Date"                                 
column="Order_Date"/>
@@ -165,6 +164,22 @@
                        <result property="PostalCode"                   
column="Order_PostalCode"/>
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
+               
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
 
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
@@ -268,6 +283,38 @@
                     parameterClass="Integer"
                     resultMap="order-joined-favourite" >
                        select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+               
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
                        where Orders.Order_ID = LineItems.Order_ID
                        and Order_FavouriteLineItem = LineItems.LineItem_ID
                        and Orders.Order_ID = #value#

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -166,6 +166,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
 
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -270,6 +286,38 @@
                        and Order_FavouriteLineItem = LineItems.LineItem_ID
                        and Orders.Order_ID = #value#
                </statement>
+
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>            
                
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -143,6 +143,22 @@
                        <result property="FavouriteLineItem"    
column="Order_ID=Order_ID,LineItem_ID=Order_FavouriteLineItem" 
select="GetSpecificLineItem" />
                </resultMap>
                
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+                               
                <resultMap id="order-with-dyn-favourite-line-item" 
class="Order">
                        <result property="Id"                                   
column="Order_ID"/>
                        <result property="Date"                                 
column="Order_Date"/>
@@ -284,6 +300,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                                                                               
        
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
 
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -157,6 +157,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
                
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+                               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -251,7 +267,39 @@
                        and Order_FavouriteLineItem = LineItems.LineItem_ID
                        and Orders.Order_ID = #value#
                </statement>
-               
+
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml 
Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
 
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
 Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
 
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
 Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
                        <result property="FavouriteLineItem"    
resultMapping="LineItem.LineItem" />
                </resultMap>
 
+               <resultMap id="order-joined-favourite2" class="Order">
+                       <result property="Id"                                   
column="Order_ID"/>
+                       <result property="Date"                                 
column="Order_Date"/>
+                       <result property="CardExpiry"                   
column="Order_CardExpiry"/>
+                       <result property="CardType"                             
column="Order_CardType"/>
+                       <result property="CardNumber"                   
column="Order_CardNumber"/>
+                       <result property="Street"                               
column="Order_Street"/>
+                       <result property="City"                                 
column="Order_City"/>
+                       <result property="Province"                             
column="Order_Province"/>
+                       <result property="PostalCode"                   
column="Order_PostalCode"/>
+                       <result property="FavouriteLineItem.Id" 
column="LineItem_ID"/>
+                       <result property="FavouriteLineItem.Code" 
column="LineItem_Code"/>
+                       <result property="FavouriteLineItem.Quantity" 
column="LineItem_Quantity"/>
+                       <result property="FavouriteLineItem.Price" 
column="LineItem_Price"/>                    
+               </resultMap>
+               
                <resultMap id="order-joined-with-account" class="Order">
                        <result property="Id"         column="Order_ID"/>
                        <result property="Date"       column="Order_Date" 
nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
                        and Orders.Order_ID = #value#
                </statement>
                
+               <statement id="GetOrderJoinedFavourite2"
+                    parameterClass="Integer"
+                    resultMap="order-joined-favourite2" >
+                       select * from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+
+               <statement id="GetOrderJoinedFavourite3"
+                    parameterClass="Integer"
+                    resultClass="Order" >
+                       select 
+                               Orders.Order_ID as Id,
+                               Order_Date as Date,
+                               Order_CardExpiry as CardExpiry,
+                               Order_CardType as CardType,
+                               Order_CardNumber as CardNumber,
+                               Order_Street as Street,
+                               Order_City as City,
+                               Order_Province as Province,
+                               Order_PostalCode as PostalCode,
+                               LineItem_ID as "FavouriteLineItem.Id",
+                               LineItem_Code as "FavouriteLineItem.Code",
+                               LineItem_Quantity as 
"FavouriteLineItem.Quantity",
+                               LineItem_Price as "FavouriteLineItem.Price"
+                       from Orders, LineItems
+                       where Orders.Order_ID = LineItems.Order_ID
+                       and Order_FavouriteLineItem = LineItems.LineItem_ID
+                       and Orders.Order_ID = #value#
+               </statement>
+                               
                <statement id="GetOrderWithFavouriteLineItem"
                                        parameterClass="int"
                                        
resultMap="order-with-favourite-line-item" >

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
 Wed Oct 26 11:03:52 2005
@@ -290,6 +290,38 @@
                }
 
                /// <summary>
+               /// Test nested object.
+               /// Order + FavouriteLineItem in order.FavouriteLineItem
+               /// </summary>
+               [Test]
+               public void TestNestedObjects2() 
+               {
+                       Order order = (Order) 
sqlMap.QueryForObject("GetOrderJoinedFavourite2", 1);
+
+                       AssertOrder1(order);
+
+                       Assert.IsNotNull(order.FavouriteLineItem);
+                       Assert.AreEqual(2, order.FavouriteLineItem.Id, 
"order.FavouriteLineItem.Id");
+                       Assert.AreEqual("ESM-23", order.FavouriteLineItem.Code);
+               }
+
+               /// <summary>
+               /// Test Implicit Result Maps
+               /// </summary>
+               [Test]
+               public void TestImplicitResultMaps() 
+               {
+                       Order order = (Order) 
sqlMap.QueryForObject("GetOrderJoinedFavourite3", 1);
+
+                       AssertOrder1(order);
+
+                       Assert.IsNotNull(order.FavouriteLineItem);
+                       Assert.AreEqual(2, order.FavouriteLineItem.Id, 
"order.FavouriteLineItem.Id");
+                       Assert.AreEqual("ESM-23", order.FavouriteLineItem.Code);
+
+               }
+
+               /// <summary>
                /// Test a composite Key Mapping.
                /// It must be: property1=column1,property2=column2,...
                /// </summary>

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
 Wed Oct 26 11:03:52 2005
@@ -32,6 +32,7 @@
 using System.Xml;
 using System.Xml.Serialization;
 using IBatisNet.Common.Exceptions;
+using IBatisNet.Common.Utilities.Objects;
 using IBatisNet.Common.Utilities.TypesResolver;
 using IBatisNet.DataMapper.Configuration.Serializers;
 using IBatisNet.DataMapper.Scope;
@@ -315,7 +316,7 @@
 
                                if ( property.PropertyInfo != null )
                                {
-                                       property.PropertyInfo.SetValue( target, 
dataBaseValue, null );
+                                       ObjectProbe.SetPropertyValue(target, 
property.PropertyName, dataBaseValue);
                                }
                                else // Primitive type ('value')
                                {

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
 Wed Oct 26 11:03:52 2005
@@ -259,7 +259,7 @@
                {
                        if ( _propertyName.Length>0 &&_propertyName != "value" 
&& !typeof(IDictionary).IsAssignableFrom(resultClass) )
                        {
-                               _propertyInfo = 
ReflectionInfo.GetInstance(resultClass).GetSetter( _propertyName );
+                               _propertyInfo = 
ObjectProbe.GetPropertyInfoForSetter(resultClass, _propertyName);
                        }
 
                        if (this.CallBackName!=null && this.CallBackName.Length 
>0)

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs 
Wed Oct 26 11:03:52 2005
@@ -35,7 +35,6 @@
 using IBatisNet.Common.Logging;
 using IBatisNet.Common.Utilities.Objects;
 using IBatisNet.DataMapper.Commands;
-using IBatisNet.DataMapper.Configuration.Cache;
 using IBatisNet.DataMapper.Configuration.ParameterMapping;
 using IBatisNet.DataMapper.Configuration.ResultMapping;
 using IBatisNet.DataMapper.Configuration.Statements;
@@ -744,7 +743,7 @@
                        object parameterObject, 
                        string keyProperty, 
                        string valueProperty, 
-                       SqlMapper.DictionaryRowDelegate rowDelegate  )
+                                                    
SqlMapper.DictionaryRowDelegate rowDelegate  )
                {
                        IDictionary map = new Hashtable();
 
@@ -1013,25 +1012,28 @@
                                {
                                        if (dataBaseValue == null)
                                        {
-                                               if (property.PropertyInfo != 
null)
-                                               {
-                                                       
property.PropertyInfo.SetValue( target, null, null );
-                                               }
-                                               else
-                                               {
-                                                       
ObjectProbe.SetPropertyValue( target, property.PropertyName, null);
-                                               }                               
        
+                                               ObjectProbe.SetPropertyValue( 
target, property.PropertyName, null);
+//                                             if (property.PropertyInfo != 
null)
+//                                             {
+//                                                     
property.PropertyInfo.SetValue( target, null, null );
+//                                             }
+//                                             else
+//                                             {
+//                                                     
ObjectProbe.SetPropertyValue( target, property.PropertyName, null);
+//                                             }                               
        
                                        }
                                        else
                                        {
-                                               if (property.PropertyInfo != 
null)
-                                               {
-                                                       
property.PropertyInfo.SetValue( target, dataBaseValue, null );
-                                               }
-                                               else
-                                               {
-                                                       
ObjectProbe.SetPropertyValue( target, property.PropertyName, dataBaseValue);
-                                               }                               
        
+                                               
ObjectProbe.SetPropertyValue(target, property.PropertyName, dataBaseValue);
+
+//                                             if (property.PropertyInfo != 
null)
+//                                             {
+//                                                     
property.PropertyInfo.SetValue( target, dataBaseValue, null );
+//                                             }
+//                                             else
+//                                             {
+//                                                     
ObjectProbe.SetPropertyValue( target, property.PropertyName, dataBaseValue);
+//                                             }                               
        
                                        }
                                }
                        }
@@ -1130,33 +1132,60 @@
 
                                                ResultProperty property = new 
ResultProperty();
                                                property.ColumnName = 
columnName;
+                                               property.ColumnIndex = i;
 
-                                               if (matchedPropertyInfo != null 
) 
-                                               {
-                                                       property.PropertyName = 
matchedPropertyInfo.Name;
-                                                       
property.Initialize(typeHandlerFactory, matchedPropertyInfo );
-                                                       
_resultMap.AddResultPropery(property);
-                                               }
-                                               else if (resultObject is 
Hashtable) 
+                                               if (resultObject is Hashtable) 
                                                {
                                                        property.PropertyName = 
columnName;
                                                        
_resultMap.AddResultPropery(property);
                                                }
 
-                                               // Fix for IBATISNET-73 
(JIRA-73) from Ron Grabowski
-                                               if (property.PropertyName != 
null && property.PropertyName.Length > 0)
+                                               Type propertyType = null;
+
+                                               if (matchedPropertyInfo == null 
)
                                                {
-                                                       // Set TypeHandler
-                                                       Type propertyType = 
reflectionInfo.GetSetterType(property.PropertyName);
-                                                       property.TypeHandler = 
typeHandlerFactory.GetTypeHandler( propertyType );
+                                                       try
+                                                       {
+                                                               propertyType = 
ObjectProbe.GetPropertyTypeForSetter(resultObject, columnName);
+                                                       }
+                                                       catch
+                                                       {
+                                                               
_logger.Error("The column [" + columnName + "] could not be auto mapped to a 
property on [" + resultObject.ToString() + "]");
+                                                       }
                                                }
                                                else
                                                {
-                                                       if 
(_logger.IsDebugEnabled)
+                                                       propertyType = 
reflectionInfo.GetSetterType(matchedPropertyInfo.Name);
+                                               }
+
+                                               if(propertyType != null || 
matchedPropertyInfo != null) 
+                                               {
+                                                       property.PropertyName = 
(matchedPropertyInfo != null ? matchedPropertyInfo.Name : columnName );
+                                                       if (matchedPropertyInfo 
!= null)
                                                        {
-                                                               
_logger.Debug("The column [" + columnName + "] could not be auto mapped to a 
property on [" + resultObject.ToString() + "]");
+                                                               
property.Initialize(typeHandlerFactory, matchedPropertyInfo );
                                                        }
-                                               }
+                                                       else
+                                                       {
+                                                               
property.TypeHandler = typeHandlerFactory.GetTypeHandler(propertyType);
+                                                       }
+                                                       
_resultMap.AddResultPropery(property);
+                                               } 
+
+//                                             // Fix for IBATISNET-73 
(JIRA-73) from Ron Grabowski
+//                                             if (property.PropertyName != 
null && property.PropertyName.Length > 0)
+//                                             {
+//                                                     // Set TypeHandler
+//                                                     Type propertyType = 
reflectionInfo.GetSetterType(property.PropertyName);
+//                                                     property.TypeHandler = 
typeHandlerFactory.GetTypeHandler( propertyType );
+//                                             }
+//                                             else
+//                                             {
+//                                                     if 
(_logger.IsDebugEnabled)
+//                                                     {
+//                                                             
_logger.Debug("The column [" + columnName + "] could not be auto mapped to a 
property on [" + resultObject.ToString() + "]");
+//                                                     }
+//                                             }
                                        }
                                } 
                                catch (Exception e) 


Reply via email to