Esempio n. 1
0
        GetHandlerFactory(SingleInstanceFactory factory, ref Collection <Exception> resolveExceptions)
        {
            if (GetHandler <IRequestHandler <TRequest, TResponse> >(factory, ref resolveExceptions) != null)
            {
                return((request, token, fac) => () =>
                {
                    var handler = GetHandler <IRequestHandler <TRequest, TResponse> >(fac);
                    return Task.FromResult(handler.Handle(request));
                });
            }

            if (GetHandler <IAsyncRequestHandler <TRequest, TResponse> >(factory, ref resolveExceptions) != null)
            {
                return((request, token, fac) =>
                {
                    var handler = GetHandler <IAsyncRequestHandler <TRequest, TResponse> >(fac);
                    return () => handler.Handle(request);
                });
            }

            if (GetHandler <ICancellableAsyncRequestHandler <TRequest, TResponse> >(factory, ref resolveExceptions) != null)
            {
                return((request, token, fac) =>
                {
                    var handler = GetHandler <ICancellableAsyncRequestHandler <TRequest, TResponse> >(fac);
                    return () => handler.Handle(request, token);
                });
            }

            return(null);
        }
Esempio n. 2
0
        public override Task <TResult> HandleAsync(IQuery <TResult> query, CancellationToken cancellationToken,
                                                   SingleInstanceFactory singleFactory)
        {
            var handler = GetHandler((TQuery)query, cancellationToken, singleFactory);

            return(handler.Invoke());
        }
Esempio n. 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Mediator"/> class.
 /// </summary>
 /// <param name="singleInstanceFactory">The single instance factory.</param>
 /// <param name="multiInstanceFactory">The multi instance factory.</param>
 public Mediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory)
 {
     _singleInstanceFactory = singleInstanceFactory;
     _multiInstanceFactory  = multiInstanceFactory;
     _genericHandlerCache   = new ConcurrentDictionary <Type, ConcurrentDictionary <Type, Type> >();
     _wrapperHandlerCache   = new ConcurrentDictionary <Type, ConcurrentDictionary <Type, Type> >();
 }
Esempio n. 4
0
        GetHandlerFactory(SingleInstanceFactory factory, ref Collection <Exception> resolveExceptions)
        {
            if (GetHandler <ICommandHandler <TCommand, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (command, token, fac) => () =>
                       {
                           var handler = GetHandler <ICommandHandler <TCommand, TResult> >(fac);
                           return Task.FromResult(handler.Handle(command));
                       }
            }
            ;

            if (GetHandler <IAsyncCommandHandler <TCommand, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (command, token, fac) =>
                       {
                           var handler = GetHandler <IAsyncCommandHandler <TCommand, TResult> >(fac);
                           return () => handler.HandleAsync(command);
                       }
            }
            ;

            if (GetHandler <ICancellableAsyncCommandHandler <TCommand, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (command, token, fac) =>
                       {
                           var handler = GetHandler <ICancellableAsyncCommandHandler <TCommand, TResult> >(fac);
                           return () => handler.HandleAsync(command, token);
                       }
            }
            ;

            return(null);
        }
Esempio n. 5
0
        //public Mediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory, IDependencyResolver dependencyResolver)
        //{
        //    _singleInstanceFactory = singleInstanceFactory;
        //    _multiInstanceFactory = multiInstanceFactory;
        //    _dependencyResolver = dependencyResolver;
        //    _genericHandlerCache = new ConcurrentDictionary<Type, Type>();
        //    _wrapperHandlerCache = new ConcurrentDictionary<Type, Type>();
        //}

        public Mediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory, IDependencyResolver dependencyResolver)
        {
            _singleInstanceFactory = singleInstanceFactory;
            _multiInstanceFactory  = multiInstanceFactory;
            _dependencyResolver    = dependencyResolver;
            _genericHandlerCache   = new ConcurrentDictionary <Type, Type>();
            _wrapperHandlerCache   = new ConcurrentDictionary <Type, Type>();
        }
Esempio n. 6
0
        public void InstanceCreationTest()
        {
            var factory = new SingleInstanceFactory(() => new object());

            var instanceA = factory.CreateInstance();
            var instanceB = factory.CreateInstance();

            instanceA.ShouldBeSameAs(instanceB);
        }
        public UpdateOptionValidator(SingleInstanceFactory singleInstanceFactory)
        {
            RuleFor(update => update.OptionId)
            .Required("Option Id is required");

            RuleFor(update => update.SavedById)
            .Required("Saved By Id is required")
            .MustBe(singleInstanceFactory(typeof(UpdateOptionOnOwnQuestionnaireRule)));
        }
Esempio n. 8
0
        public override Task <TResponse> Handle(IRequest <TResponse> request, CancellationToken cancellationToken,
                                                SingleInstanceFactory singleFactory, MultiInstanceFactory multiFactory)
        {
            var handler = GetHandler((TRequest)request, cancellationToken, singleFactory);

            var pipeline = GetPipeline((TRequest)request, handler, multiFactory);

            return(pipeline);
        }
Esempio n. 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Mediator"/> class.
        /// </summary>
        /// <param name="singleInstanceFactory">The single instance factory.</param>
        /// <param name="multiInstanceFactory">The multi instance factory.</param>
        /// <param name="configuration">The configuration options</param>
        public Mediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory, MediatorConfiguration configuration)
        {
            _singleInstanceFactory = singleInstanceFactory;
            _multiInstanceFactory  = multiInstanceFactory;
            _genericHandlerCache   = new ConcurrentDictionary <Type, Type>();
            _wrapperHandlerCache   = new ConcurrentDictionary <Type, Type>();

            _publishOption = configuration.PublishAsyncOptions;
        }
Esempio n. 10
0
        public override Task <TResult> HandleAsync(ICommand <TResult> command, CancellationToken cancellationToken,
                                                   SingleInstanceFactory singleFactory, MultiInstanceFactory multiFactory)
        {
            var handler = GetHandler((TCommand)command, cancellationToken, singleFactory);

            var pipeline = GetPipeline((TCommand)command, handler, multiFactory);

            return(pipeline);
        }
Esempio n. 11
0
        public DeleteQuestionnaireValidator(SingleInstanceFactory singleFactory)
        {
            RuleFor(request => request.DeletedById)
            .Required("Delete by Id is required")
            .MustBe(singleFactory(typeof(DeleteOwnQuestionnaireRule)));

            RuleFor(request => request.QuestionnaireId)
            .Required("Questionnaire Id is required")
            .MustBe(singleFactory(typeof(QuestionnaireExistsRule)));
        }
Esempio n. 12
0
        public override Task <TResponse> Handle(IRequest <TResponse> request, CancellationToken cancellationToken,
                                                SingleInstanceFactory singleFactory, MultiInstanceFactory multiFactory)
        {
            Task <TResponse> Handler() => GetHandler <IRequestHandler <TRequest, TResponse> >(singleFactory).Handle((TRequest)request, cancellationToken);

            return(multiFactory(typeof(IPipelineBehavior <TRequest, TResponse>))
                   .Cast <IPipelineBehavior <TRequest, TResponse> >()
                   .Reverse()
                   .Aggregate((RequestHandlerDelegate <TResponse>)Handler, (next, pipeline) => () => pipeline.Handle((TRequest)request, cancellationToken, next))());
        }
Esempio n. 13
0
 public FeaturesService(
     IOptions <XabarilOptions> options,
     ILogger <XabarilModule> logger,
     IFeaturesStore featuresStore,
     SingleInstanceFactory singleInstanceFactory)
 {
     _featuresStore         = featuresStore ?? throw new ArgumentNullException(nameof(featuresStore));
     _singleInstanceFactory = singleInstanceFactory ?? throw new ArgumentNullException(nameof(singleInstanceFactory));
     _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
     _xabarilOptions = options?.Value ?? new XabarilOptions();
 }
Esempio n. 14
0
 protected static object GetHandler(Type requestType, SingleInstanceFactory singleInstanceFactory)
 {
     try
     {
         return(singleInstanceFactory(requestType));
     }
     catch (Exception)
     {
         return(null);
     }
 }
Esempio n. 15
0
        public ManageSeasonControllerTests()
        {
            LeagueDbInstance db = new LeagueDbInstance();

            _testContext   = db.NewContext();
            _verifyContext = db.NewContext();

            SingleInstanceFactory factory = request => new CreateSeasonCommandHandler(_testContext);

            _mediator = new Mediator(factory, null);
        }
Esempio n. 16
0
 protected static object GetHandler(Type requestType, SingleInstanceFactory singleInstanceFactory, ref Collection <Exception> resolveExceptions)
 {
     try
     {
         return(singleInstanceFactory(requestType));
     }
     catch (Exception e)
     {
         resolveExceptions?.Add(e);
         return(null);
     }
 }
Esempio n. 17
0
        private CommandHandlerDelegate <TResult> GetHandler(TCommand command, CancellationToken cancellationToken,
                                                            SingleInstanceFactory factory)
        {
            var resolveExceptions = new Collection <Exception>();

            LazyInitializer.EnsureInitialized(ref _handlerFactory, ref _initialized, ref _syncLock,
                                              () => GetHandlerFactory(factory, ref resolveExceptions));

            if (!_initialized || _handlerFactory == null)
            {
                throw BuildException(command, resolveExceptions);
            }

            return(_handlerFactory(command, cancellationToken, factory));
        }
Esempio n. 18
0
        public UpdateQuestionnaireValidator(SingleInstanceFactory singleFactory)
        {
            RuleFor(update => update.QuestionnaireId)
            .Required("Questionnaire Id is required");

            RuleFor(createQuestionnaire => createQuestionnaire.Name)
            .MaxLength(100, "Name cannot be longer than 100 characters");

            RuleFor(createQuestionnaire => createQuestionnaire.Description)
            .MaxLength(200, "Description cannot be longer than 200 characters");

            RuleFor(update => update.SavedById)
            .Required("User Id is Required")
            .MustBe(singleFactory(typeof(OnlySaveOwnQuestionnaireRule)));
        }
Esempio n. 19
0
        public KafkaConsumerService(ConsumerServiceOptions options, ILogger <KafkaConsumerService> logger, ISchemaConsumerFactory consumerFactory,
                                    SingleInstanceFactory factory)
        {
            _callbackCts     = new CancellationTokenSource();
            _cancelled       = false;
            _logger          = logger;
            _factory         = factory;
            _options         = options;
            _consumerFactory = consumerFactory;

            _consumers = new List <IConsumer>();

            //var actionBlockOptions = new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 10, CancellationToken = _callbackCts.Token };
            //_workerBlock = new ActionBlock<Message<TKey, TValue>>(async item => await OnMessageReceivedAsync(item, _callbackCts.Token), actionBlockOptions);
        }
        public CreateQuestionValidator(SingleInstanceFactory singleFactory)
        {
            RuleFor(create => create.QuestionId)
            .MustBeDefault("Question Id must be unset");

            RuleFor(create => create.QuestionnaireId)
            .Required("Questionnaire Id is required");

            RuleFor(create => create.SavedById)
            .Required("Saved By Id is required")
            .MustBe(singleFactory(typeof(CanOnlySaveQuestionsOnOwnQuestionnaire)));

            RuleFor(create => create.Text)
            .NotNull("Text cannot be null")
            .NotEmpty("Text cannot by empty")
            .MaxLength(200, "Text cannot be longer than 200 characters");
        }
Esempio n. 21
0
        public CreateOptionValidator(SingleInstanceFactory singleInstanceFactory)
        {
            RuleFor(create => create.OptionId)
            .MustBeDefault("Option Id must be unset.");

            RuleFor(create => create.QuestionId)
            .Required("Question Id is required.");

            RuleFor(create => create.SavedById)
            .Required("Saved By Id is required.")
            .MustBe(singleInstanceFactory(typeof(CreateOptionOnOwnQuestionnaireRule)));

            RuleFor(create => create.Text)
            .NotEmpty("Text must not be empty")
            .NotNull("Text must not be null")
            .MaxLength(100, "Text must be less than 100 characters");
        }
Esempio n. 22
0
        public void InstanceInjectionParameterTest()
        {
            var factory = new SingleInstanceFactory(() => new FactoryTest());

            var instance = (FactoryTest)factory.CreateInstance(
                new InjectProperty("TestProperty", "abc"),
                new InjectProperty("Test42", "xyz"),
                new InjectProperty("RandomProperty", 42));

            instance.TestProperty.ShouldBe("abc");
            instance.TestPropertyWithName.ShouldBe("xyz");
            instance.RandomProperty.ShouldNotBe(42);

            instance = (FactoryTest)factory.CreateInstance(
                new InjectProperty("TestPropertyWithName", "xyz"));

            instance.TestProperty.ShouldBe("abc");
            instance.TestPropertyWithName.ShouldBe("xyz");
            instance.RandomProperty.ShouldNotBe(42);
        }
Esempio n. 23
0
        protected static THandler GetHandler <THandler>(SingleInstanceFactory factory)
        {
            THandler handler;

            try
            {
                handler = (THandler)factory(typeof(THandler));
            }
            catch (Exception e)
            {
                throw new InvalidOperationException($"Error constructing handler for request of type {typeof(THandler)}. Register your handlers with the container. See the samples in GitHub for examples.", e);
            }

            if (handler == null)
            {
                throw new InvalidOperationException($"Handler was not found for request of type {typeof(THandler)}. Register your handlers with the container. See the samples in GitHub for examples.");
            }

            return(handler);
        }
        public CreateUserValidator(SingleInstanceFactory singleFactory)
        {
            RuleFor(createUser => createUser.Username)
            .NotNull("Username cannot be null")
            .NotEmpty("Username cannot be empty")
            .MaxLength(50, "Username cannot be longer than 50 characters")
            .MustBe(singleFactory(typeof(UniqueUsernameRule)));

            RuleFor(createUser => createUser.FirstName)
            .NotNull("First Name cannot be null")
            .NotEmpty("First Name cannot be empty")
            .MatchesPattern(@"^[a-zA-Z]+$", "First Name can only contain letters")
            .MaxLength(50, "First Name cannot be longer than 50 characters");

            RuleFor(createUser => createUser.LastName)
            .NotNull("Last Name cannot be null")
            .NotEmpty("Last Name cannot be empty")
            .MatchesPattern(@"^[a-zA-Z]+$", "Last Name can only contain letters")
            .MaxLength(100, "Last Name cannot be longer than 100 characters");

            RuleFor(createUser => createUser.Email)
            .NotNull("Email cannot be null")
            .NotEmpty("Email cannot be empty")
            .MaxLength(100, "Email cannot be longer than 100 characters")
            .MustBe(value => ValidEmailFormat((string)value), "Email is invalid format");

            RuleFor(createUser => createUser.Password)
            .NotNull("Password cannot be null")
            .NotEmpty("Password cannot be empty")
            .MatchesPattern(
                @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",
                "Password must contain at least 8 characters, 1 uppercase letter, 1 lowercase letter, 1 number, and 1 special character"
                );

            RuleFor(createUser => createUser.BirthDate)
            .NotNull("Birth Date cannot be null")
            .MinDate(DateTime.Now.AddDays(-1).AddYears(-18), "Must be at least 18 years old to register");
        }
Esempio n. 25
0
        GetHandlerFactory(SingleInstanceFactory factory, ref Collection <Exception> resolveExceptions)
        {
            if (GetHandler <IQueryHandler <TQuery, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (query, token, fac) => () =>
                       {
                           var handler = GetHandler <IQueryHandler <TQuery, TResult> >(fac);
                           return Task.FromResult(handler.Handle(query));
                       }
            }
            ;

            if (GetHandler <IAsyncQueryHandler <TQuery, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (query, token, fac) => () =>
                       {
                           var handler = GetHandler <IAsyncQueryHandler <TQuery, TResult> >(fac);
                           return handler.HandleAsync(query);
                       }
            }
            ;

            if (GetHandler <ICancellableAsyncQueryHandler <TQuery, TResult> >(factory, ref resolveExceptions) != null)
            {
                return (query, token, fac) => () =>
                       {
                           var handler = GetHandler <ICancellableAsyncQueryHandler <TQuery, TResult> >(fac);
                           return handler.HandleAsync(query, token);
                       }
            }
            ;

            return(null);
        }
    }
}
Esempio n. 26
0
 public Mediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory)
 {
     _singleInstanceFactory = singleInstanceFactory;
     _multiInstanceFactory  = multiInstanceFactory;
 }
Esempio n. 27
0
 public CommandProcessor(SingleInstanceFactory factory)
 {
     _factory = factory;
 }
Esempio n. 28
0
 public QueryProcessor(SingleInstanceFactory factory)
 {
     _factory = factory;
 }
Esempio n. 29
0
 public SequentialMediator(SingleInstanceFactory singleInstanceFactory, MultiInstanceFactory multiInstanceFactory)
     : base(singleInstanceFactory, multiInstanceFactory)
 {
 }
Esempio n. 30
0
 public Bus(SingleInstanceFactory singleInstanceFactory, ITelemetrySink telemetrySink)
 {
     _singleInstanceFactory = singleInstanceFactory;
     _telemetrySink         = telemetrySink;
 }