@@ -210,13 +210,11 @@ async Task<HandleResult> InnerHandle(QueuedSagaMessage message, string handleMet
210210
211211 using ( var session = new NonDurableSynchronizedStorageSession ( ) )
212212 {
213- var contextBag = new ContextBag ( ) ;
214-
215- var loadResult = await LoadSagaData ( message , session , contextBag ) . ConfigureAwait ( false ) ;
213+ var loadResult = await LoadSagaData ( message , session , context ) . ConfigureAwait ( false ) ;
216214 saga . Entity = loadResult . Item1 ;
217215
218216 await sagaMapper . InvokeHandlerMethod ( saga , handleMethodName , message , context ) . ConfigureAwait ( false ) ;
219- await SaveSagaData ( saga , loadResult . Item2 , loadResult . Item3 , session , contextBag ) . ConfigureAwait ( false ) ;
217+ await SaveSagaData ( saga , loadResult . Item2 , loadResult . Item3 , session , context . Extensions ) . ConfigureAwait ( false ) ;
220218 await session . CompleteAsync ( ) . ConfigureAwait ( false ) ;
221219 }
222220
@@ -270,16 +268,14 @@ async Task<HandleResult> HandleTimeout(OutgoingMessage<object, SendOptions> time
270268 return await InnerHandle ( queueMessage , methodName , context ) . ConfigureAwait ( false ) ;
271269 }
272270
273- async Task < Tuple < TSagaData , bool , object > > LoadSagaData ( QueuedSagaMessage message , SynchronizedStorageSession session , ContextBag contextBag )
271+ async Task < Tuple < TSagaData , bool , object > > LoadSagaData ( QueuedSagaMessage message , SynchronizedStorageSession session , TestableMessageHandlerContext context )
274272 {
275273 var messageMetadata = sagaMapper . GetMessageMetadata ( message . Type ) ;
276274 TSagaData sagaData ;
277275
278- if ( message . Headers != null &&
279- message . Headers . TryGetValue ( Headers . SagaId , out var sagaIdString ) &&
280- Guid . TryParse ( sagaIdString , out Guid sagaId ) )
276+ if ( message . Headers . TryGetValue ( Headers . SagaId , out var sagaIdString ) && Guid . TryParse ( sagaIdString , out Guid sagaId ) )
281277 {
282- sagaData = await persister . Get < TSagaData > ( sagaId , session , contextBag ) . ConfigureAwait ( false ) ;
278+ sagaData = await persister . Get < TSagaData > ( sagaId , session , context . Extensions ) . ConfigureAwait ( false ) ;
283279 if ( sagaData != null )
284280 {
285281 return new Tuple < TSagaData , bool , object > ( sagaData , false , null ) ;
@@ -288,7 +284,7 @@ async Task<Tuple<TSagaData, bool, object>> LoadSagaData(QueuedSagaMessage messag
288284
289285 var messageMappedValue = sagaMapper . GetMessageMappedValue ( message ) ;
290286
291- sagaData = await persister . Get < TSagaData > ( sagaMapper . CorrelationPropertyName , messageMappedValue , session , contextBag ) . ConfigureAwait ( false ) ;
287+ sagaData = await persister . Get < TSagaData > ( sagaMapper . CorrelationPropertyName , messageMappedValue , session , context . Extensions ) . ConfigureAwait ( false ) ;
292288
293289 if ( sagaData != null )
294290 {
@@ -297,7 +293,10 @@ async Task<Tuple<TSagaData, bool, object>> LoadSagaData(QueuedSagaMessage messag
297293
298294 if ( messageMetadata . IsAllowedToStartSaga )
299295 {
300- sagaData = new TSagaData { Id = Guid . NewGuid ( ) } ;
296+ var originatorAddress = message . Headers . TryGetValue ( Headers . ReplyToAddress , out var replyAddress )
297+ ? replyAddress
298+ : context . ReplyToAddress ; // This property has a default value set even when the header isn't set to require less setup for testing
299+ sagaData = new TSagaData { Id = Guid . NewGuid ( ) , Originator = originatorAddress } ;
301300 sagaMapper . SetCorrelationPropertyValue ( sagaData , messageMappedValue ) ;
302301 return new Tuple < TSagaData , bool , object > ( sagaData , true , messageMappedValue ) ;
303302 }
0 commit comments