Ejemplo n.º 1
0
        public ExecutionResult Handle(IAmAnEventMessage @event)
        {
            var executionResult = InvokeTransition(@event);

            executionResult = StoreChanges(executionResult);

            executionResult = PublishCommands(executionResult);

            return(executionResult);
        }
Ejemplo n.º 2
0
 public void StoreFor <TAggregate>(string aggregateId, IAmAnEventMessage eventMessage) where TAggregate : Aggregate
 {
     _events.Add(new EventBag
     {
         AggregateId     = aggregateId,
         TypeOfAggregate = typeof(TAggregate),
         TypeOfEvent     = eventMessage.GetType(),
         TimeStamp       = DateTime.UtcNow,
         Event           = eventMessage
     });
 }
Ejemplo n.º 3
0
        private ExecutionResult InvokeTransition(IAmAnEventMessage msg)
        {
            var executionResult = new ExecutionResult();

            _processManager.InternalChanges.Add(msg);
            _processManager.Tell(msg);

            executionResult.Executed = true;

            return(executionResult);
        }
Ejemplo n.º 4
0
        public static void HandleMeWith(this IAmAnEventMessage @event, IHandleEvents handler)
        {
            var handlerType = handler.GetType();
            var eventType   = @event.GetType();

            var eventHandlerMethods =
                from method in handlerType.GetTypeInfo().DeclaredMethods
                from parameter in method.GetParameters()
                where parameter.ParameterType == eventType
                select method;

            var allMethodes = eventHandlerMethods.ToList();

            if (allMethodes.Any())
            {
                if (allMethodes.Count() > 1)
                {
                    throw new MultipleHandlerMethodesDetected(eventType.Name);
                }

                allMethodes.First().Invoke(handler, new object[] { @event });
            }
        }
        public void Setup()
        {
            var events = new IAmAnEventMessage[]
            {
                new ValueInitialized {
                    Value = 1
                },
                new ValueChanged {
                    Value = 2
                },
                new ValueChanged {
                    Value = 3
                },
                new SomeThingElseHappened(),
                new ValueChanged {
                    Value = 4
                },
                new ValueChanged {
                    Value = 5
                }
            };

            _aggregate = new AggregateUnderTest("", events);
        }
Ejemplo n.º 6
0
        public void StoreFor <TAggregate>(string aggregateId, IAmAnEventMessage eventMessage) where TAggregate : Aggregate
        {
            var request = new RestRequest("api/v1/event", Method.POST);

            request.AddHeader("x-functions-key", API_KEY);

            var serializedEvent = JSON.Serialize(eventMessage as object);

            request.AddJsonBody(new EventBag {
                EventId         = Guid.NewGuid().ToString(),
                AggregateId     = aggregateId,
                EventTimeStamp  = DateTime.UtcNow,
                TypeOfAggregate = typeof(TAggregate).ToString(),
                TypeOfEvent     = eventMessage.GetType().ToString(),
                Event           = serializedEvent
            });

            var response = _httpClient.Execute(request);

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                throw new Exception("Nicht gespeichert");
            }
        }
Ejemplo n.º 7
0
 public void Tell(IAmAnEventMessage @event)
 {
     eventHandler.Tell(@event);
 }
Ejemplo n.º 8
0
 public ResultSet <TState> Apply(ResultSet <TState> startState, IAmAnEventMessage message)
 {
     return(_mappings.Aggregate(startState, (currentState, apply) => apply(currentState, message)));
 }
Ejemplo n.º 9
0
 public void Replay(IAmAnEventMessage eventMessage)
 {
     EventsToReplay.Add(eventMessage);
 }