From 6ba6dc85d897528462415ed034fc041a50a762e9 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Fri, 17 Apr 2020 14:04:38 +0300 Subject: [PATCH] Get rid of IdentitySet --- src/NHibernate.Test/UtilityTest/IdentitySetFixture.cs | 3 ++- src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs | 2 +- .../Async/Event/Default/DefaultDeleteEventListener.cs | 4 ++-- src/NHibernate/Async/Hql/Ast/ANTLR/QueryTranslatorImpl.cs | 2 +- src/NHibernate/Engine/Query/HQLQueryPlan.cs | 2 +- src/NHibernate/Event/Default/DefaultDeleteEventListener.cs | 4 ++-- src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs | 2 +- src/NHibernate/Util/IdentitySet.cs | 3 ++- 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/NHibernate.Test/UtilityTest/IdentitySetFixture.cs b/src/NHibernate.Test/UtilityTest/IdentitySetFixture.cs index be9ce7362d4..6a96c8866d7 100644 --- a/src/NHibernate.Test/UtilityTest/IdentitySetFixture.cs +++ b/src/NHibernate.Test/UtilityTest/IdentitySetFixture.cs @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Runtime.CompilerServices; using NHibernate.Util; using NUnit.Framework; @@ -10,6 +9,8 @@ namespace NHibernate.Test.UtilityTest /// /// Test for the IdentityMap. /// + // Since 5.3 + [Obsolete("This class has no more usages and will be removed in a future version")] [TestFixture] public class IdentitySetFixture { diff --git a/src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs b/src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs index 853d1ad1261..a55fd2d1741 100644 --- a/src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs +++ b/src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs @@ -58,7 +58,7 @@ public async Task PerformListAsync(QueryParameters queryParameters, ISessionImpl } IList combinedResults = results ?? new List(); - IdentitySet distinction = new IdentitySet(); + var distinction = new HashSet(ReferenceComparer.Instance); int includedCount = -1; for (int i = 0; i < Translators.Length; i++) { diff --git a/src/NHibernate/Async/Event/Default/DefaultDeleteEventListener.cs b/src/NHibernate/Async/Event/Default/DefaultDeleteEventListener.cs index be81efc248f..58be2bfad01 100644 --- a/src/NHibernate/Async/Event/Default/DefaultDeleteEventListener.cs +++ b/src/NHibernate/Async/Event/Default/DefaultDeleteEventListener.cs @@ -37,7 +37,7 @@ public virtual Task OnDeleteAsync(DeleteEvent @event, CancellationToken cancella { return Task.FromCanceled(cancellationToken); } - return OnDeleteAsync(@event, new IdentitySet(), cancellationToken); + return OnDeleteAsync(@event, new HashSet(ReferenceComparer.Instance), cancellationToken); } public virtual async Task OnDeleteAsync(DeleteEvent @event, ISet transientEntities, CancellationToken cancellationToken) @@ -145,7 +145,7 @@ protected virtual async Task DeleteTransientEntityAsync(IEventSource session, ob // NH different impl : NH-1895 if(transientEntities == null) { - transientEntities = new HashSet(); + transientEntities = new HashSet(ReferenceComparer.Instance); } if (!transientEntities.Add(entity)) { diff --git a/src/NHibernate/Async/Hql/Ast/ANTLR/QueryTranslatorImpl.cs b/src/NHibernate/Async/Hql/Ast/ANTLR/QueryTranslatorImpl.cs index e36847d2988..8c78a478fca 100644 --- a/src/NHibernate/Async/Hql/Ast/ANTLR/QueryTranslatorImpl.cs +++ b/src/NHibernate/Async/Hql/Ast/ANTLR/QueryTranslatorImpl.cs @@ -77,7 +77,7 @@ public async Task ListAsync(ISessionImplementor session, QueryParameters int size = results.Count; var tmp = new List(); - var distinction = new IdentitySet(); + var distinction = new HashSet(ReferenceComparer.Instance); for ( int i = 0; i < size; i++ ) { diff --git a/src/NHibernate/Engine/Query/HQLQueryPlan.cs b/src/NHibernate/Engine/Query/HQLQueryPlan.cs index ee1062a26e9..b27ff88a204 100644 --- a/src/NHibernate/Engine/Query/HQLQueryPlan.cs +++ b/src/NHibernate/Engine/Query/HQLQueryPlan.cs @@ -108,7 +108,7 @@ public void PerformList(QueryParameters queryParameters, ISessionImplementor ses } IList combinedResults = results ?? new List(); - IdentitySet distinction = new IdentitySet(); + var distinction = new HashSet(ReferenceComparer.Instance); int includedCount = -1; for (int i = 0; i < Translators.Length; i++) { diff --git a/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs b/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs index 13f9a2e20a1..96f6703563e 100644 --- a/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs +++ b/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs @@ -26,7 +26,7 @@ public partial class DefaultDeleteEventListener : IDeleteEventListener /// The delete event to be handled. public virtual void OnDelete(DeleteEvent @event) { - OnDelete(@event, new IdentitySet()); + OnDelete(@event, new HashSet(ReferenceComparer.Instance)); } public virtual void OnDelete(DeleteEvent @event, ISet transientEntities) @@ -143,7 +143,7 @@ protected virtual void DeleteTransientEntity(IEventSource session, object entity // NH different impl : NH-1895 if(transientEntities == null) { - transientEntities = new HashSet(); + transientEntities = new HashSet(ReferenceComparer.Instance); } if (!transientEntities.Add(entity)) { diff --git a/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs b/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs index 04ec2db6769..2e27559d1dd 100644 --- a/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs +++ b/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs @@ -123,7 +123,7 @@ public IList List(ISessionImplementor session, QueryParameters queryParameters) int size = results.Count; var tmp = new List(); - var distinction = new IdentitySet(); + var distinction = new HashSet(ReferenceComparer.Instance); for ( int i = 0; i < size; i++ ) { diff --git a/src/NHibernate/Util/IdentitySet.cs b/src/NHibernate/Util/IdentitySet.cs index 8f7843071ca..d3db1d17758 100644 --- a/src/NHibernate/Util/IdentitySet.cs +++ b/src/NHibernate/Util/IdentitySet.cs @@ -1,13 +1,14 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Linq; namespace NHibernate.Util { /// /// Set implementation that use reference equals instead of Equals() as its comparison mechanism. /// + // Since 5.3 + [Obsolete("This class has no more usages and will be removed in a future version")] public class IdentitySet : ISet { private IDictionary map;