Skip to content

Commit

Permalink
Async regen
Browse files Browse the repository at this point in the history
  • Loading branch information
maca88 committed Mar 1, 2020
1 parent 3160055 commit 50c0420
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 260 deletions.
31 changes: 0 additions & 31 deletions src/NHibernate.Test/Async/GenericTest/Methods/Fixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,20 +102,6 @@ public async Task QueryListAsync()
}
}

[Test]
public async Task QueryEnumerableAsync()
{
using (var s = OpenSession())
using (var t = s.BeginTransaction())
{
var results = s.CreateQuery("from One").AsyncEnumerable<One>();
var enumerator = results.GetAsyncEnumerator();

Assert.That(await enumerator.MoveNextAsync(), Is.True);
Assert.That(await enumerator.MoveNextAsync(), Is.False);
}
}

[Test]
public async Task FilterAsync()
{
Expand All @@ -131,22 +117,5 @@ public async Task FilterAsync()
await (t.CommitAsync());
}
}

[Test]
public async Task FilterEnumerableAsync()
{
using (var s = OpenSession())
using (var t = s.BeginTransaction())
{
One one2 = (One) await s.CreateQuery("from One").UniqueResultAsync();
var results = s.CreateFilter(one2.Manies, "where X = 10").AsyncEnumerable<Many>();
var en = results.GetAsyncEnumerator();

Assert.That(await en.MoveNextAsync(), Is.True);
Assert.That(en.Current.X, Is.EqualTo(10));
Assert.That(await en.MoveNextAsync(), Is.False);
await t.CommitAsync();
}
}
}
}
99 changes: 0 additions & 99 deletions src/NHibernate.Test/Async/ReadOnly/ReadOnlySessionTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -385,46 +385,6 @@ public async Task QueryReadOnlyIterateAsync()
}
}

[Test]
public async Task QueryReadOnlyAsyncIterate()
{
int nExpectedChanges = 0;
QueryIterateCreate(out var lastDataPointId);

using (ISession s = OpenSession())
{
s.CacheMode = CacheMode.Ignore;

using (ITransaction t = s.BeginTransaction())
{
s.DefaultReadOnly = false;

IQuery query = s.CreateQuery("from DataPoint dp order by dp.X asc");
QueryReadOnlyIterateAssertReadOnly(query, s);

var it = query.AsyncEnumerable<DataPoint>().GetAsyncEnumerator();
Assert.That(query.IsReadOnly, Is.True);
DataPoint dpLast = s.Get<DataPoint>(lastDataPointId);
Assert.That(s.IsReadOnly(dpLast), Is.False);
query.SetReadOnly(false);
Assert.That(query.IsReadOnly, Is.False);
Assert.That(s.DefaultReadOnly, Is.False);

int i = 0;
while (await it.MoveNextAsync())
{
QueryReadOnlyIterateAssertRow(s, it.Current, dpLast, ref i, ref nExpectedChanges);
}

Assert.That(s.DefaultReadOnly, Is.False);

t.Commit();
}

QueryIterateClear(s, nExpectedChanges);
}
}

private void QueryReadOnlyIterateAssertReadOnly(IQuery query, ISession s)
{
Assert.That(query.IsReadOnly, Is.False);
Expand Down Expand Up @@ -510,45 +470,6 @@ public async Task QueryModifiableIterateAsync()
}
}

[Test]
public async Task QueryModifiableAsyncIterate()
{
int nExpectedChanges = 0;
QueryIterateCreate(out var lastDataPointId);

using (ISession s = OpenSession())
{
s.CacheMode = CacheMode.Ignore;

using (ITransaction t = s.BeginTransaction())
{
s.DefaultReadOnly = true;

IQuery query = s.CreateQuery("from DataPoint dp order by dp.X asc");
QueryModifiableIterateAssertReadOnly(query, s);

var it = query.AsyncEnumerable<DataPoint>().GetAsyncEnumerator();
Assert.That(query.IsReadOnly, Is.False);
DataPoint dpLast = s.Get<DataPoint>(lastDataPointId);
Assert.That(s.IsReadOnly(dpLast), Is.True);
query.SetReadOnly(true);
Assert.That(query.IsReadOnly, Is.True);
Assert.That(s.DefaultReadOnly, Is.True);

int i = 0;
while (await it.MoveNextAsync())
{
QueryModifiableIterateAssertRow(s, it.Current, dpLast, ref i, ref nExpectedChanges);
}

Assert.That(s.DefaultReadOnly, Is.True);
t.Commit();
}

QueryIterateClear(s, nExpectedChanges);
}
}

private void QueryModifiableIterateAssertReadOnly(IQuery query, ISession s)
{
Assert.That(query.IsReadOnly, Is.True);
Expand Down Expand Up @@ -641,26 +562,6 @@ private void QueryIterateCreate(out long lastDataPointId)
}
}

private void QueryIterateClear(ISession s, int nExpectedChanges)
{
s.Clear();
using (ITransaction t = s.BeginTransaction())
{
try
{
IList single = s.CreateQuery("from DataPoint where Description = 'done!'").List();
Assert.That(single.Count, Is.EqualTo(nExpectedChanges));
}
finally
{
// cleanup
s.CreateQuery("delete from DataPoint").ExecuteUpdate();
}

t.Commit();
}
}

[Test]
public async Task ReadOnlyRefreshAsync()
{
Expand Down
2 changes: 2 additions & 0 deletions src/NHibernate/Async/Engine/Query/HQLQueryPlan.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ public async Task PerformListAsync(QueryParameters queryParameters, ISessionImpl
}
}
// Since v5.3
/// <inheritdoc />
[Obsolete("This method has no more usages and will be removed in a future version")]
public Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken)
{
Expand All @@ -114,6 +115,7 @@ public Task<IEnumerable> PerformIterateAsync(QueryParameters queryParameters, IE
}
}
// Since v5.3
/// <inheritdoc />
[Obsolete("This method has no more usages and will be removed in a future version")]
public async Task<IEnumerable<T>> PerformIterateAsync<T>(QueryParameters queryParameters, IEventSource session, CancellationToken cancellationToken)
{
Expand Down
47 changes: 4 additions & 43 deletions src/NHibernate/Async/Impl/AbstractQueryImpl2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,7 @@ public abstract partial class AbstractQueryImpl2 : AbstractQueryImpl
}
}

/// <summary>
/// Return the query results as an <see cref="IEnumerable"/>. If the query contains multiple results
/// per row, the results are returned in an instance of <c>object[]</c>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <remarks>
/// <p>
/// Entities returned as results are initialized on demand. The first SQL query returns
/// identifiers only.
/// </p>
/// <p>
/// This is a good strategy to use if you expect a high number of the objects
/// returned to be already loaded in the <see cref="ISession"/> or in the 2nd level cache.
/// </p>
/// </remarks>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable> EnumerableAsync(CancellationToken cancellationToken = default(CancellationToken))
Expand All @@ -63,30 +49,15 @@ public abstract partial class AbstractQueryImpl2 : AbstractQueryImpl
}
try
{
VerifyParameters();
var namedParams = NamedParams;
Before();
try
{
return Task.FromResult<IEnumerable>(Session.Enumerable(ExpandParameters(namedParams), GetQueryParameters(namedParams)));
}
finally
{
After();
}
return Task.FromResult<IEnumerable>(Enumerable());
}
catch (System.Exception ex)
{
return Task.FromException<IEnumerable>(ex);
}
}

/// <summary>
/// Strongly-typed version of <see cref="Enumerable()"/>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable<T>> EnumerableAsync<T>(CancellationToken cancellationToken = default(CancellationToken))
Expand All @@ -97,17 +68,7 @@ public abstract partial class AbstractQueryImpl2 : AbstractQueryImpl
}
try
{
VerifyParameters();
var namedParams = NamedParams;
Before();
try
{
return Task.FromResult<IEnumerable<T>>(Session.Enumerable<T>(ExpandParameters(namedParams), GetQueryParameters(namedParams)));
}
finally
{
After();
}
return Task.FromResult<IEnumerable<T>>(Enumerable<T>());
}
catch (System.Exception ex)
{
Expand Down
31 changes: 4 additions & 27 deletions src/NHibernate/Async/Impl/CollectionFilterImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,7 @@ namespace NHibernate.Impl
public partial class CollectionFilterImpl : QueryImpl
{

/// <summary>
/// Return the query results as an <see cref="IEnumerable"/>. If the query contains multiple results
/// per row, the results are returned in an instance of <c>object[]</c>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <remarks>
/// <p>
/// Entities returned as results are initialized on demand. The first SQL query returns
/// identifiers only.
/// </p>
/// <p>
/// This is a good strategy to use if you expect a high number of the objects
/// returned to be already loaded in the <see cref="ISession"/> or in the 2nd level cache.
/// </p>
/// </remarks>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable> EnumerableAsync(CancellationToken cancellationToken = default(CancellationToken))
Expand All @@ -49,22 +35,15 @@ public partial class CollectionFilterImpl : QueryImpl
}
try
{
VerifyParameters();
IDictionary<string, TypedValue> namedParams = NamedParams;
return Task.FromResult<IEnumerable>(Session.EnumerableFilter(collection, ExpandParameterLists(namedParams), GetQueryParameters(namedParams)));
return Task.FromResult<IEnumerable>(Enumerable());
}
catch (Exception ex)
{
return Task.FromException<IEnumerable>(ex);
}
}

/// <summary>
/// Strongly-typed version of <see cref="Enumerable()"/>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable<T>> EnumerableAsync<T>(CancellationToken cancellationToken = default(CancellationToken))
Expand All @@ -75,9 +54,7 @@ public partial class CollectionFilterImpl : QueryImpl
}
try
{
VerifyParameters();
IDictionary<string, TypedValue> namedParams = NamedParams;
return Task.FromResult<IEnumerable<T>>(Session.EnumerableFilter<T>(collection, ExpandParameterLists(namedParams), GetQueryParameters(namedParams)));
return Task.FromResult<IEnumerable<T>>(Enumerable<T>());
}
catch (Exception ex)
{
Expand Down
23 changes: 2 additions & 21 deletions src/NHibernate/Async/Impl/ExpressionQueryImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,34 +70,15 @@ internal partial class ExpressionFilterImpl : ExpressionQueryImpl
ArrayHelper.AddAll(results, await (ListAsync(cancellationToken)).ConfigureAwait(false));
}

/// <summary>
/// Return the query results as an <see cref="IEnumerable"/>. If the query contains multiple results
/// per row, the results are returned in an instance of <c>object[]</c>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <remarks>
/// <p>
/// Entities returned as results are initialized on demand. The first SQL query returns
/// identifiers only.
/// </p>
/// <p>
/// This is a good strategy to use if you expect a high number of the objects
/// returned to be already loaded in the <see cref="ISession"/> or in the 2nd level cache.
/// </p>
/// </remarks>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable> EnumerableAsync(CancellationToken cancellationToken = default(CancellationToken))
{
throw new NotImplementedException();
}

/// <summary>
/// Strongly-typed version of <see cref="Enumerable()"/>.
/// </summary>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the work</param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override Task<IEnumerable<T>> EnumerableAsync<T>(CancellationToken cancellationToken = default(CancellationToken))
Expand Down
13 changes: 4 additions & 9 deletions src/NHibernate/Async/Impl/SessionImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,7 @@ public override async Task<IQueryTranslator[]> GetQueriesAsync(IQueryExpression
}
}

/// <summary>
/// Strongly-typed version of <see cref="Enumerable(IQueryExpression, QueryParameters)" />
/// </summary>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override async Task<IEnumerable<T>> EnumerableAsync<T>(IQueryExpression queryExpression, QueryParameters queryParameters, CancellationToken cancellationToken)
Expand All @@ -320,6 +318,7 @@ public override async Task<IEnumerable<T>> EnumerableAsync<T>(IQueryExpression q
}
}

/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerable extension method instead.")]
public override async Task<IEnumerable> EnumerableAsync(IQueryExpression queryExpression, QueryParameters queryParameters, CancellationToken cancellationToken)
Expand Down Expand Up @@ -1108,9 +1107,7 @@ public override async Task<IList<T>> ListFilterAsync<T>(object collection, strin
return results;
}

/// <summary>
/// Collection from a filter
/// </summary>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerableFilter extension method instead.")]
public override async Task<IEnumerable> EnumerableFilterAsync(object collection, string filter, QueryParameters queryParameters, CancellationToken cancellationToken)
Expand All @@ -1123,9 +1120,7 @@ public override async Task<IEnumerable> EnumerableFilterAsync(object collection,
}
}

/// <summary>
/// Strongly-typed version of <see cref="EnumerableFilter(object, string, QueryParameters)" />
/// </summary>
/// <inheritdoc />
// Since v5.3
[Obsolete("Use AsyncEnumerableFilter extension method instead.")]
public override async Task<IEnumerable<T>> EnumerableFilterAsync<T>(object collection, string filter, QueryParameters queryParameters, CancellationToken cancellationToken)
Expand Down
Loading

0 comments on commit 50c0420

Please sign in to comment.