From: <jul...@us...> - 2010-11-21 17:36:20
|
Revision: 5268 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5268&view=rev Author: julian-maughan Date: 2010-11-21 17:36:14 +0000 (Sun, 21 Nov 2010) Log Message: ----------- Micro optimization in DefaultFlushEntityEventListener, by Andr?\195?\169s G. Aragoneses (ref. NH-2413) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs 2010-11-21 17:14:48 UTC (rev 5267) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs 2010-11-21 17:36:14 UTC (rev 5268) @@ -10,15 +10,15 @@ namespace NHibernate.Event.Default { - /// <summary> - /// An event that occurs for each entity instance at flush time + /// <summary> + /// An event that occurs for each entity instance at flush time /// </summary> [Serializable] public class DefaultFlushEntityEventListener : IFlushEntityEventListener { private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(DefaultFlushEntityEventListener)); - /// <summary> + /// <summary> /// Flushes a single entity's state to the database, by scheduling an update action, if necessary /// </summary> public virtual void OnFlushEntity(FlushEntityEvent @event) @@ -106,11 +106,12 @@ if (persister.CanExtractIdOutOfEntity) { - object oid = persister.GetIdentifier(obj, entityMode); if (id == null) { throw new AssertionFailure("null id in " + persister.EntityName + " entry (don't flush the Session after an exception occurs)"); } + + object oid = persister.GetIdentifier(obj, entityMode); if (!persister.IdentifierType.IsEqual(id, oid, EntityMode.Poco)) { throw new HibernateException("identifier of an instance of " + persister.EntityName + " was altered from " + id + " to " + oid); @@ -147,7 +148,7 @@ if (!types[prop].IsEqual(current[prop], loadedVal, entityMode)) { throw new HibernateException("immutable natural identifier of an instance of " + persister.EntityName - + " was altered"); + + " was altered"); } } } @@ -227,7 +228,7 @@ if (!entry.IsBeingReplicated) { - // give the Interceptor a chance to process property values, if the properties + // give the Interceptor a chance to process property values, if the properties // were modified by the Interceptor, we need to set them back to the object intercepted = HandleInterception(@event); } @@ -259,8 +260,8 @@ // schedule the update // note that we intentionally do _not_ pass in currentPersistentState! session.ActionQueue.AddAction( - new EntityUpdateAction(entry.Id, values, dirtyProperties, - @event.HasDirtyCollection, entry.LoadedState, entry.Version, + new EntityUpdateAction(entry.Id, values, dirtyProperties, + @event.HasDirtyCollection, entry.LoadedState, entry.Version, nextVersion, entity, persister, session)); return intercepted; @@ -328,8 +329,8 @@ bool isVersionIncrementRequired = IsVersionIncrementRequired(@event, entry, persister, dirtyProperties); - object nextVersion = isVersionIncrementRequired ? - Versioning.Increment(entry.Version, persister.VersionType, @event.Session) : + object nextVersion = isVersionIncrementRequired ? + Versioning.Increment(entry.Version, persister.VersionType, @event.Session) : entry.Version; //use the current version Versioning.SetVersion(values, nextVersion, persister); @@ -351,12 +352,12 @@ bool isVersionIncrementRequired = entry.Status != Status.Deleted && !persister.IsVersionPropertyGenerated && - (dirtyProperties == null || + (dirtyProperties == null || Versioning.IsVersionIncrementRequired(dirtyProperties, @event.HasDirtyCollection, persister.PropertyVersionability)); return isVersionIncrementRequired; } - /// <summary> + /// <summary> /// Performs all necessary checking to determine if an entity needs an SQL update /// to synchronize its state to the database. Modifies the event by side-effect! /// Note: this method is quite slow, avoid calling if possible! This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |