Skip to content

Commit 9b6e15b

Browse files
committed
Regenerate async: call forwarding
1 parent 8f592f7 commit 9b6e15b

File tree

66 files changed

+178
-312
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+178
-312
lines changed

src/NHibernate/Async/Action/BulkOperationCleanupAction.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,15 @@ public partial class BulkOperationCleanupAction: IExecutable
2727

2828
public Task ExecuteAsync()
2929
{
30-
return Task.CompletedTask;
30+
try
31+
{
32+
Execute();
33+
return Task.CompletedTask;
34+
}
35+
catch (Exception ex)
36+
{
37+
return Task.FromException<object>(ex);
38+
}
3139
// nothing to do
3240
}
3341

src/NHibernate/Async/Action/EntityAction.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@ public abstract partial class EntityAction : IExecutable, IComparable<EntityActi
3131

3232
protected virtual Task AfterTransactionCompletionProcessImplAsync(bool success)
3333
{
34-
return Task.CompletedTask;
34+
try
35+
{
36+
AfterTransactionCompletionProcessImpl(success);
37+
return Task.CompletedTask;
38+
}
39+
catch (Exception ex)
40+
{
41+
return Task.FromException<object>(ex);
42+
}
3543
}
3644

3745
#endregion

src/NHibernate/Async/AdoNet/NonBatchingBatcher.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,15 @@ public override async Task AddToBatchAsync(IExpectation expectation)
5050
/// <param name="ps"></param>
5151
protected override Task DoExecuteBatchAsync(DbCommand ps)
5252
{
53-
return Task.CompletedTask;
53+
try
54+
{
55+
DoExecuteBatch(ps);
56+
return Task.CompletedTask;
57+
}
58+
catch (Exception ex)
59+
{
60+
return Task.FromException<object>(ex);
61+
}
5462
}
5563
}
5664
}

src/NHibernate/Async/Collection/AbstractPersistentCollection.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,15 @@ public Task<ICollection> GetQueuedOrphansAsync(string entityName)
134134
/// Called before inserting rows, to ensure that any surrogate keys are fully generated
135135
/// </summary>
136136
/// <param name="persister"></param>
137-
public virtual Task PreInsertAsync(ICollectionPersister persister) { return Task.CompletedTask;
137+
public virtual Task PreInsertAsync(ICollectionPersister persister) { try
138+
{
139+
PreInsert(persister);
140+
return Task.CompletedTask;
141+
}
142+
catch (Exception ex)
143+
{
144+
return Task.FromException<object>(ex);
145+
}
138146
}
139147

140148
/// <summary>

src/NHibernate/Async/Engine/CascadingAction.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ public abstract partial class CascadingAction
4747
/// <param name="propertyIndex">The index of the property within the owner. </param>
4848
public virtual Task NoCascadeAsync(IEventSource session, object child, object parent, IEntityPersister persister, int propertyIndex)
4949
{
50-
return Task.CompletedTask;
50+
try
51+
{
52+
NoCascade(session, child, parent, persister, propertyIndex);
53+
return Task.CompletedTask;
54+
}
55+
catch (Exception ex)
56+
{
57+
return Task.FromException<object>(ex);
58+
}
5159
}
5260

5361
#endregion

src/NHibernate/Async/Event/Default/AbstractVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ internal virtual Task<object> ProcessCollectionAsync(object value, CollectionTyp
9696
{
9797
try
9898
{
99-
return Task.FromResult<object>(null);
99+
return Task.FromResult<object>(ProcessCollection(value, collectionType));
100100
}
101101
catch (Exception ex)
102102
{

src/NHibernate/Async/Event/Default/DefaultMergeEventListener.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -531,13 +531,29 @@ protected async Task RetryMergeTransientEntitiesAsync(MergeEvent @event, IDictio
531531
/// <summary> Cascade behavior is redefined by this subclass, disable superclass behavior</summary>
532532
protected override Task CascadeAfterSaveAsync(IEventSource source, IEntityPersister persister, object entity, object anything)
533533
{
534-
return Task.CompletedTask;
534+
try
535+
{
536+
CascadeAfterSave(source, persister, entity, anything);
537+
return Task.CompletedTask;
538+
}
539+
catch (Exception ex)
540+
{
541+
return Task.FromException<object>(ex);
542+
}
535543
}
536544

537545
/// <summary> Cascade behavior is redefined by this subclass, disable superclass behavior</summary>
538546
protected override Task CascadeBeforeSaveAsync(IEventSource source, IEntityPersister persister, object entity, object anything)
539547
{
540-
return Task.CompletedTask;
548+
try
549+
{
550+
CascadeBeforeSave(source, persister, entity, anything);
551+
return Task.CompletedTask;
552+
}
553+
catch (Exception ex)
554+
{
555+
return Task.FromException<object>(ex);
556+
}
541557
}
542558
}
543559
}

src/NHibernate/Async/Event/Default/DefaultPreLoadEventListener.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ public virtual Task OnPreLoadAsync(PreLoadEvent @event)
2323
{
2424
try
2525
{
26-
IEntityPersister persister = @event.Persister;
27-
@event.Session.Interceptor.OnLoad(@event.Entity, @event.Id, @event.State, persister.PropertyNames, persister.PropertyTypes);
26+
OnPreLoad(@event);
2827
return Task.CompletedTask;
2928
}
3029
catch (Exception ex)

src/NHibernate/Async/Event/Default/DefaultReplicateEventListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ protected override Task<bool> SubstituteValuesIfNecessaryAsync(object entity, ob
150150
{
151151
try
152152
{
153-
return Task.FromResult<bool>(false);
153+
return Task.FromResult<bool>(SubstituteValuesIfNecessary(entity, id, values, persister, source));
154154
}
155155
catch (Exception ex)
156156
{

src/NHibernate/Async/Event/Default/DirtyCollectionSearchVisitor.cs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
2626
{
2727
try
2828
{
29-
if (collection != null)
30-
{
31-
ISessionImplementor session = Session;
32-
IPersistentCollection persistentCollection;
33-
if (type.IsArrayType)
34-
{
35-
persistentCollection = session.PersistenceContext.GetCollectionHolder(collection);
36-
// if no array holder we found an unwrappered array (this can't occur,
37-
// because we now always call wrap() before getting to here)
38-
// return (ah==null) ? true : searchForDirtyCollections(ah, type);
39-
}
40-
else
41-
{
42-
// if not wrappered yet, its dirty (this can't occur, because
43-
// we now always call wrap() before getting to here)
44-
// return ( ! (obj instanceof PersistentCollection) ) ?
45-
//true : searchForDirtyCollections( (PersistentCollection) obj, type );
46-
persistentCollection = (IPersistentCollection)collection;
47-
}
48-
49-
if (persistentCollection.IsDirty)
50-
{
51-
//we need to check even if it was not initialized, because of delayed adds!
52-
dirty = true;
53-
return Task.FromResult<object>(null); //NOTE: EARLY EXIT!
54-
}
55-
}
56-
57-
return Task.FromResult<object>(null);
29+
return Task.FromResult<object>(ProcessCollection(collection, type));
5830
}
5931
catch (Exception ex)
6032
{

src/NHibernate/Async/Event/Default/EvictVisitor.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
2828
{
2929
try
3030
{
31-
if (collection != null)
32-
EvictCollection(collection, type);
33-
return Task.FromResult<object>(null);
31+
return Task.FromResult<object>(ProcessCollection(collection, type));
3432
}
3533
catch (Exception ex)
3634
{

src/NHibernate/Async/Event/Default/OnLockVisitor.cs

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -27,52 +27,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
2727
{
2828
try
2929
{
30-
ISessionImplementor session = Session;
31-
ICollectionPersister persister = session.Factory.GetCollectionPersister(type.Role);
32-
if (collection == null)
33-
{
34-
//do nothing
35-
}
36-
else
37-
{
38-
IPersistentCollection persistentCollection = collection as IPersistentCollection;
39-
if (persistentCollection != null)
40-
{
41-
if (persistentCollection.SetCurrentSession(session))
42-
{
43-
if (IsOwnerUnchanged(persistentCollection, persister, ExtractCollectionKeyFromOwner(persister)))
44-
{
45-
// a "detached" collection that originally belonged to the same entity
46-
if (persistentCollection.IsDirty)
47-
{
48-
return Task.FromException<object>(new HibernateException("reassociated object has dirty collection: " + persistentCollection.Role));
49-
}
50-
51-
ReattachCollection(persistentCollection, type);
52-
}
53-
else
54-
{
55-
// a "detached" collection that belonged to a different entity
56-
return Task.FromException<object>(new HibernateException("reassociated object has dirty collection reference: " + persistentCollection.Role));
57-
}
58-
}
59-
else
60-
{
61-
// a collection loaded in the current session
62-
// can not possibly be the collection belonging
63-
// to the entity passed to update()
64-
return Task.FromException<object>(new HibernateException("reassociated object has dirty collection reference: " + persistentCollection.Role));
65-
}
66-
}
67-
else
68-
{
69-
// brand new collection
70-
//TODO: or an array!! we can't lock objects with arrays now??
71-
return Task.FromException<object>(new HibernateException("reassociated object has dirty collection reference (or an array)"));
72-
}
73-
}
74-
75-
return Task.FromResult<object>(null);
30+
return Task.FromResult<object>(ProcessCollection(collection, type));
7631
}
7732
catch (Exception ex)
7833
{

src/NHibernate/Async/Event/Default/OnReplicateVisitor.cs

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -26,40 +26,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
2626
{
2727
try
2828
{
29-
if (collection == CollectionType.UnfetchedCollection)
30-
{
31-
return Task.FromResult<object>(null);
32-
}
33-
34-
IEventSource session = Session;
35-
ICollectionPersister persister = session.Factory.GetCollectionPersister(type.Role);
36-
if (isUpdate)
37-
{
38-
RemoveCollection(persister, ExtractCollectionKeyFromOwner(persister), session);
39-
}
40-
41-
IPersistentCollection wrapper = collection as IPersistentCollection;
42-
if (wrapper != null)
43-
{
44-
wrapper.SetCurrentSession(session);
45-
if (wrapper.WasInitialized)
46-
{
47-
session.PersistenceContext.AddNewCollection(persister, wrapper);
48-
}
49-
else
50-
{
51-
ReattachCollection(wrapper, type);
52-
}
53-
}
54-
else
55-
{
56-
// otherwise a null or brand new collection
57-
// this will also (inefficiently) handle arrays, which
58-
// have no snapshot, so we can't do any better
59-
//processArrayOrNewCollection(collection, type);
60-
}
61-
62-
return Task.FromResult<object>(null);
29+
return Task.FromResult<object>(ProcessCollection(collection, type));
6330
}
6431
catch (Exception ex)
6532
{

src/NHibernate/Async/Event/Default/OnUpdateVisitor.cs

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -26,46 +26,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
2626
{
2727
try
2828
{
29-
if (collection == CollectionType.UnfetchedCollection)
30-
{
31-
return Task.FromResult<object>(null);
32-
}
33-
34-
IEventSource session = Session;
35-
ICollectionPersister persister = session.Factory.GetCollectionPersister(type.Role);
36-
object collectionKey = ExtractCollectionKeyFromOwner(persister);
37-
IPersistentCollection wrapper = collection as IPersistentCollection;
38-
if (wrapper != null)
39-
{
40-
if (wrapper.SetCurrentSession(session))
41-
{
42-
//a "detached" collection!
43-
if (!IsOwnerUnchanged(wrapper, persister, collectionKey))
44-
{
45-
// if the collection belonged to a different entity,
46-
// clean up the existing state of the collection
47-
RemoveCollection(persister, collectionKey, session);
48-
}
49-
50-
ReattachCollection(wrapper, type);
51-
}
52-
else
53-
{
54-
// a collection loaded in the current session
55-
// can not possibly be the collection belonging
56-
// to the entity passed to update()
57-
RemoveCollection(persister, collectionKey, session);
58-
}
59-
}
60-
else
61-
{
62-
// null or brand new collection
63-
// this will also (inefficiently) handle arrays, which have
64-
// no snapshot, so we can't do any better
65-
RemoveCollection(persister, collectionKey, session);
66-
}
67-
68-
return Task.FromResult<object>(null);
29+
return Task.FromResult<object>(ProcessCollection(collection, type));
6930
}
7031
catch (Exception ex)
7132
{

src/NHibernate/Async/Event/Default/WrapVisitor.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,7 @@ internal override Task<object> ProcessCollectionAsync(object collection, Collect
4040
{
4141
try
4242
{
43-
IPersistentCollection coll = collection as IPersistentCollection;
44-
if (coll != null)
45-
{
46-
ISessionImplementor session = Session;
47-
if (coll.SetCurrentSession(session))
48-
{
49-
ReattachCollection(coll, collectionType);
50-
}
51-
52-
return Task.FromResult<object>(null);
53-
}
54-
else
55-
{
56-
return Task.FromResult<object>(ProcessArrayOrNewCollection(collection, collectionType));
57-
}
43+
return Task.FromResult<object>(ProcessCollection(collection, collectionType));
5844
}
5945
catch (Exception ex)
6046
{

src/NHibernate/Async/Id/AbstractPostInsertGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public Task<object> GenerateAsync(ISessionImplementor s, object obj)
3333
{
3434
try
3535
{
36-
return Task.FromResult<object>(IdentifierGeneratorFactory.PostInsertIndicator);
36+
return Task.FromResult<object>(Generate(s, obj));
3737
}
3838
catch (Exception ex)
3939
{

src/NHibernate/Async/Id/Assigned.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,7 @@ public Task<object> GenerateAsync(ISessionImplementor session, object obj)
4444
}
4545
try
4646
{
47-
object id = session.GetEntityPersister(entityName, obj).GetIdentifier(obj);
48-
if (id == null)
49-
{
50-
return Task.FromException<object>(new IdentifierGenerationException("ids for this class must be manually assigned before calling save(): " + obj.GetType().FullName));
51-
}
52-
53-
return Task.FromResult<object>(id);
47+
return Task.FromResult<object>(Generate(session, obj));
5448
}
5549
catch (Exception ex)
5650
{

src/NHibernate/Async/Id/CounterGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Task<object> GenerateAsync(ISessionImplementor cache, object obj)
2525
{
2626
try
2727
{
28-
return Task.FromResult<object>(unchecked ((DateTime.Now.Ticks << 16) + Count));
28+
return Task.FromResult<object>(Generate(cache, obj));
2929
}
3030
catch (Exception ex)
3131
{

0 commit comments

Comments
 (0)