Example #1
0
        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));
        }
Example #2
0
        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);
        }
Example #4
0
 /// <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);
 }
Example #5
0
 /// <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));
 }
Example #6
0
 /// <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));
 }
Example #7
0
 internal abstract IContainSagaData Find(IBuilder builder,SagaFinderDefinition finderDefinition, LogicalMessage message);