|
From: <fab...@us...> - 2008-07-25 19:38:20
|
Revision: 3667
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3667&view=rev
Author: fabiomaulo
Date: 2008-07-25 19:38:27 +0000 (Fri, 25 Jul 2008)
Log Message:
-----------
Merge r3666 (fix NH-1412- Fix NH-1304)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/Property.cs
trunk/nhibernate/src/NHibernate/Properties/BackrefPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/ChainedPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/EmbeddedPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/FieldAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/IPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/IndexPropertyAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/MapAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/NoSetterAccessor.cs
trunk/nhibernate/src/NHibernate/Properties/NoopAccessor.cs
trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs
trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH251/CustomAccessDO.cs
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1304/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1304/Funny.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/Property.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/Property.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Mapping/Property.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -189,7 +189,8 @@
public virtual bool IsBasicPropertyAccessor
{
- get { return propertyAccessorName == null || propertyAccessorName.Equals("property"); }
+ // NH Different behavior : see IPropertyAccessor.CanAccessTroughReflectionOptimizer (ref. NH-1304)
+ get { return PropertyAccessor.CanAccessTroughReflectionOptimizer; }
}
public IDictionary<string, MetaAttribute> MetaAttributes
Modified: trunk/nhibernate/src/NHibernate/Properties/BackrefPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/BackrefPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/BackrefPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -30,6 +30,11 @@
return new BackrefSetter();
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
/// <summary> The Setter implementation for id backrefs.</summary>
Modified: trunk/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -60,6 +60,11 @@
return result;
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return true; }
+ }
+
#endregion
/// <summary>
@@ -346,4 +351,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Properties/ChainedPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/ChainedPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/ChainedPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -48,6 +48,11 @@
throw new PropertyNotFoundException(theClass, propertyName, "setter");
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Properties/EmbeddedPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/EmbeddedPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/EmbeddedPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -19,6 +19,11 @@
return new EmbeddedSetter(theClass);
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
[Serializable]
Modified: trunk/nhibernate/src/NHibernate/Properties/FieldAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/FieldAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/FieldAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -86,6 +86,11 @@
return new FieldSetter(GetField(theClass, fieldName), theClass, fieldName);
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return true; }
+ }
+
#endregion
private static FieldInfo GetField(System.Type type, string fieldName, System.Type originalType)
@@ -315,4 +320,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Properties/IPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/IPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/IPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -1,5 +1,3 @@
-using System;
-
namespace NHibernate.Properties
{
/// <summary>
@@ -36,5 +34,12 @@
/// be found in the <see cref="System.Type"/>.
/// </exception>
ISetter GetSetter(System.Type theClass, string propertyName);
+
+ #region NH specific
+ /// <summary>
+ /// Allow embedded and custom accessors to define if the ReflectionOptimizer can be used.
+ /// </summary>
+ bool CanAccessTroughReflectionOptimizer { get;}
+ #endregion
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Properties/IndexPropertyAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/IndexPropertyAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/IndexPropertyAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -32,6 +32,11 @@
throw new NotImplementedException();
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
/// <summary> The Setter implementation for index backrefs.</summary>
Modified: trunk/nhibernate/src/NHibernate/Properties/MapAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/MapAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/MapAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -18,6 +18,11 @@
return new MapSetter(propertyName);
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
public sealed class MapSetter : ISetter
Modified: trunk/nhibernate/src/NHibernate/Properties/NoSetterAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/NoSetterAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/NoSetterAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -66,6 +66,11 @@
return new FieldAccessor.FieldSetter(FieldAccessor.GetField(type, fieldName), type, fieldName);
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return true; }
+ }
+
#endregion
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Properties/NoopAccessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Properties/NoopAccessor.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Properties/NoopAccessor.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -19,6 +19,11 @@
return new NoopSetter();
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
#endregion
/// <summary> A Getter which will always return null. It should not be called anyway.</summary>
Modified: trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -1,4 +1,5 @@
using System;
+using log4net;
using NHibernate.Engine;
using NHibernate.Properties;
@@ -8,6 +9,8 @@
[Serializable]
public abstract class AbstractComponentTuplizer : IComponentTuplizer
{
+ private static readonly ILog log = LogManager.GetLogger(typeof(AbstractComponentTuplizer));
+
protected internal int propertySpan;
protected internal IGetter[] getters;
protected internal ISetter[] setters;
@@ -32,6 +35,11 @@
}
i++;
}
+ if (log.IsDebugEnabled)
+ {
+ log.DebugFormat("{0} accessors found for component: {1}", foundCustomAccessor ? "Custom" : "No custom",
+ component.ComponentClassName);
+ }
hasCustomAccessors = foundCustomAccessor;
// Only to be secure that we can access to every things
Modified: trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -1,5 +1,6 @@
using System.Collections;
using Iesi.Collections.Generic;
+using log4net;
using NHibernate.Engine;
using NHibernate.Id;
using NHibernate.Intercept;
@@ -13,6 +14,7 @@
/// <summary> Support for tuplizers relating to entities. </summary>
public abstract class AbstractEntityTuplizer : IEntityTuplizer
{
+ private static readonly ILog log = LogManager.GetLogger(typeof(AbstractEntityTuplizer));
private readonly EntityMetamodel entityMetamodel;
private readonly IGetter idGetter;
private readonly ISetter idSetter;
@@ -58,6 +60,11 @@
foundCustomAccessor = true;
i++;
}
+ if (log.IsDebugEnabled)
+ {
+ log.DebugFormat("{0} accessors found for entity: {1}", foundCustomAccessor ? "Custom" : "No custom",
+ mappingInfo.EntityName);
+ }
hasCustomAccessors = foundCustomAccessor;
instantiator = BuildInstantiator(mappingInfo);
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1304/Funny.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1304/Funny.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1304/Funny.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -0,0 +1,113 @@
+namespace NHibernate.Test.NHSpecificTest.NH1304
+{
+ public class Funny
+ {
+ private int id;
+ private string field;
+ private string fieldCamelcase;
+ private string _fieldCamelcaseUnderscore;
+ private string fieldlowercase;
+ private string _fieldlowercaseunderscore;
+ private string _FieldPascalcaseUnderscore;
+ private string m_FieldPascalcaseMUnderscore;
+ private string mFieldPascalcaseM;
+#pragma warning disable 649
+ private string nosetterCamelcase;
+ private string _nosetterCamelcaseUnderscore;
+ private string nosetterlowercase;
+ private string _nosetterlowercaseunderscore;
+ private string _NosetterPascalcaseUnderscore;
+ private string m_NosetterPascalcaseMUnderscore;
+ private string mNosetterPascalcase;
+#pragma warning restore 649
+
+ public virtual int Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Field
+ {
+ get { return field; }
+ set { field = value; }
+ }
+
+ public virtual string FieldCamelcase
+ {
+ get { return fieldCamelcase; }
+ set { fieldCamelcase = value; }
+ }
+
+ public virtual string FieldCamelcaseUnderscore
+ {
+ get { return _fieldCamelcaseUnderscore; }
+ set { _fieldCamelcaseUnderscore = value; }
+ }
+
+ public virtual string FieldLowercase
+ {
+ get { return fieldlowercase; }
+ set { fieldlowercase = value; }
+ }
+
+ public virtual string FieldLowercaseUnderscore
+ {
+ get { return _fieldlowercaseunderscore; }
+ set { _fieldlowercaseunderscore = value; }
+ }
+
+ public virtual string FieldPascalcaseUnderscore
+ {
+ get { return _FieldPascalcaseUnderscore; }
+ set { _FieldPascalcaseUnderscore = value; }
+ }
+
+ public virtual string FieldPascalcaseMUnderscore
+ {
+ get { return m_FieldPascalcaseMUnderscore; }
+ set { m_FieldPascalcaseMUnderscore = value; }
+ }
+
+ public virtual string FieldPascalcaseM
+ {
+ get { return mFieldPascalcaseM; }
+ set { mFieldPascalcaseM = value; }
+ }
+
+ public virtual string NosetterCamelcase
+ {
+ get { return nosetterCamelcase; }
+ }
+
+ public virtual string NosetterCamelcaseUnderscore
+ {
+ get { return _nosetterCamelcaseUnderscore; }
+ }
+
+ public virtual string NosetterLowercase
+ {
+ get { return nosetterlowercase; }
+ }
+
+ public virtual string NosetterLowercaseUnderscore
+ {
+ get { return _nosetterlowercaseunderscore; }
+ }
+
+ public virtual string NosetterPascalcaseUnderscore
+ {
+ get { return _NosetterPascalcaseUnderscore; }
+ }
+
+ public virtual string NosetterPascalcaseMUnderscore
+ {
+ get { return m_NosetterPascalcaseMUnderscore; }
+ }
+
+ public virtual string NosetterPascalcase
+ {
+ get { return mNosetterPascalcase; }
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH251/CustomAccessDO.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH251/CustomAccessDO.cs 2008-07-25 19:08:39 UTC (rev 3666)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH251/CustomAccessDO.cs 2008-07-25 19:38:27 UTC (rev 3667)
@@ -53,6 +53,11 @@
return new CustomSetter(propertyName);
}
+ public bool CanAccessTroughReflectionOptimizer
+ {
+ get { return false; }
+ }
+
public class CustomGetter : IGetter
{
private System.Type theClass;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|