Author: gbayon
Date: Mon Jul 24 11:41:30 2006
New Revision: 425143

URL: http://svn.apache.org/viewvc?rev=425143&view=rev
Log:
Cosmetic changes

- Updated change log
- Added logging for IFactory

Added:
    
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs  
 (with props)
Modified:
    ibatis/trunk/cs/mapper/IBatisNet.Common/IBatisNet.Common.2005.csproj
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectFactory.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/ChangeLog.txt

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/IBatisNet.Common.2005.csproj
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/IBatisNet.Common.2005.csproj?rev=425143&r1=425142&r2=425143&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/IBatisNet.Common.2005.csproj 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/IBatisNet.Common.2005.csproj Mon 
Jul 24 11:41:30 2006
@@ -196,6 +196,7 @@
     <Compile Include="Utilities\Objects\DelegateFactory.cs" />
     <Compile Include="Utilities\Objects\EmitObjectFactory.cs" />
     <Compile Include="Utilities\Objects\FactoryBuilder.cs" />
+    <Compile Include="Utilities\Objects\FactoryLogAdapter.cs" />
     <Compile Include="Utilities\Objects\IFactory.cs" />
     <Compile Include="Utilities\Objects\IObjectFactory.cs" />
     <Compile Include="Utilities\Objects\Members\AccessorFactory.cs" />

Added: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs?rev=425143&view=auto
==============================================================================
--- 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs 
(added)
+++ 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs 
Mon Jul 24 11:41:30 2006
@@ -0,0 +1,109 @@
+using System;
+using System.Reflection;
+using System.Text;
+using IBatisNet.Common.Logging;
+
+namespace IBatisNet.Common.Utilities.Objects
+{
+       /// <summary>
+    /// A wrapper arround an <see cref="IFactory"/> implementation which logs 
argument type and value
+    /// when CreateInstance is called.
+       /// </summary>
+       public class FactoryLogAdapter : IFactory
+       {
+               private IFactory _factory = null;
+               private string _typeName = string.Empty;
+               private string _parametersTypeName = string.Empty;
+               
+               private static readonly ILog _logger = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType );
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="FactoryLogAdapter"/> 
class.
+        /// </summary>
+        /// <param name="type">The type.</param>
+        /// <param name="paramtersTypes">The paramters types.</param>
+        /// <param name="factory">The factory.</param>
+               public FactoryLogAdapter(Type type, Type[] paramtersTypes, 
IFactory factory)
+               {
+                       _factory = factory;
+                       _typeName = type.FullName;
+                       _parametersTypeName = 
GenerateParametersName(paramtersTypes);
+               }
+               
+               #region IFactory Members
+
+        /// <summary>
+        /// Create a new instance with the specified parameters
+        /// </summary>
+        /// <param name="parameters">An array of values that matches the 
number, order and type
+        /// of the parameters for this constructor.</param>
+        /// <returns>A new instance</returns>
+        /// <remarks>
+        /// If you call a constructor with no parameters, pass null.
+        /// Anyway, what you pass will be ignore.
+        /// </remarks>
+               public object CreateInstance(object[] parameters)
+               {
+                       object newObject = null;
+
+                       try
+                       {
+                               newObject = _factory.CreateInstance(parameters);
+                       }
+                       catch
+                       {
+                               _logger.Debug("Enabled to create instance for 
type '" + _typeName);
+                               _logger.Debug("  using parameters type : " + 
_parametersTypeName );
+                               _logger.Debug("  using parameters value : " + 
GenerateLogInfoForParameterValue(parameters) );
+                               throw;
+                       }
+                               
+                       return newObject;
+               }
+
+               #endregion
+               
+               /// <summary>
+               /// Generates the a string containing all parameter type names.
+               /// </summary>
+               /// <param name="arguments">The types of the constructor 
arguments</param>
+               /// <returns>The string.</returns>
+               private string GenerateParametersName(object[] arguments)
+               {
+                       StringBuilder names = new StringBuilder();
+                       if ((arguments != null) && (arguments.Length != 0)) 
+                       {
+                               for (int i=0; i<arguments.Length; i++) 
+                               {
+                                       
names.Append("[").Append(arguments[i]).Append("] ");
+                               }
+                       }
+                       return names.ToString();
+               }
+               
+               /// <summary>
+               /// Generates the a string containing all parameters value.
+               /// </summary>
+               /// <param name="arguments">The arguments</param>
+               /// <returns>The string.</returns>
+               private string GenerateLogInfoForParameterValue(object[] 
arguments)
+               {
+                       StringBuilder values = new StringBuilder();
+                       if ((arguments != null) && (arguments.Length != 0)) 
+                       {
+                               for (int i=0; i<arguments.Length; i++) 
+                               {
+                                       if (arguments[i]!=null)
+                                       {
+                                               
values.Append("[").Append(arguments[i].ToString()).Append("] ");
+                                       }
+                                       else
+                                       {
+                                               values.Append("[null] ");
+                                       }
+                               }
+                       }
+                       return values.ToString();
+               }
+       }
+}

Propchange: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/FactoryLogAdapter.cs
------------------------------------------------------------------------------
    svn:keywords = Id LastChangedDate LastChangedBy

Modified: 
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectFactory.cs
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectFactory.cs?rev=425143&r1=425142&r2=425143&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectFactory.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectFactory.cs 
Mon Jul 24 11:41:30 2006
@@ -24,6 +24,8 @@
 #endregion
 
 using System;
+using System.Reflection;
+using IBatisNet.Common.Logging;
 
 namespace IBatisNet.Common.Utilities.Objects
 {
@@ -33,6 +35,7 @@
        public class ObjectFactory : IObjectFactory
        {
                private IObjectFactory _objectFactory = null;
+        private static readonly ILog _logger = 
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
                /// <summary>
                /// Constructor
@@ -70,7 +73,14 @@
                /// <returns>Returns a new instance factory</returns>
                public IFactory CreateFactory(Type typeToCreate, Type[] types)
                {
-                       return _objectFactory.CreateFactory(typeToCreate, 
types);
+            if (_logger.IsDebugEnabled)
+            {
+                return new FactoryLogAdapter(typeToCreate, types, 
_objectFactory.CreateFactory(typeToCreate, types));
+            }
+                   else
+            {
+                return _objectFactory.CreateFactory(typeToCreate, types);
+            }
                }
 
                #endregion

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/ChangeLog.txt
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/ChangeLog.txt?rev=425143&r1=425142&r2=425143&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/ChangeLog.txt (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/ChangeLog.txt Mon Jul 24 
11:41:30 2006
@@ -4,6 +4,9 @@
 1.5.1 - BETA
 ------------------------------
 Issues
+- IBATISNET-175 : Support discriminators when used via the "resultMapping" 
attribute  
+- IBATISNET-174 : Issue with a result map constructor in a result property  
+- IBATISNET-173 : Issue with constructor tag where an argument use another 
constructor tag  
 - IBATISNET-172 : Issue with QueryForList with constructor resultMap and 
select argument  
 - IBATISNET-170 : auto-result-map Bug  
 - IBATISNET-169 : SqlMap.xsd Correction   


Reply via email to