Author: gbayon
Date: Mon Mar 13 12:09:18 2006
New Revision: 385645

URL: http://svn.apache.org/viewcvs?rev=385645&view=rev
Log:
- Begin to use ObjectFactory

Modified:
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
    
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Statements/Statement.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs?rev=385645&r1=385644&r2=385645&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs 
(original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs 
Mon Mar 13 12:09:18 2006
@@ -2,7 +2,7 @@
 #region Apache Notice
 /*****************************************************************************
  * $Header: $
- * $Revision: $
+ * $Revision$
  * $Date$
  * 
  * iBATIS.NET Data Mapper
@@ -39,6 +39,7 @@
 using IBatisNet.Common.Exceptions;
 using IBatisNet.Common.Logging;
 using IBatisNet.Common.Utilities;
+using IBatisNet.Common.Utilities.Objects;
 using IBatisNet.Common.Xml;
 using IBatisNet.DataMapper.Configuration.Alias;
 using IBatisNet.DataMapper.Configuration.Cache;
@@ -648,8 +649,10 @@
                private void Initialize()
                {
                        Reset();
-                       
-                       _configScope.SqlMapper = new SqlMapper( new 
TypeHandlerFactory() );
+
+            // To do, analyse config file to set allowCodeGeneration on object 
factory
+                       _configScope.SqlMapper = new SqlMapper( new 
ObjectFactory(false), new TypeHandlerFactory() );
+
 
                        #region Cache Alias
 

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=385645&r1=385644&r2=385645&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
 Mon Mar 13 12:09:18 2006
@@ -1,12 +1,12 @@
 
 #region Apache Notice
 /*****************************************************************************
- * $Header: $
- * $Revision: $
- * $Date$
+ * $Revision$
+ * $LastChangedDate$
+ * $LastChangedBy$
  * 
  * iBATIS.NET Data Mapper
- * Copyright (C) 2004 - Gilles Bayon
+ * Copyright (C) 2006/2005 - The Apache Software Foundation
  *  
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
  
********************************************************************************/
 #endregion
 
-#region Imports
+#region Using
 
 using System;
 using System.Collections;
@@ -63,6 +63,8 @@
                /// </summary>
                private const string XML_SUBMAP = "subMap";
 
+        private IFactory _objectFactory = null;
+
                #region Fields
                [NonSerialized]
                private string _id = string.Empty;
@@ -200,6 +202,10 @@
                        try
                        {
                                _class = 
configScope.SqlMapper.TypeHandlerFactory.GetType(_className);
+                               if (Type.GetTypeCode(_class) == TypeCode.Object)
+                               {
+                                       _objectFactory = 
configScope.SqlMapper.ObjectFactory.CreateFactory(_class);
+                               }
 
                                // Load the child node
                                GetChildNode(configScope);
@@ -278,7 +284,7 @@
 
                        if (typeCode == TypeCode.Object)
                        {
-                               return Activator.CreateInstance(_class);
+                return _objectFactory.CreateInstance();
                        }
                        else
                        {

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Statements/Statement.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Statements/Statement.cs?rev=385645&r1=385644&r2=385645&view=diff
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Statements/Statement.cs
 (original)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Statements/Statement.cs
 Mon Mar 13 12:09:18 2006
@@ -1,12 +1,12 @@
 
 #region Apache Notice
 /*****************************************************************************
- * $Header: $
- * $Revision: $
- * $Date$
+ * $Revision$
+ * $LastChangedDate$
+ * $LastChangedBy$
  * 
  * iBATIS.NET Data Mapper
- * Copyright (C) 2004 - Gilles Bayon
+ * Copyright (C) 2006/2005 - The Apache Software Foundation
  *  
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,6 +31,7 @@
 using System.Data;
 using System.Xml.Serialization;
 using IBatisNet.Common.Utilities.TypesResolver;
+using IBatisNet.Common.Utilities.Objects;
 using IBatisNet.DataMapper.Configuration.Cache;
 using IBatisNet.DataMapper.Configuration.ParameterMapping;
 using IBatisNet.DataMapper.Configuration.ResultMapping;
@@ -90,6 +91,10 @@
                private ISql _sql = null;
                [NonSerialized]
                private string _extendStatement = string.Empty;
+        [NonSerialized]
+        private IFactory _resultClassFactory = null;
+        private IFactory _listClassFactory = null;
+
                #endregion
 
                #region Properties
@@ -311,6 +316,11 @@
                        if (_resultClassName != string.Empty )
                        {
                                _resultClass = 
configurationScope.SqlMapper.TypeHandlerFactory.GetType(_resultClassName);
+                               if (Type.GetTypeCode(_resultClass) == 
TypeCode.Object &&
+                                       (_resultClass.IsValueType == false))
+                               {
+                                       _resultClassFactory = 
configurationScope.SqlMapper.ObjectFactory.CreateFactory(_resultClass);   
+                               }
                        }
                        if (_parameterClassName != string.Empty )
                        {
@@ -319,6 +329,7 @@
                        if (_listClassName != string.Empty )
                        {
                                _listClass = 
configurationScope.SqlMapper.TypeHandlerFactory.GetType(_listClassName);
+                _listClassFactory = 
configurationScope.SqlMapper.ObjectFactory.CreateFactory(_listClass);
                        }
                }
 
@@ -329,14 +340,22 @@
                /// <returns>An object.</returns>
                public object CreateInstanceOfResultClass()
                {
-                       if (_resultClass.IsPrimitive || _resultClass == typeof 
(string) )
+                       if (_resultClass.IsPrimitive || _resultClass == typeof 
(string))
                        {
                                TypeCode typeCode = 
Type.GetTypeCode(_resultClass);
                                return 
TypeAliasResolver.InstantiatePrimitiveType(typeCode);
                        }
                        else
                        {
-                               if (_resultClass == typeof (Guid))
+                               if (_resultClass == typeof (DateTime))
+                               {
+                                       return new DateTime();
+                               }
+                               else if (_resultClass == typeof (Decimal))      
                        
+                               {
+                                       return new Decimal();
+                               }
+                               else if (_resultClass == typeof (Guid))         
                
                                {
                                        return Guid.Empty;
                                }
@@ -346,7 +365,7 @@
                                }
                                else
                                {
-                                       return 
Activator.CreateInstance(_resultClass);
+                                       return 
_resultClassFactory.CreateInstance();
                                }
                        }
                }
@@ -358,7 +377,7 @@
                /// <returns>An object which implment IList.</returns>
                public IList CreateInstanceOfListClass()
                {
-                       return (IList)Activator.CreateInstance(_listClass);
+            return (IList)_listClassFactory.CreateInstance(); ;
                }
                #endregion
 

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs?rev=385645&r1=385644&r2=385645&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs Mon 
Mar 13 12:09:18 2006
@@ -2,7 +2,7 @@
 #region Apache Notice
 /*****************************************************************************
  * $Header: $
- * $Revision: $
+ * $Revision$
  * $Date$
  * 
  * iBATIS.NET Data Mapper
@@ -86,6 +86,14 @@
                #endregion 
 
                #region Properties
+
+        /// <summary>
+        /// The factory for object
+        /// </summary>
+        public IObjectFactory ObjectFactory
+        {
+            get { return _sqlMapper.ObjectFactory; }
+        }
 
                /// <summary>
                /// XmlNamespaceManager

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs?rev=385645&r1=385644&r2=385645&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs Mon Mar 13 
12:09:18 2006
@@ -2,7 +2,7 @@
 #region Apache Notice
 /*****************************************************************************
  * $Header: $
- * $Revision: $
+ * $Revision$
  * $Date$
  * 
  * iBATIS.NET Data Mapper
@@ -37,6 +37,7 @@
 using System.Xml;
 using IBatisNet.Common;
 using IBatisNet.Common.Utilities;
+using IBatisNet.Common.Utilities.Objects;
 using IBatisNet.DataMapper.Configuration;
 using IBatisNet.DataMapper.Configuration.Cache;
 using IBatisNet.DataMapper.Configuration.ParameterMapping;
@@ -103,6 +104,7 @@
                /// Container session unique for each thread. 
                /// </summary>
                private SessionHolder _sessionHolder = null;
+        private IObjectFactory _objectFactory = null;
 
                #endregion
 
@@ -152,14 +154,23 @@
                {
                        get { return _typeHandlerFactory; }
                }
+
+        /// <summary>
+        /// The factory for object
+        /// </summary>
+        public IObjectFactory ObjectFactory
+        {
+            get { return _objectFactory; }
+        }
                #endregion
 
                #region Constructor (s) / Destructor
                /// <summary>
                /// Create a new SqlMap
                /// </summary>
-               internal SqlMapper(TypeHandlerFactory typeHandlerFactory) 
+               internal SqlMapper(IObjectFactory objectFactory, 
TypeHandlerFactory typeHandlerFactory) 
                {
+            _objectFactory = objectFactory;
                        _typeHandlerFactory = typeHandlerFactory;
                        _id = 
HashCodeProvider.GetIdentityHashCode(this).ToString();
                        _sessionHolder = new SessionHolder(_id);


Reply via email to