public void Can_run_query_from_raw_message() { // Arrange pipelineService.ServiceProvider = new FuncServiceProvider(InterfacesResolver); SetupQueryPipeline(pipelineService.PipelineContainer.AddQueryPipeline()); var messageRecord = new MessageRecord { ContentType = "Saritasa.Tools.Messages.Tests.QueriesTests+QueryObject.SimpleQueryWithDependency," + "Saritasa.Tools.Messages.Tests", Content = new Dictionary <string, object> { ["a"] = 10, ["b"] = 20, ["dependencyB"] = null, } }; // Act var queryPipeline = pipelineService.GetPipelineOfType <IQueryPipeline>(); var queryConverter = pipelineService.GetPipelineOfType <IQueryPipeline>() as IMessageRecordConverter; var messageContext = queryConverter.CreateMessageContext(pipelineService, messageRecord); queryPipeline.Invoke(messageContext); // Assert Assert.IsType <List <int> >(messageContext.GetResult <object>()); }
/// <summary> /// Query. /// </summary> /// <typeparam name="TQuery">Query type.</typeparam> /// <param name="pipelineService">Pipelines service.</param> /// <param name="obj">Query object to execute by.</param> /// <returns>Query caller.</returns> public static IQueryCaller <TQuery> Query <TQuery>(this IMessagePipelineService pipelineService, TQuery obj) where TQuery : class { var pipeline = pipelineService.GetPipelineOfType <IQueryPipeline>(); return(pipeline.Query <TQuery>(pipelineService, obj)); }
/// <summary> /// Raise event. /// </summary> /// <param name="pipelineService">Pipeline service.</param> /// <param name="event">Event to process.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests.</param> public static async Task RaiseEventAsync(this IMessagePipelineService pipelineService, object @event, CancellationToken cancellationToken = default(CancellationToken)) { var eventPipeline = pipelineService.GetPipelineOfType <IEventPipeline>(); var messageContext = eventPipeline.CreateMessageContext(pipelineService, @event); await eventPipeline.InvokeAsync(messageContext, cancellationToken); }
/// <summary> /// Raise event. /// </summary> /// <param name="pipelineService">Pipeline service.</param> /// <param name="event">Event to process.</param> public static void RaiseEvent(this IMessagePipelineService pipelineService, object @event) { var eventPipeline = pipelineService.GetPipelineOfType <IEventPipeline>(); var messageContext = eventPipeline.CreateMessageContext(pipelineService, @event); eventPipeline.Invoke(messageContext); }
/// <summary> /// Handle command within message context. /// </summary> /// <param name="pipelineService">Pipelines service.</param> /// <param name="command">Command to execute.</param> /// <returns>Message context used in execution.</returns> public static IMessageContext HandleCommand(this IMessagePipelineService pipelineService, object command) { var pipeline = pipelineService.GetPipelineOfType <ICommandPipeline>(); var messageContext = pipeline.CreateMessageContext(pipelineService, command); pipeline.Invoke(messageContext); return(messageContext); }
/// <summary> /// Handle command within message context. /// </summary> /// <param name="pipelineService">Pipelines service.</param> /// <param name="command">Command to execute.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests.</param> /// <returns>Message context used in execution.</returns> public static async Task <IMessageContext> HandleCommandAsync(this IMessagePipelineService pipelineService, object command, CancellationToken cancellationToken = default(CancellationToken)) { var commandPipeline = pipelineService.GetPipelineOfType <ICommandPipeline>(); var messageContext = commandPipeline.CreateMessageContext(pipelineService, command); await commandPipeline.InvokeAsync(messageContext, cancellationToken); return(messageContext); }