Skip to content

Commit ca0ac69

Browse files
committed
Make Enumerable reusable
1 parent dc965b6 commit ca0ac69

File tree

3 files changed

+18
-20
lines changed

3 files changed

+18
-20
lines changed

src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public partial interface IQueryPlan
2626
{
2727
Task PerformListAsync(QueryParameters queryParameters, ISessionImplementor statelessSessionImpl, IList results, CancellationToken cancellationToken);
2828
Task<int> PerformExecuteUpdateAsync(QueryParameters queryParameters, ISessionImplementor statelessSessionImpl, CancellationToken cancellationToken);
29-
Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken);
30-
Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken);
3129
}
3230
public partial class HQLQueryPlan : IQueryPlan
3331
{
@@ -99,7 +97,8 @@ public async Task PerformListAsync(QueryParameters queryParameters, ISessionImpl
9997
ArrayHelper.AddAll(combinedResults, tmp);
10098
}
10199
}
102-
100+
// Since v5.3
101+
[Obsolete("This method has no more usages and will be removed in a future version")]
103102
public Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken)
104103
{
105104
if (cancellationToken.IsCancellationRequested)
@@ -108,26 +107,20 @@ public Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IE
108107
}
109108
try
110109
{
111-
if (Log.IsDebugEnabled())
112-
{
113-
Log.Debug("enumerable: {0}", _sourceQuery);
114-
queryParameters.LogParameters(session.Factory);
115-
}
116-
117-
if (Translators.Length == 1)
118-
return Translators[0].GetEnumerableAsync(queryParameters, session, cancellationToken);
119-
120-
return Task.FromResult<IEnumerable>(GetEnumerable(queryParameters, session));
110+
return Task.FromResult<IEnumerable>(PerformIterate(queryParameters, session));
121111
}
122112
catch (Exception ex)
123113
{
124114
return Task.FromException<IEnumerable>(ex);
125115
}
126116
}
127117

118+
// Since v5.3
119+
[Obsolete("This method has no more usages and will be removed in a future version")]
128120
public async Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken)
129121
{
130122
cancellationToken.ThrowIfCancellationRequested();
123+
//TODO 6.0: Get rid of SafetyEnumerable and use Cast
131124
return new SafetyEnumerable<T>(await (PerformIterateAsync(queryParameters, session, cancellationToken)).ConfigureAwait(false));
132125
}
133126

src/NHibernate/Async/Impl/SessionImpl.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ public override async Task<IEnumerable<T>> EnumerableAsync<T>(IQueryExpression q
310310

311311
using (SuspendAutoFlush()) //stops flush being called multiple times if this method is recursively called
312312
{
313-
return await (plan.PerformIterateAsync<T>(queryParameters, this, cancellationToken)).ConfigureAwait(false);
313+
return plan.PerformIterate<T>(queryParameters, this);
314314
}
315315
}
316316
}
@@ -326,7 +326,7 @@ public override async Task<IEnumerable> EnumerableAsync(IQueryExpression queryEx
326326

327327
using (SuspendAutoFlush()) //stops flush being called multiple times if this method is recursively called
328328
{
329-
return await (plan.PerformIterateAsync(queryParameters, this, cancellationToken)).ConfigureAwait(false);
329+
return plan.PerformIterate(queryParameters, this);
330330
}
331331
}
332332
}
@@ -1107,7 +1107,7 @@ public override async Task<IEnumerable> EnumerableFilterAsync(object collection,
11071107
using (BeginProcess())
11081108
{
11091109
var plan = await (GetFilterQueryPlanAsync(collection, filter, queryParameters, true, cancellationToken)).ConfigureAwait(false);
1110-
return await (plan.PerformIterateAsync(queryParameters, this, cancellationToken)).ConfigureAwait(false);
1110+
return plan.PerformIterate(queryParameters, this);
11111111
}
11121112
}
11131113

@@ -1117,7 +1117,7 @@ public override async Task<IEnumerable<T>> EnumerableFilterAsync<T>(object colle
11171117
using (BeginProcess())
11181118
{
11191119
var plan = await (GetFilterQueryPlanAsync(collection, filter, queryParameters, true, cancellationToken)).ConfigureAwait(false);
1120-
return await (plan.PerformIterateAsync<T>(queryParameters, this, cancellationToken)).ConfigureAwait(false);
1120+
return plan.PerformIterate<T>(queryParameters, this);
11211121
}
11221122
}
11231123

src/NHibernate/Engine/Query/HQLQueryPlan.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ public partial interface IQueryPlan
2222
int PerformExecuteUpdate(QueryParameters queryParameters, ISessionImplementor statelessSessionImpl);
2323
IEnumerable<T> PerformIterate<T>(QueryParameters queryParameters, IEventSource session);
2424
IEnumerable PerformIterate(QueryParameters queryParameters, IEventSource session);
25+
26+
// Since v5.3
27+
[Obsolete("This method has no more usages and will be removed in a future version")]
28+
Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken);
29+
// Since v5.3
30+
[Obsolete("This method has no more usages and will be removed in a future version")]
31+
Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken);
2532
}
2633

2734
public interface IQueryExpressionPlan : IQueryPlan
@@ -160,9 +167,6 @@ public IEnumerable PerformIterate(QueryParameters queryParameters, IEventSource
160167
queryParameters.LogParameters(session.Factory);
161168
}
162169

163-
if (Translators.Length == 1)
164-
return Translators[0].GetEnumerable(queryParameters, session);
165-
166170
return GetEnumerable(queryParameters, session);
167171
}
168172

@@ -179,6 +183,7 @@ private IEnumerable<object> GetEnumerable(QueryParameters queryParameters, IEven
179183

180184
public IEnumerable<T> PerformIterate<T>(QueryParameters queryParameters, IEventSource session)
181185
{
186+
//TODO 6.0: Get rid of SafetyEnumerable and use Cast
182187
return new SafetyEnumerable<T>(PerformIterate(queryParameters, session));
183188
}
184189

0 commit comments

Comments
 (0)