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. |