示例#1
0
        public void ConfigureKernel()
        {
            var action = Substitute.For <Action <IKernelConfigurationContext> >();

            revoConfiguration.ConfigureKernel(action);

            kernelConfigurationSection.KernelActions.Should().Contain(action);
        }
        public static IRevoConfiguration UseEFCoreDataAccess(this IRevoConfiguration configuration,
                                                             Action <DbContextOptionsBuilder> configurer,
                                                             bool?useAsPrimaryRepository = true,
                                                             Action <EFCoreDataAccessConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <EFCoreDataAccessConfigurationSection>();

            section.IsActive = true;
            section.UseAsPrimaryRepository = useAsPrimaryRepository ?? section.UseAsPrimaryRepository;
            section.Configurer             = configurer ?? section.Configurer;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    c.LoadModule(new EFCoreDataAccessModule(section));

                    if (section.EnableMigrationProvider)
                    {
                        c.LoadModule(new EFCoreMigrationsModule(section));
                    }
                }
            });

            return(configuration);
        }
示例#3
0
        public static IRevoConfiguration ConfigureInfrastructure(this IRevoConfiguration configuration,
                                                                 Action <InfrastructureConfigurationSection> action = null)
        {
            configuration.ConfigureCore();
            configuration.UseInMemoryJobs(isActive: null); // activate only if not previously disabled

            var section = configuration.GetSection <InfrastructureConfigurationSection>();

            action?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (!c.Kernel.GetBindings(typeof(IAsyncEventPipelineConfiguration)).Any())
                {
                    c.Kernel.Bind <IAsyncEventPipelineConfiguration>().ToConstant(section.AsyncEventPipeline);
                }

                if (!c.Kernel.GetBindings(typeof(DatabaseMigrationsConfiguration)).Any())
                {
                    c.Kernel.Bind <DatabaseMigrationsConfiguration>().ToConstant(section.DatabaseMigrations);
                }

                c.LoadModule(new DatabaseMigrationsModule(section.DatabaseMigrations));

                if (section.EnableSagas)
                {
                    c.LoadModule <SagasModule>();
                }
            });

            return(configuration);
        }
示例#4
0
        public static IRevoConfiguration ConfigureInfrastructure(this IRevoConfiguration configuration,
                                                                 AsyncEventPipelineConfiguration asyncEventPipelineConfiguration = null,
                                                                 Action <InfrastructureConfigurationSection> advancedAction      = null)
        {
            configuration.ConfigureCore();

            var section = configuration.GetSection <InfrastructureConfigurationSection>();

            section.AsyncEventPipeline = asyncEventPipelineConfiguration ?? section.AsyncEventPipeline;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (!c.Kernel.GetBindings(typeof(IAsyncEventPipelineConfiguration)).Any())
                {
                    c.Kernel.Bind <IAsyncEventPipelineConfiguration>().ToConstant(section.AsyncEventPipeline);
                }

                if (section.EnableSagas)
                {
                    c.LoadModule <SagasModule>();
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseEF6Repositories(this IRevoConfiguration configuration,
                                                            bool useCrudAggregateStore = true, bool useEventSourcedAggregateStore = true,
                                                            Action <EF6InfrastructureConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <EF6InfrastructureConfigurationSection>();

            section.UseCrudAggregateStore         = useCrudAggregateStore;
            section.UseEventSourcedAggregateStore = useEventSourcedAggregateStore;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                var dataAccessSection = configuration.GetSection <EF6DataAccessConfigurationSection>();
                if (!dataAccessSection.IsActive || !dataAccessSection.UseAsPrimaryRepository)
                {
                    throw new InvalidOperationException("EF6 data access must be enabled and configured as primary data repository in order to use EF6 aggregate stores.");

                    // TODO ensure EF6 aggregate stores get injected the correct EF6 repository/event store (in case there are more registered)
                    // to make it possible to use it even when not configured as primary data access
                }

                c.LoadModule(new EF6RepositoriesModule(section));
            });

            return(configuration);
        }
        public static IRevoConfiguration ConfigureCore(this IRevoConfiguration configuration,
                                                       Action <CoreConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <CoreConfigurationSection>();

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                c.LoadModule(new CoreModule(section));
            });

            return(configuration);
        }
示例#7
0
        public static IRevoConfiguration UseInMemoryJobs(this IRevoConfiguration configuration,
                                                         bool?isActive = true,
                                                         Action <InMemoryJobsConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <InMemoryJobsConfigurationSection>();

            section.IsActive = isActive ?? (section.IsActive ?? true);

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                c.LoadModule(new InMemoryJobsModule(section.SchedulerConfiguration, section.IsActive ?? true));
            });

            return(configuration);
        }
        public static IRevoConfiguration ConfigureEFCoreAspNetCoreOData(this IRevoConfiguration configuration,
                                                                        Action <EFCoreAspNetCoreODataConfigurationSection> action = null)
        {
            var section = configuration.GetSection <EFCoreAspNetCoreODataConfigurationSection>();

            action?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (!c.Kernel.GetBindings(typeof(EFCoreAspNetCoreODataConfigurationSection)).Any())
                {
                    c.Kernel.Bind <EFCoreAspNetCoreODataConfigurationSection>()
                    .ToConstant(section);
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseEFCoreRepositories(this IRevoConfiguration configuration,
                                                               bool useCrudAggregateStore = true, bool useEventSourcedAggregateStore = true,
                                                               Action <EFCoreInfrastructureConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <EFCoreInfrastructureConfigurationSection>();

            section.UseCrudAggregateStore         = useCrudAggregateStore;
            section.UseEventSourcedAggregateStore = useEventSourcedAggregateStore;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                c.LoadModule(new EFCoreRepositoriesModule(section));
            });

            return(configuration);
        }
示例#10
0
        public static IRevoConfiguration AddAutoMapperExtension(this IRevoConfiguration configuration,
                                                                Action <AutoMapperConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <AutoMapperConfigurationSection>();

            section.AutoDiscoverProfiles = true;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.AutoDiscoverProfiles)
                {
                    c.LoadModule(new AutoMapperModule());
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseEFCoreSagas(this IRevoConfiguration configuration,
                                                        Action <EFCoreInfrastructureConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <EFCoreInfrastructureConfigurationSection>();

            section.UseSagas = true;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.UseSagas)
                {
                    c.LoadModule <EFCoreSagasModule>();
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration AddNotificationsExtension(this IRevoConfiguration configuration,
                                                                   Action <NotificationsConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <NotificationsConfigurationSection>();

            section.IsActive = true;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    c.LoadModule(new NotificationsModule());
                }
            });

            return(configuration);
        }
示例#13
0
        public static IRevoConfiguration ConfigureCore(this IRevoConfiguration configuration,
                                                       Action <CoreConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <CoreConfigurationSection>();

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                c.LoadModule(new CoreModule(section));
                c.LoadModule(new CommandsModule(section.Commands));

                if (section.Security.UseNullSecurityModule)
                {
                    c.LoadModule(new NullCoreSecurityModule());
                }
            });

            return(configuration);
        }
示例#14
0
        public static IRevoConfiguration AddHistoryExtension(this IRevoConfiguration configuration,
                                                             bool?isChangeTrackingActive = true,
                                                             Action <HistoryConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <HistoryConfigurationSection>();

            section.IsChangeTrackingActive = isChangeTrackingActive ?? section.IsChangeTrackingActive;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsChangeTrackingActive)
                {
                    c.LoadModule(new HistoryModule());
                }
            });

            return(configuration);
        }
示例#15
0
        public static IRevoConfiguration ConfigureApnsNotifications(this IRevoConfiguration configuration,
                                                                    IApnsAppConfiguration[] apnsApps = null,
                                                                    Action <ApnsNotificationsConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <ApnsNotificationsConfigurationSection>();

            section.AppConfigurations = apnsApps ?? new IApnsAppConfiguration[0];

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.AppConfigurations.Count > 0)
                {
                    c.LoadModule(new ApnsNotificationsModule(section.AppConfigurations));
                }
            });

            return(configuration);
        }
示例#16
0
        public static IRevoConfiguration ConfigureMailNotifications(this IRevoConfiguration configuration,
                                                                    Func <IMailNotificationSender> mailSenderFactory,
                                                                    Action <MailNotificationsConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <MailNotificationsConfigurationSection>();

            section.MailSenderFactoryFunc = mailSenderFactory;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.MailSenderFactoryFunc != null)
                {
                    c.LoadModule(new MailNotificationsModule(section.MailSenderFactoryFunc));
                }
            });

            return(configuration);
        }
示例#17
0
        public static IRevoConfiguration UseRebus(this IRevoConfiguration configuration,
                                                  RebusConnectionConfiguration connection           = null,
                                                  Action <RebusConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <RebusConfigurationSection>();

            section.IsActive   = true;
            section.Connection = connection ?? section.Connection;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    c.LoadModule(new RebusModule(section.Connection));
                }
            });

            return(configuration);
        }
示例#18
0
        public static IRevoConfiguration UseEasyNetQ(this IRevoConfiguration configuration,
                                                     bool?isActive = true,
                                                     EasyNetQConnectionConfiguration connection = null,
                                                     Action <EasyNetQSubscriptionsConfiguration> subscriptions = null,
                                                     Action <EasyNetQConfigurationSection> advancedAction      = null)
        {
            var section = configuration.GetSection <EasyNetQConfigurationSection>();

            section.IsActive   = isActive ?? section.IsActive;
            section.Connection = connection ?? section.Connection;

            subscriptions?.Invoke(section.Subscriptions);
            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                c.LoadModule(new EasyNetQModule(section));
            });

            return(configuration);
        }
        public static IRevoConfiguration UseEFCoreProjections(this IRevoConfiguration configuration,
                                                              bool autoDiscoverProjectors = true,
                                                              Action <EFCoreInfrastructureConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <EFCoreInfrastructureConfigurationSection>();

            section.UseProjections         = true;
            section.AutoDiscoverProjectors = autoDiscoverProjectors;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.UseProjections)
                {
                    c.LoadModule(new EFCoreProjectionsModule(section));
                }
            });

            return(configuration);
        }
示例#20
0
        public static IRevoConfiguration UseAspNetCore(this IRevoConfiguration configuration,
                                                       Action <AspNetCoreConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <AspNetCoreConfigurationSection>();

            section.IsActive = true;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    var hangfireConfigurationSection = configuration.GetSection <HangfireConfigurationSection>();
                    c.LoadModule(new AspNetCoreModule(hangfireConfigurationSection));
                    c.LoadModule(new AspNetCoreSecurityModule());
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseHangfire(this IRevoConfiguration configuration,
                                                     Func <JobStorage> jobStorage = null,
                                                     Action <HangfireConfigurationSection> advancedAction = null)
        {
            configuration.UseInMemoryJobs(false);

            var section = configuration.GetSection <HangfireConfigurationSection>();

            section.IsActive   = true;
            section.JobStorage = jobStorage ?? section.JobStorage;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    c.LoadModule(new HangfireModule(section));
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseRavenProjections(this IRevoConfiguration configuration,
                                                             bool autoDiscoverProjectors = true,
                                                             Action <RavenConfigurationSection> advancedAction = null)
        {
            configuration.UseRavenDataAccess(null);

            var section = configuration.GetSection <RavenConfigurationSection>();

            section.UseProjections         = true;
            section.AutoDiscoverProjectors = autoDiscoverProjectors;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.UseProjections)
                {
                    c.LoadModule(new RavenProjectionsModule(section));
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseRavenDataAccess(this IRevoConfiguration configuration,
                                                            RavenConnectionConfiguration connection,
                                                            bool?useAsPrimaryRepository = true,
                                                            Action <RavenConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <RavenConfigurationSection>();

            section.IsActive               = true;
            section.Connection             = connection ?? section.Connection;
            section.UseAsPrimaryRepository = useAsPrimaryRepository ?? section.UseAsPrimaryRepository;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    c.LoadModule(new RavenModule(section.Connection, section.UseAsPrimaryRepository));
                }
            });

            return(configuration);
        }
        public static IRevoConfiguration UseAspNet(this IRevoConfiguration configuration,
                                                   Action <AspNetConfigurationSection> advancedAction = null)
        {
            var section = configuration.GetSection <AspNetConfigurationSection>();

            section.IsActive = true;

            advancedAction?.Invoke(section);

            configuration.ConfigureKernel(c =>
            {
                if (section.IsActive)
                {
                    var hangfireConfigurationSection = configuration.GetSection <HangfireConfigurationSection>();
                    c.LoadModule(new CorePlatformModule(hangfireConfigurationSection));
                    c.LoadModule(new SecurityModule());
                    c.LoadModule(new NullAspNetIdentityModule());
                    c.LoadModule(new GlobalizationModule());
                    c.LoadModule(new TemplatesModule());
                }
            });

            return(configuration);
        }