Author: gbayon
Date: Wed Jun 21 09:40:27 2006
New Revision: 416031

URL: http://svn.apache.org/viewvc?rev=416031&view=rev
Log:
- Refactor complex result property process
- Fixed issue on DelegateFactory
- Fixed issue on object factory when no match constructor exists

Modified:
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Item.cs
    
ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ObjectFactoryTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/DelegateFactory.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryBuilder.cs
    
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Item.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Item.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Item.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Item.cs Wed Jun 21 
09:40:27 2006
@@ -11,4 +11,11 @@
                {
                }
        }
+
+    public class ItemBis
+    {
+        public ItemBis(string description)
+        {
+        }
+    }
 }

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ObjectFactoryTest.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ObjectFactoryTest.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ObjectFactoryTest.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ObjectFactoryTest.cs
 Wed Jun 21 09:40:27 2006
@@ -42,6 +42,17 @@
                        object obj = factory.CreateInstance(null);
                }
 
+        [Test]
+        [ExpectedException(typeof(ProbeException))]
+        public void NoMatchConstructor()
+        {
+            IObjectFactory objectFactory = new ObjectFactory(true);
+
+            IFactory factory = objectFactory.CreateFactory(typeof(ItemBis), 
Type.EmptyTypes);
+
+            object obj = factory.CreateInstance(null);
+        }
+
                [Test]
                [ExpectedException(typeof(ProbeException))]
                public void ProtectedConstructor()

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/DelegateFactory.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/DelegateFactory.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/DelegateFactory.cs 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/DelegateFactory.cs 
Wed Jun 21 09:40:27 2006
@@ -75,7 +75,7 @@
             // Emit the IL for Create method. 
             // Add test if contructeur not public
             ConstructorInfo constructorInfo = 
typeToCreate.GetConstructor(VISIBILITY, null, argumentTypes, null);
-            if (!constructorInfo.IsPublic)
+            if (constructorInfo==null || !constructorInfo.IsPublic)
             {
                 throw new ProbeException(
                     string.Format("Unable to optimize create instance. Cause : 
Could not find public constructor matching specified arguments for type 
\"{0}\".", typeToCreate.Name));

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryBuilder.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryBuilder.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryBuilder.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryBuilder.cs 
Wed Jun 21 09:40:27 2006
@@ -114,7 +114,7 @@
 
                        // Add test if contructeur not public
                        ConstructorInfo ctor = 
typeToCreate.GetConstructor(VISIBILITY, null, argumentTypes, null);
-                       if (!ctor.IsPublic)
+                       if (ctor==null || !ctor.IsPublic)
                        {
                                throw new ProbeException(
                                        string.Format("Unable to optimize 
create instance. Cause : Could not find public constructor matching specified 
arguments for type \"{0}\".", typeToCreate.Name));

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
 Wed Jun 21 09:40:27 2006
@@ -103,7 +103,7 @@
             {
                 MethodInfo methodInfo = null;
 #if dotnet2
-                methodInfo = propertyInfo.GetSetMethod();
+                methodInfo = propertyInfo.GetGetMethod();
 #else
                 methodInfo = targetType.GetMethod("get_" + propertyName);
 #endif
@@ -162,7 +162,7 @@
             {
                 MethodInfo methodInfo = null;
 #if dotnet2
-                methodInfo = propertyInfo.GetSetMethod();
+                methodInfo = propertyInfo.GetGetMethod();
 #else
                                methodInfo = targetType.GetMethod("get_" + 
propertyName,BindingFlags.Public | BindingFlags.Instance | 
BindingFlags.DeclaredOnly);
                                if (methodInfo == null)

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs?rev=416031&r1=416030&r2=416031&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs
 Wed Jun 21 09:40:27 2006
@@ -301,11 +301,12 @@
                                }
                                else // complex member name FavouriteLineItem.Id
                                {
-                                       MemberInfo propertyInfo = 
ObjectProbe.GetMemberInfoForSetter(parameterClass, _propertyName);
-                                       string memberName = 
_propertyName.Substring( _propertyName.LastIndexOf('.')+1);
+                                   string memberName = 
_propertyName.Substring( _propertyName.LastIndexOf('.')+1);
+                    string parentName = 
_propertyName.Substring(0,_propertyName.LastIndexOf('.'));
+                    Type parentType = 
ObjectProbe.GetMemberTypeForGetter(parameterClass, parentName);
 
                     IGetAccessorFactory getAccessorFactory = 
scope.DataExchangeFactory.AccessorFactory.GetAccessorFactory;
-                    _getAccessor = 
getAccessorFactory.CreateGetAccessor(propertyInfo.ReflectedType, memberName);
+                    _getAccessor = 
getAccessorFactory.CreateGetAccessor(parentType, memberName);
                                }
                        }
 


Reply via email to