internal override IContainSagaData Find(IBuilder builder, SagaFinderDefinition finderDefinition, LogicalMessage message) { var customFinderType = (Type)finderDefinition.Properties["custom-finder-clr-type"]; var finder = (IFindSagas <TSagaData> .Using <TMessage>)builder.Build(customFinderType); return(finder.FindBy((TMessage)message.Instance)); }
internal override IContainSagaData Find(IBuilder builder, SagaFinderDefinition finderDefinition, LogicalMessage message) { var propertyAccessor = (Func <object, object>)finderDefinition.Properties["property-accessor"]; var propertyValue = propertyAccessor(message.Instance); var sagaPropertyName = (string)finderDefinition.Properties["saga-property-name"]; if (sagaPropertyName.ToLower() == "id") { return(sagaPersister.Get <TSagaData>((Guid)propertyValue)); } return(sagaPersister.Get <TSagaData>(sagaPropertyName, propertyValue)); }
static void SetFinderForMessage(SagaToMessageMap mapping, Type sagaEntityType, List <SagaFinderDefinition> finders) { var finder = new SagaFinderDefinition { MessageType = mapping.MessageType.FullName }; if (mapping.CustomFinderType != null) { finder.Type = typeof(CustomFinderAdapter <,>).MakeGenericType(sagaEntityType, mapping.MessageType); finder.Properties["custom-finder-clr-type"] = mapping.CustomFinderType; } else { finder.Type = typeof(PropertySagaFinder <>).MakeGenericType(sagaEntityType); finder.Properties["property-accessor"] = mapping.MessageProp; finder.Properties["saga-property-name"] = mapping.SagaPropName; } finders.Add(finder); }
/// <summary> /// Gets the configured finder for this message /// </summary> /// <param name="messageType"></param> /// <param name="finderDefinition">The finder if present</param> /// <returns>True if finder exists</returns> public bool TryGetFinder(string messageType,out SagaFinderDefinition finderDefinition) { return sagaFinders.TryGetValue(messageType,out finderDefinition); }
/// <summary> /// Gets the configured finder for this message /// </summary> /// <param name="messageType"></param> /// <param name="finderDefinition">The finder if present</param> /// <returns>True if finder exists</returns> public bool TryGetFinder(string messageType, out SagaFinderDefinition finderDefinition) { return(sagaFinders.TryGetValue(messageType, out finderDefinition)); }
/// <summary> /// Gets the configured finder for this message. /// </summary> /// <param name="messageType">The message <see cref="MemberInfo.Name" />.</param> /// <param name="finderDefinition">The finder if present.</param> /// <returns>True if finder exists.</returns> public bool TryGetFinder(string messageType, out SagaFinderDefinition finderDefinition) { Guard.AgainstNullAndEmpty(nameof(messageType), messageType); return(sagaFinders.TryGetValue(messageType, out finderDefinition)); }
internal abstract IContainSagaData Find(IBuilder builder,SagaFinderDefinition finderDefinition, LogicalMessage message);