예제 #1
0
        /// <inheritdoc />
        protected override void Load(ContainerBuilder builder)
        {
            ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterCreateAreaCommand).GetTypeInfo().Assembly);
            ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterUpdateAreaCommand).GetTypeInfo().Assembly);
            ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterDeleteAreaCommand).GetTypeInfo().Assembly);

            builder.RegisterType <AreasCreateValidator>()
            .As <IValidator <PresenterCreateAreaCommand> >();
            builder.RegisterType <EventAreaCreateValidator>()
            .As <IValidator <PresenterCreateEventAreaCommand> >();
            builder.RegisterType <EventCreateValidator>()
            .As <IValidator <PresenterCreateEventCommand> >();
            builder.RegisterType <EventSeatCreateValidator>()
            .As <IValidator <PresenterCreateEventSeatCommand> >();
            builder.RegisterType <LayoutCreateValidator>()
            .As <IValidator <PresenterCreateLayoutCommand> >();
            builder.RegisterType <SeatCreateValidator>()
            .As <IValidator <PresenterCreateSeatCommand> >();
            builder.RegisterType <VenueCreateValidator>()
            .As <IValidator <PresenterCreateVenueCommand> >();

            builder.RegisterGeneric(typeof(ApplicationValidatorBehavior <,>)).As(typeof(IPipelineBehavior <,>));

            // builder.RegisterType<EventAddressService>().As<IEventAddressService>();
            // builder.RegisterType<EventPlaceService>().As<IEventPlaceService>();
            // builder.RegisterType<EventService>().As<IEventService>();
        }
        public void ContainerBuilderIsARequiredParameterForBuildMethod()
        {
            //Arrange
            ContainerBuilder builder = null;
            var config = new Configuration();

            //Act + Assert
            Expect.ArgumentNullException(() => ContainerBuilderExtensions.Build(builder, config));
        }
예제 #3
0
        /// <summary>
        /// Arranges the fixtures.
        /// </summary>
        /// <typeparam name="TImplementer">Type of implemented instance.</typeparam>
        /// <typeparam name="TService">Type of service of instance.</typeparam>
        /// <returns>Returns the <see cref="TService"/>.</returns>
        public TService ArrangeFixturesForRegisterTypeAsSingleInstance <TImplementer, TService>()
        {
            Action <ContainerBuilder> action = p => ContainerBuilderExtensions.RegisterTypeAsSingleInstance <TImplementer, TService>(p);

            var container = this.ArrangeContainer(action);
            var resolved  = container.Resolve <TService>();

            return(resolved);
        }
예제 #4
0
        /// <summary>
        /// Arranges the fixtures.
        /// </summary>
        /// <typeparam name="TImplementer">Type of implemented instance.</typeparam>
        /// <typeparam name="TService">Type of service of instance.</typeparam>
        /// <returns>Returns the <see cref="TService"/>.</returns>
        public TService ArrangeFixturesForRegisterAsSingleInstance <TImplementer, TService>()
            where TImplementer : new()
        {
            Func <IComponentContext, TImplementer> func = _ => new TImplementer();
            Action <ContainerBuilder> action            = p => ContainerBuilderExtensions.RegisterAsSingleInstance <TImplementer, TService>(p, func);

            var container = this.ArrangeContainer(action);
            var resolved  = container.Resolve <TService>();

            return(resolved);
        }
예제 #5
0
        protected override void RegisterModule(ContainerBuilderWrapper builder)
        {
            var appConfig = new AppConfig();

            UseConsulAddressSelector(builder)
            .UseConsulClientProvider(builder, appConfig);

            builder.ContainerBuilder.RegisterType <DefaultConsulProvider>().As <IConsulProvider>()
            .WithParameter(new TypedParameter(typeof(AppConfig), appConfig))
            .SingleInstance();

            builder.ContainerBuilder.RegisterType <ServiceRouteProvider>().As <IServiceRouteProvider>()
            .WithParameter(new TypedParameter(typeof(Type[]), ContainerBuilderExtensions.GetTypes()))
            .SingleInstance();
        }
예제 #6
0
        private static Type[] GetAllTypes()
        {
            if (_types == null)
            {
                lock (SyncObj)
                {
                    if (_types == null)
                    {
                        _types = ContainerBuilderExtensions.GetTypes();
                    }
                }
            }

            return(_types);
        }
        public static void Register(HttpConfiguration config)
        {
            // TODO: ?? do we need eliminating necessity using full-qualified names ??:
            // http://odata.github.io/WebApi/#06-01-custom-url-parsing
//            config.EnableCaseInsensitive(caseInsensitive: true);
//            config.EnableUnqualifiedNameCall(unqualifiedNameCall: true);

            config.Count().Filter().OrderBy().Expand().Select().MaxTop(null); //new line

            _routeName = "DefaultODataRoute";
            config.MapODataServiceRoute(_routeName, RoutePrefix,
                                        // edmModel
                                        builder => ContainerBuilderExtensions.AddService(builder, ServiceLifetime.Singleton, sp => EdmModel)
                                        .AddService <IEnumerable <IODataRoutingConvention> >(ServiceLifetime.Singleton,
                                                                                             sp => ODataRoutingConventions.CreateDefaultWithAttributeRouting(_routeName, config))
                                        .AddService <ODataUriResolver>(ServiceLifetime.Singleton, sp => new StringAsEnumResolver {
                EnableCaseInsensitive = true
            })
                                        );
            config.EnsureInitialized();
        }
예제 #8
0
        // This code configures Web API. The Startup class is specified as a type
        // parameter in the WebApp.Start method.
        public void Configuration(IAppBuilder app)
        {
            try
            {
                var httpConfig = new HttpConfiguration();

                var config = StartupHelper.Configuration;
                // var funnyQuotesConfig = new FunnyQuotesConfiguration();

                // config.GetSection("FunnyQuotes").Bind(funnyQuotesConfig);

                // -- container registration
                var builder = new ContainerBuilder();    // build up autofac container
                builder.RegisterOptions();               // allow injection of strongly typed config
                builder.RegisterOption <FunnyQuotesConfiguration>(config.GetSection("FunnyQuotes"));
                builder.RegisterDiscoveryClient(config); // register eureka service discovery
                builder.RegisterConfiguration(config);
                builder.RegisterCloudFoundryOptions(config);
                builder.RegisterMySqlConnection(config);
                builder.RegisterConsoleLogging();
                builder.Register(ctx => // register EF context
                {
                    var connString = ctx.Resolve <IDbConnection>().ConnectionString;
                    return(new FunnyQuotesCookieDbContext(connString));
                });
                builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); // register all controllers to be injectable
                builder.RegisterWebApiFilterProvider(httpConfig);                // register autofac support for webapi filters
                builder.RegisterType <LoggerExceptionFilterAttribute>()          // register global exception handler
                .AsWebApiExceptionFilterFor <ApiController>()
                .SingleInstance();
                builder.RegisterCloudFoundryActuators(config);

                var container = builder.Build(); // compile the container

                // -- configure owin server
                httpConfig.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); // default to json instead of xml
                httpConfig.Routes.MapHttpRoute(                                                                     // setup default routing for WebApi2
                    "DefaultApi",
                    "api/{controller}/{action}"
                    );
                httpConfig.Routes.MapHttpRoute("Health",
                                               "{controller}/{action}",
                                               new { controller = "health", action = "health" }); // map "/" to basic health endpoint so the default PCF health check for HTTP 200 response is satisfied
                httpConfig.DependencyResolver = new AutofacWebApiDependencyResolver(container);   // assign autofac to provide dependency injection on controllers
                var funnyQuotesConfig = container.Resolve <IOptionsMonitor <FunnyQuotesConfiguration> >().CurrentValue;

                // -- setup app pipeline
                app.UseAutofacMiddleware(container); // allows injection of dependencies into owin middleware
                if (funnyQuotesConfig.EnableSecurity)
                {
                    app.UseCloudFoundryJwtBearerAuthentication(config); // add security integration for PCF SSO
                }
                else
                {
                    app.Use <NoAuthenticationMiddleware>(); // dummy security provider which is necessary if you have secured actions on controllers
                }
                app.UseAutofacWebApi(httpConfig);           // merges owin pipeline with autofac request lifecycle
                app.UseWebApi(httpConfig);                  // standard OWIN WebAPI2
                app.UseCors(CorsOptions.AllowAll);
                container.StartDiscoveryClient();           // ensure that discovery client is started
                ContainerBuilderExtensions.StartActuators(container);
                var logger = container.Resolve <ILogger <Startup> >();

                container.MigrateDatabase();

                logger.LogInformation(">> App Started <<");
            }
            catch (Exception e)
            {
                // given that logging is DI controlled it may not be initialized, just write directly to console
                Console.Error.WriteLine(e);
                throw;
            }
        }