private void ConfigureHttpInterfaces(ConfigurationExpression x)
 {
     // Woot!!  Interfaces for HttpContext stuff!  Goodbye to nasty unmockable
     // abstract base classes.
     // http://haacked.com/archive/2007/09/09/ihttpcontext-and-other-interfaces-for-your-duck-typing-benefit.aspx
     // Update: the third party library in that post causes problems in production if multiple
     // requests during the bootstrapping process.  I made hand-rolled proxies instead, which you can get here:
     // http://github.com/jonkruger/httpinterfaces
     x.For<IHttpApplication>().Use(
         c => WebContext.Cast(HttpContext.Current.ApplicationInstance));
     x.For<IHttpApplicationState>().Use(
         c => WebContext.Cast(HttpContext.Current.Application));
     x.For<IHttpCachePolicy>().Use(
         c => WebContext.Cast(HttpContext.Current.Response.Cache));
     x.For<IHttpClientCertificate>().Use(
         c => WebContext.Cast(HttpContext.Current.Request.ClientCertificate));
     x.For<IHttpContext>().Use(
         c => WebContext.Cast(HttpContext.Current));
     x.For<IHttpFileCollection>().Use(
         c => WebContext.Cast(HttpContext.Current.Request.Files));
     x.For<IHttpModuleCollection>().Use(
         c => WebContext.Cast(HttpContext.Current.ApplicationInstance.Modules));
     x.For<IHttpRequest>().Use(
         c => WebContext.Cast(HttpContext.Current.Request));
     x.For<IHttpResponse>().Use(
         c => WebContext.Cast(HttpContext.Current.Response));
     x.For<IHttpServerUtility>().Use(
         c => WebContext.Cast(HttpContext.Current.Server));
     x.For<IHttpSession>().Use(
         c => WebContext.Cast(HttpContext.Current.Session));
     x.For<ITraceContext>().Use(
         c => WebContext.Cast(HttpContext.Current.Trace));
 }
        private static void ConfigureContainer(ConfigurationExpression container)
        {
            //Swap out the default ContentRenderer for our custom
            container.For<IContentRenderer>().Use<ErrorHandlingContentRenderer>();

            //Implementations for custom interfaces can be registered here.
        }
        public void Configure(ConfigurationExpression cfg, IFoundationConfigurator foundationConfigurator)
        {

            if (foundationConfigurator.UseQueryContainer)
            {
                cfg.AddRegistry(new QueryRegistery());
                cfg.For<IQueryRegistery>().Use<QueryRegistery>();
            }

            if (foundationConfigurator.UseBuseinssManagers)
            {
                cfg.AddRegistry(new BusinessManagerRegistery());
                cfg.For<IBusinessManagerRegistery>().Use<BusinessManagerRegistery>();
                cfg.For<IBusinessManagerInvocationLogger>(foundationConfigurator.Business.BusinessInvocationLogger, true);
            }

            if (foundationConfigurator.UseEmailing)
            {
                cfg.AddRegistry(new EmailRegistery());
                cfg.For<IEmailLogger>(foundationConfigurator.Business.EmailLogger);
            }

            if (foundationConfigurator.Web.FlashMessenger != null)
            {
                cfg.For<IFlashMessenger>(foundationConfigurator.Web.FlashMessenger);
            }

            cfg.AddRegistry(new SecurityRegistery());
        }
		protected virtual void InitializeActivityLogging(ConfigurationExpression x)
		{
			x.For<IActivityLogPathProvider>().HybridHttpOrThreadLocalScoped().Use<ActivityLogPathProvider>();
			x.For<ILogManager>().HybridHttpOrThreadLocalScoped().Use<TpLogManager>();
			x.For<Log4NetFileRepositoryMock>().Singleton().Use<Log4NetFileRepositoryMock>();
			x.Forward<Log4NetFileRepositoryMock, ILog4NetFileRepository>();
		}
예제 #5
0
파일: Program.cs 프로젝트: hammerdr/git-tfs
 public static void AddGitChangeTypes(ConfigurationExpression initializer)
 {
     initializer.For<IGitChangedFile>().Use<Add>().Named("A");
     initializer.For<IGitChangedFile>().Use<Modify>().Named("M");
     initializer.For<IGitChangedFile>().Use<Delete>().Named("D");
     initializer.For<IGitChangedFile>().Use<RenameEdit>().Named("R");
 }
예제 #6
0
 private static void SetDefaultClickatellClient(ClickatellConfigFileSettings clickatellConfigFileSettings,
     ConfigurationExpression x)
 {
     var clickatellClient = new ClickatellClient(clickatellConfigFileSettings);
     x.For<ClickatellClient>()
         .Use(new IgnoreAuthErrorClickatellClient(clickatellConfigFileSettings,
             new IgnoreNoCreditErrorClickatellClient(clickatellConfigFileSettings, clickatellClient)));
 }
 protected override void Configure(ConfigurationExpression cfg)
 {
     cfg.Scan(x =>
                  {
                      x.TheCallingAssembly();
                      x.LookForRegistries();
                  });
 }
예제 #8
0
        public static IPipelineGraph For(Action<ConfigurationExpression> action)
        {
            var expression = new ConfigurationExpression();
            action(expression);

            var graph = expression.BuildGraph();

            return BuildRoot(graph);
        }
예제 #9
0
        public static RootPipelineGraph For(Action<ConfigurationExpression> action)
        {
            var expression = new ConfigurationExpression();
            action(expression);

            PluginGraph graph = expression.BuildGraph();

            return new RootPipelineGraph(graph);
        }
예제 #10
0
        private SecurityContext(ConfigurationExpression configurationExpression)
        {
            _data = new ExpandoObject();
            _isAuthenticated = configurationExpression.IsAuthenticated;
            _roles = configurationExpression.Roles;

            var modifyer = configurationExpression.Advanced.SecurityContextModifyer;
            if (modifyer != null) modifyer.Invoke(this);
        }
예제 #11
0
 private static void SetupContainer(ConfigurationExpression x)
 {
     x.Scan(i =>
     {
         i.TheCallingAssembly();
         i.Convention<SettingsScanner>();
     });
     x.SetAllProperties(s => s.Matching(p => p.Name.EndsWith("Settings")));
 }
예제 #12
0
 public void Configure(ConfigurationExpression cfg, IFoundationConfigurator foundationConfigurator)
 {
     if (foundationConfigurator.UsePresistence)
     {
         cfg.AddRegistry(new PersistenceRegistery());
         cfg.For<IConnectionString>()
            .Use(new ConnectionString(foundationConfigurator.Persistence.ConnectionStringKeyName));
     }
 }
 private static void ConfigureContainer(ConfigurationExpression container)
 {
     //Swap out the default ContentRenderer for our custom
     //container.For<IContentRenderer>().Use<ErrorHandlingContentRenderer>();
     container.For<ContentAreaRenderer>().Use<ContentAreaWithDefaultsRenderer>();
     container.For<ICustomerAddressRepository>().Use<CustomerAddressRepository>();
     container.For<IOrderRepository>().Use<OrderRepository>();
     container.For<IExportOrderService>().Use<ExportOrderService>();
 }
 private static void RegisterComplex(ConfigurationExpression r)
 {
     r.For<IFirstService>().Singleton().Use<FirstService>();
     r.For<ISecondService>().Singleton().Use<SecondService>();
     r.For<IThirdService>().Singleton().Use<ThirdService>();
     r.For<ISubObjectOne>().Transient().Use<SubObjectOne>();
     r.For<ISubObjectTwo>().Transient().Use<SubObjectTwo>();
     r.For<ISubObjectThree>().Transient().Use<SubObjectThree>();
     r.For<IComplex>().Transient().Use<Complex>();
 }
예제 #15
0
파일: Program.cs 프로젝트: roend83/git-tfs
 private static void Initialize(ConfigurationExpression initializer)
 {
     var tfsPlugin = TfsPlugin.Find();
     initializer.Scan(x => { Initialize(x); tfsPlugin.Initialize(x); });
     initializer.For<TextWriter>().Use(() => Console.Out);
     initializer.For<IGitRepository>().Add<GitRepository>();
     AddGitChangeTypes(initializer);
     DoCustomConfiguration(initializer);
     tfsPlugin.Initialize(initializer);
 }
예제 #16
0
파일: Program.cs 프로젝트: roend83/git-tfs
 private static void DoCustomConfiguration(ConfigurationExpression initializer)
 {
     foreach(var type in typeof(Program).Assembly.GetTypes())
     {
         foreach(ConfiguresStructureMap attribute in type.GetCustomAttributes(typeof(ConfiguresStructureMap), false))
         {
             attribute.Initialize(initializer, type);
         }
     }
 }
        private static void ConfigureContainer(ConfigurationExpression container)
        {
            container.For<IFormSerializer>().Use<FormSerializer>();
            container.For<IFormFieldSerializeUtils>().Use<FormFieldSerializeUtils>();
            container.For<IFormFieldModelBuilder>().Use<FormFieldModelBuilder>();
            container.For<IXFormBuilder>().Use<XFormBuilder>();

            container.For<IFormTypeModelSynchronizer>().Use<FormTypeModelSynchronizer>();
            container.For<IFormFieldTypeSynchronizer>().Use<FormFieldTypeSynchronizer>();
        }
예제 #18
0
파일: Global.asax.cs 프로젝트: KevM/fubumvc
 private static void SetupContainer(ConfigurationExpression x)
 {
     x.For<IHttpSession>().Use<CurrentHttpContextSession>();
     x.Scan(i =>
     {
         i.TheCallingAssembly();
         i.Convention<SettingsScanner>();
     });
     x.For<ISettingsProvider>().Use<AppSettingsProvider>();
     x.SetAllProperties(s => s.Matching(p => p.Name.EndsWith("Settings")));
 }
예제 #19
0
        static void Configure(ConfigurationExpression x)
        {
            x.AddRegistry(new MyAppRegistry());

            x.For<IObjectContainer>()
                .Singleton()
                .Use(Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(), DbPath));

            x.For(typeof (IRepository<>))
                .Use(typeof (Repository<>));
        }
        private static void ConfigureContainer(ConfigurationExpression container)
        {
            container.For<IEpiServerDependenciesResolver>().Use<EpiServerDependenciesResolver>();
            container.For<IBlockHelper>().Use<BlockHelper>();
            container.For<IContextResolver>().Use<ContextResolver>();
            container.For<ILinkResolver>().Use<LinkResolver>()
                .Ctor<IEpiServerDependenciesResolver>().Is<EpiServerDependenciesResolver>();
 
            container.For<IEpiServerDependencies>()
                .Use<EpiServerDependencies>();
        }
        /// <summary>
        /// Configures WebAPI controller.
        /// </summary>
        /// <param name="ce">The configuration currently executing.</param>
        private static void ConfigureControllers(ConfigurationExpression ce)
        {
            // NOTE: controllers must be Transient (the default), NOT HttpContextScoped
            ce.ForSingletonOf<StructureMapDependencyResolver>();
            ce.Forward<StructureMapDependencyResolver, IServiceLocator>();
            ce.Forward<StructureMapDependencyResolver, System.Web.Http.Dependencies.IDependencyResolver>();

            ce.ForSingletonOf<IHttpControllerActivator>().Use<StructureMapHttpControllerActivator>();

            ce.ForSingletonOf<HttpConfiguration>().Use(GlobalConfiguration.Configuration);
            ce.For<HttpContext>().LifecycleIs<HttpContextLifecycle>().Use(() => HttpContext.Current);
        }
예제 #22
0
 public static void AddGitChangeTypes(ConfigurationExpression initializer)
 {
     // See git-diff-tree(1).
     initializer.For<IGitChangedFile>().Use<Add>().Named(GitChangeInfo.ChangeType.ADD);
     initializer.For<IGitChangedFile>().Use<Copy>().Named(GitChangeInfo.ChangeType.COPY);
     initializer.For<IGitChangedFile>().Use<Modify>().Named(GitChangeInfo.ChangeType.MODIFY);
     //initializer.For<IGitChangedFile>().Use<TypeChange>().Named(GitChangeInfo.GitChange.TYPECHANGE);
     initializer.For<IGitChangedFile>().Use<Delete>().Named(GitChangeInfo.ChangeType.DELETE);
     initializer.For<IGitChangedFile>().Use<RenameEdit>().Named(GitChangeInfo.ChangeType.RENAMEEDIT);
     //initializer.For<IGitChangedFile>().Use<Unmerged>().Named(GitChangeInfo.GitChange.UNMERGED);
     //initializer.For<IGitChangedFile>().Use<Unknown>().Named(GitChangeInfo.GitChange.UNKNOWN);
 }
예제 #23
0
파일: Program.cs 프로젝트: roend83/git-tfs
 public static void AddGitChangeTypes(ConfigurationExpression initializer)
 {
     // See git-diff-tree(1).
     initializer.For<IGitChangedFile>().Use<Add>().Named("A");
     initializer.For<IGitChangedFile>().Use<Copy>().Named("C");
     initializer.For<IGitChangedFile>().Use<Modify>().Named("M");
     //initializer.For<IGitChangedFile>().Use<TypeChange>().Named("T");
     initializer.For<IGitChangedFile>().Use<Delete>().Named("D");
     initializer.For<IGitChangedFile>().Use<RenameEdit>().Named("R");
     //initializer.For<IGitChangedFile>().Use<Unmerged>().Named("U");
     //initializer.For<IGitChangedFile>().Use<Unknown>().Named("X");
 }
예제 #24
0
파일: IoC.cs 프로젝트: gpolunin/my-pet-site
        private static void RegisterServices(ConfigurationExpression c)
        {

            c.For<DbContext>().HttpContextScoped().Use<DigitalGraveContext>();
            c.For<DigitalGraveContext>().HttpContextScoped().Use<DigitalGraveContext>();
            c.For<IdentityDbContext>().HttpContextScoped().Use<DigitalGraveContext>();

            c.For<IUserStore<IdentityUser, string>>().HttpContextScoped().Use<UserStore>();

            c.For<IRoleStore<IdentityRole, string>>().HttpContextScoped().Use<RoleStore>();

            c.For<UserManager>().HttpContextScoped().Use<UserManager>();
        }
 private static void AssertAllControllerActionsHasContainer(ConfigurationExpression configurationExpression)
 {
     Assert.That(configurationExpression.Count(), Is.EqualTo(9));
     Assert.That(configurationExpression.GetContainerFor("Blog", "Index"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Blog", "ListPosts"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Blog", "AddPost"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Blog", "EditPost"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Blog", "DeletePost"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Blog", "AjaxList"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Admin", "Index"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Admin", "LogIn"), Is.Not.Null);
     Assert.That(configurationExpression.GetContainerFor("Admin", "LogOut"), Is.Not.Null);
 }
        public SecurityConfiguration(Action<ConfigurationExpression> configurationExpression)
        {
            if (configurationExpression == null)
                throw new ArgumentNullException("configurationExpression");

            var expression = new ConfigurationExpression();
            configurationExpression(expression);
            Expression = expression;

            ExternalServiceLocator = Expression.ExternalServiceLocator;
            IgnoreMissingConfiguration = Expression.ShouldIgnoreMissingConfiguration;
            PolicyContainers = Expression;
        }
예제 #27
0
        /// <summary>
        /// Configures all injections.
        /// </summary>
        /// <param name="obj"></param>
        private static void ConfigureInjections(ConfigurationExpression configuration)
        {
            configuration.For<IRepository<UserDto>>().HttpContextScoped().Use<Repository<UserDto>>();
            configuration.For<IUserRepository>().HttpContextScoped().Use<UserRepository>(); // this is necessary if we would like to use EF for example and make sure no 2 threads will access one DbContext.

            // For demo purposes, Im using a single source throughout the whole app.
            configuration.For<IFeedSource>().Singleton().Use((() =>
                {
                    var source = new FeedSource<SimpleNewsGator>();
                    source.Subscribe(new FeedDispatcher(new FeedItemHub()));
                    source.Start();
                    return source;
                }));
        }
예제 #28
0
파일: Program.cs 프로젝트: lukesmith/lix
        private static void OnConfigure(ConfigurationExpression x)
        {
            x.Scan(cfg =>
                       {
                           cfg.TheCallingAssembly();

                           x.For(typeof(IReportingRepository<>)).Use(typeof(InMemoryRepository<>));

                           cfg.WithDefaultConventions();
                       });

            // include the LixRegistry
            x.IncludeRegistry(new LixRegistry());
        }
        /// <summary>
        /// Registers base option types with the StructureMap Container.
        ///
        /// The intent of this method is to provide registration of base option types
        /// when used outside the context of an Asp.Net Core Web application as
        /// use of StructureMap with web apps would typically use the AddOptions() extension
        /// method and rely upon StructureMap's Populate() method to register services from
        /// the ServiceCollection.
        /// </summary>
        /// <param name="configurationExpression"></param>
        /// <returns></returns>
        public static ConfigurationExpression AddOptions(this ConfigurationExpression configurationExpression)
        {
            if (configurationExpression == null)
            {
                throw new ArgumentNullException(nameof(configurationExpression));
            }

            configurationExpression.For(typeof(IOptions <>)).Use(typeof(OptionsManager <>)).Singleton();
            configurationExpression.For(typeof(IOptionsSnapshot <>)).Use(typeof(OptionsManager <>)).ContainerScoped();
            configurationExpression.For(typeof(IOptionsMonitor <>)).Use(typeof(OptionsMonitor <>)).Singleton();
            configurationExpression.For(typeof(IOptionsFactory <>)).Use(typeof(OptionsFactory <>)).Transient();
            configurationExpression.For(typeof(IOptionsMonitorCache <>)).Use(typeof(OptionsCache <>)).Singleton();

            return(configurationExpression);
        }
예제 #30
0
        private static void SetupContainer(ConfigurationExpression map)
        {
            map.Scan(x =>
                         {
                             x.TheCallingAssembly();
                             x.WithDefaultConventions();
                             x.LookForRegistries();
                             x.AddAllTypesOf<IPropertyBinder>();
                             x.ConnectImplementationsToTypesClosing(typeof (IValidator<>));

                             PackageRegistry.PackageAssemblies.Each(x.Assembly);
                         });

            map.For<IContinuationDirector>().Use<ContinuationHandler>();
        }
예제 #31
0
        private static void InjectRmqMessageBus(
            IConfigurationRoot configurationRoot,
            ConfigurationExpression expression)
        {
            expression.
            For <IMessageBus>().
            Use <RmqMessageBus>().
            Named(nameof(RmqMessageBus)).
            Ctor <string>().
            Is(() => GetRmqConnectionString(configurationRoot)).
            Ctor <IMessageBus>().
            IsNamedInstance(nameof(InMemoryMessageBus)).
            Singleton();

            expression.Forward <IMessageBus, IInitializable>();
        }
        public static void ReactiveConfig(this ConfigurationExpression config, Action <IReactiveConfigRegistry> action)
        {
            config.Scan(s =>
            {
                s.AssemblyContainingType <IConfigured>();
                s.Convention <ReactiveConfig>();
                s.WithDefaultConventions();
            });

            config.For <IConfigurationResultStore>().Singleton().Use <ConfigurationResultStore>();
            config.For <IKeyPathProvider>().Use <NamespaceKeyPathProvider>();

            var configRegsitry = new ReactiveConfigRegsitry(config);

            action(configRegsitry);
        }
예제 #33
0
    /// <summary>
    /// Adds JustSaying services to the registry.
    /// </summary>
    /// <param name="registry">The <see cref="ConfigurationExpression"/> to add JustSaying services to.</param>
    /// <param name="region">The AWS region to configure.</param>
    /// <exception cref="ArgumentNullException">
    /// <paramref name="registry"/> or <paramref name="region"/> is <see langword="null"/>.
    /// </exception>
    public static void AddJustSaying(this ConfigurationExpression registry, string region)
    {
        if (registry == null)
        {
            throw new ArgumentNullException(nameof(registry));
        }

        if (string.IsNullOrWhiteSpace(region))
        {
            throw new ArgumentException("region must not be null or empty", nameof(region));
        }

        registry.AddJustSaying(
            (builder) => builder.Messaging(
                (options) => options.WithRegion(region)));
    }
 protected override void InitializeContainer(ConfigurationExpression configuration)
 {
     configuration.For <IdentityMarkerService>();
     configuration.For <IUserValidator <User> >().Use <UserValidator <User> >();
     configuration.For <IPasswordValidator <User> >().Use <PasswordValidator <User> >();
     configuration.For <IPasswordHasher <User> >().Use <PasswordHasher <User> >();
     configuration.For <ILookupNormalizer>().Use <UpperInvariantLookupNormalizer>();
     configuration.For <IRoleValidator <Role> >().Use <RoleValidator <Role> >();
     //configuration.For<IdentityErrorDescriber>(services);
     configuration.For <ISecurityStampValidator>().Use <SecurityStampValidator <User> >();
     configuration.For <IUserClaimsPrincipalFactory <User> >().Use <UserClaimsPrincipalFactory <User, Role> >();
     configuration.For <UserManager <User> >().Use <UserManager <User> >();
     configuration.For <SignInManager <User> >().Use <SignInManager <User> >();
     configuration.For <RoleManager <Role> >().Use <RoleManager <Role> >();
     configuration.AddRegistry <MembershipRegistry>();
 }
예제 #35
0
        public static void Configure(ConfigurationExpression configuration)
        {
            configuration.For <SecurityController>().DenyAnonymousAccess();

            configuration.For <PermissionController>().DenyAnonymousAccess();

            configuration.For <PasswordController>(x => x.ForgotPasswordAsync(null)).AllowAny();
            configuration.For <PasswordController>(x => x.ResetPasswordAsync(null)).AllowAny();
            configuration.For <PasswordController>(x => x.ChangeMyPasswordAsync(null)).AddPolicy(new PermissionPolicy(Permissions.userChangePassword));
            configuration.For <PasswordController>(x => x.ChangeMyPasswordExpiredAsync(null)).AllowAny();

            configuration.For <SettingsController>(t => t.Get(false)).DenyAnonymousAccess();
            configuration.For <SettingsController>(t => t.GetLayoutSkin(false)).AllowAny();
            configuration.For <SettingsController>(t => t.Set(null)).AddPolicy(new PermissionPolicy(Permissions.manageGeneralSettings));

            configuration.For <LogController>().AllowAny();
            configuration.For <LogController>(l => l.Get(null)).AllowAny();

            configuration.For <RoleController>(t => t.List()).AddPolicy(new PermissionPolicy(Permissions.managerProfile));

            var permissionPolicyUserList = new PermissionPolicy(Permissions.manageUser);

            permissionPolicyUserList.Add(Permissions.managerProfile);
            configuration.For <UserController>(x => x.GetList(null)).AddPolicy(permissionPolicyUserList);
            configuration.For <UserController>(x => x.GetItem(0)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.GetEmail(0)).DenyAuthenticatedAccess();
            configuration.For <UserController>(x => x.GetMyAccount()).DenyAnonymousAccess();
            configuration.For <UserController>(x => x.GetMyAvatar()).DenyAnonymousAccess();
            configuration.For <UserController>(x => x.CreateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.UpdateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.manageUser));
            configuration.For <UserController>(x => x.UpdateMyAccountAsync(null)).DenyAnonymousAccess();

            configuration.For <GroupController>(x => x.List()).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.CreateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdateAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdatePermissionsAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));
            configuration.For <GroupController>(x => x.UpdateUsersAsync(null)).AddPolicy(new PermissionPolicy(Permissions.managerProfile));

            configuration.For <APIClientController>(p => p.Delete(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.Post(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.Put(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(p => p.PutSecret(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));
            configuration.For <APIClientController>(t => t.Get(null)).AddPolicy(new PermissionPolicy(Permissions.manageApiClients));

            configuration.For <FilesController>(t => t.Index(null)).AllowAny();
        }
        public static void AddDatabaseRegistration(this ConfigurationExpression config, string environment, string sqlConnectionString)
        {
            config.For <IDbConnection>().Use($"Build IDbConnection", c => {
                var azureServiceTokenProvider = new AzureServiceTokenProvider();
                return(environment.Equals("LOCAL", StringComparison.CurrentCultureIgnoreCase)
                    ? new SqlConnection(sqlConnectionString)
                    : new SqlConnection
                {
                    ConnectionString = sqlConnectionString,
                    AccessToken = azureServiceTokenProvider.GetAccessTokenAsync(AzureResource).Result
                });
            });

            var option = new DbContextOptionsBuilder <AssessorDbContext>();

            config.For <AssessorDbContext>().Use(c => new AssessorDbContext(c.GetInstance <IDbConnection>(), option.Options));
        }
        public static ConfigurationExpression ResolveDbContext(this ConfigurationExpression expression, DatabaseEngine engine)
        {
            switch (engine)
            {
            case DatabaseEngine.SqlServer:
                expression.For(typeof(DbContext)).Use(typeof(SqlServerDbContext));
                break;

            case DatabaseEngine.MySql:
                expression.For(typeof(DbContext)).Use(typeof(MySqlDbContext));
                break;

            case DatabaseEngine.PostgreSql:
                expression.For(typeof(DbContext)).Use(typeof(PostgreSqlDbContext));
                break;
            }

            return(expression);
        }
예제 #38
0
        public void Configure(ConfigurationExpression cfg, IFoundationConfigurator foundationConfigurator)
        {
            if (foundationConfigurator.UseWeb)
            {
                cfg.AddRegistry(new WebRegistery(foundationConfigurator));
                cfg.For <IResourcesLocator>().Use(foundationConfigurator.Web);

                // this.RegisterPagingAndSortingModelBinders(foundationConfigurator.Web.ViewModelsAssemblyHookType);

                ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory(ObjectFactory.Container));
                DependencyResolver.SetResolver(new StructureMapDependencyResolver(ObjectFactory.Container));

                if (foundationConfigurator.Web.PagingConfigurations != null)
                {
                    WebConfigurations.PagingConfigurations =
                        foundationConfigurator.Web.PagingConfigurations;
                }
            }
        }
예제 #39
0
        public void Configure(ConfigurationExpression cfg, IFoundationConfigurator foundationConfigurator)
        {
            if (foundationConfigurator.UseWeb)
            {
                cfg.AddRegistry(new WebRegistery(foundationConfigurator));
                cfg.For<IResourcesLocator>().Use(foundationConfigurator.Web);

                // this.RegisterPagingAndSortingModelBinders(foundationConfigurator.Web.ViewModelsAssemblyHookType);

                ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory(ObjectFactory.Container));
                DependencyResolver.SetResolver(new StructureMapDependencyResolver(ObjectFactory.Container));

                if (foundationConfigurator.Web.PagingConfigurations != null)
                {
                    WebConfigurations.PagingConfigurations =
                        foundationConfigurator.Web.PagingConfigurations;
                }
            }
        }
        public static ConfigurationExpression ConfigureDbContexts(this ConfigurationExpression expression, Tenant tenant, IConfiguration configuration)
        {
            var catalogEngine  = configuration.GetSection("MultitenancyOptions").GetValue <DatabaseEngine>("CatalogEngine");
            var deploymentMode = configuration.GetSection("MultitenancyOptions").GetValue <DeploymentModes>("DeploymentMode");

            if (deploymentMode == DeploymentModes.Multi)
            {
                if (tenant != null)
                {
                    expression.ResolveDbContext(tenant.Engine);
                }
                expression.ResolveCatalogDataSource(catalogEngine, configuration);
            }
            else if (deploymentMode == DeploymentModes.Single)
            {
                expression.ResolveDbContext(catalogEngine);
                expression.ResolveHybridDataSource(catalogEngine, configuration);
                // expression.For<ICatalogDataSource>().Use<CatalogDataSource>();
                // expression.For<ICatalogDataSource>().Use(provider => new CatalogDataSource(provider.GetInstance<DbContext>())).ContainerScoped();
            }
            else if (deploymentMode == DeploymentModes.Hybrid)
            {
                var engine = catalogEngine;

                if (tenant != null)
                {
                    if (tenant.IsIsolated)
                    {
                        engine = tenant.Engine;
                        expression.ResolveDbContext(engine);
                    }
                    else
                    {
                        expression.ResolveDbContext(engine);
                    }
                }

                expression.ResolveHybridDataSource(catalogEngine, configuration);
            }

            return(expression);
        }
예제 #41
0
        private static void ConfigureDependencies(ConfigurationExpression cfg)
        {
            cfg.AddRegistry(new PersistenceRegistery());

            cfg.AddRegistry(new WebRegistery());

            cfg.AddRegistry(new QueryRegistery());

            cfg.AddRegistry(new BusinessManagerRegistery());

            cfg.For <IQueryRegistery>().Use <QueryRegistery>();

            cfg.For <IBusinessManagerRegistery>().Use <BusinessManagerRegistery>();

            cfg.For <IBusinessManagerInvocationLogger>().Singleton().Use <SqlProcBusinessManagerInvocationLogger>();

            cfg.For <ITypeHolder>().Use <TypeHolder>();

            cfg.For <IConnectionString>().Use(new ConnectionString("KafalaDB"));
        }
예제 #42
0
        private void ConfigureContainer(
            IConfigurationRoot configurationRoot,
            string dataDirectory,
            ConfigurationExpression expression)
        {
            UseTelegramApiSettings(configurationRoot, expression);

            expression.For <IRunable>().Use <UpdatesPuller>().Singleton();
            expression.For <IHttpClient>().Use <HttpClient>().Singleton();
            expression.For <ITelegramClient>().Use <TelegramHttpClient>().Singleton();

            InjectUpdatePositionRepository(dataDirectory, expression);

            InjectMessageBusses(configurationRoot, expression);

            foreach (var commandHandler in GetCommandHandlers())
            {
                expression.For(commandHandler);
            }
        }
예제 #43
0
        /// <summary>
        /// Carries out default configuration of the IoC container. Override if you don't want to do this
        /// </summary>
        protected virtual void DefaultConfigureIoC(ConfigurationExpression config)
        {
            var viewManagerConfig = new ViewManagerConfig()
            {
                ViewFactory    = this.GetInstance,
                ViewAssemblies = new List <Assembly>()
                {
                    this.GetType().Assembly
                }
            };

            config.For <IViewManager>().Add(new ViewManager(viewManagerConfig));

            // Trick it into not taking ownership of (and disposing) the instance
            config.For <IWindowManagerConfig>().Add(c => this).LifecycleIs <UniquePerRequestLifecycle>();
            config.For <IWindowManager>().Add <WindowManager>().LifecycleIs <SingletonLifecycle>();
            config.For <IEventAggregator>().Add <EventAggregator>().LifecycleIs <SingletonLifecycle>();
            config.For <IMessageBoxViewModel>().Add <MessageBoxViewModel>().LifecycleIs <UniquePerRequestLifecycle>();
            config.Scan(x => x.Assembly(this.GetType().Assembly));
        }
예제 #44
0
        public ConfigurationExpressionBusConfigurator(ConfigurationExpression expression)
            : base(new StructureMapContainerRegistrar(expression))
        {
            _expression = expression;

            expression.For <IBusDepot>()
            .Use <BusDepot>()
            .Singleton();

            _expression.For <ISendEndpointProvider>()
            .Use(context => GetCurrentSendEndpointProvider(context))
            .ContainerScoped();

            _expression.For <IPublishEndpoint>()
            .Use(context => GetCurrentPublishEndpoint(context))
            .ContainerScoped();

            _expression.For <IClientFactory>()
            .Use(context => ClientFactoryProvider(context.GetInstance <IConfigurationServiceProvider>(), context.GetInstance <IBus>()))
            .Singleton();

            _expression.For <BusHealth>()
            .Use(context => new BusHealth(nameof(IBus)))
            .Singleton();

            _expression.For <IBusHealth>()
            .Use <BusHealth>()
            .Singleton();

            expression.For <IConsumerScopeProvider>()
            .Use(context => CreateConsumerScopeProvider(context))
            .Singleton();

            expression.For <IConfigurationServiceProvider>()
            .Use(context => new StructureMapConfigurationServiceProvider(context.GetInstance <IContainer>()))
            .Singleton();

            expression.For <IBusRegistrationContext>()
            .Use(context => CreateRegistrationContext(context))
            .Singleton();
        }
        private static void ConfigureContainer(ConfigurationExpression container)
        {
            container.For <IContentRepositoryFactory>().Use <ContentRepositoryFactory>();
            container.For <ILinkResolverFactory>().Use <LinkResolverFactory>();
            container.For <IContextResolverFactory>().Use <ContextResolverFactory>();

            container.For <IBlockHelper>().Use <BlockHelper>();

            container.For <ILinkResolver>().Use(ctx => new LinkResolver(
                                                    new UrlResolverFactory(),
                                                    new ContentRepositoryFactory()));

            container.For <IContextResolver>().Use(ctx => new ContextResolver());

            container.For <IEpiServerDependencies>()
            .Use(ctx => new EpiServerDependencies(
                     new ContentRepositoryFactory(),
                     new LinkResolverFactory(),
                     new ContextResolverFactory()
                     ));
        }
예제 #46
0
        private void ConfigureRest(ConfigurationExpression config, ApiGatewaySettings settings)
        {
            var httpConfig = config.ForConcreteType <HttpServiceOptions>().Configure
                             .Ctor <string>().Is(settings.Http.BaseUrl)
                             .Setter(m => m.PermissionedApplications).Is(settings.PermissionedApplications)
                             .Setter(m => m.DependencyResolver).IsTheDefault()
                             .Setter(m => m.DisableAuthorization).Is(settings.DisableAuthorization)
                             .Setter(m => m.DefaultTokenExpiry).Is(settings.Http.DefaultTokenExpiry)
                             .Setter(m => m.AllowTokenAsUrlParameter).Is(settings.Http.AllowTokenAsUrlParameter);

            config.For <IService>().Add <HttpService>()
            .Named(nameof(HttpService))
            .Ctor <HttpServiceOptions>().Is(httpConfig);

            config
            .ForConcreteType <ApiGatewayService>().Configure
            .Ctor <IService>("httpService").Is(ctx => ctx.GetInstance <IService>(nameof(HttpService)));

            //controllers
            config.ForConcreteType <Http.Controller.TestController>();
        }
        public static ConfigurationExpression ConfigureCatalogDbContexts(this ConfigurationExpression expression, IConfiguration configuration)
        {
            var catalogEngine  = configuration.GetSection("MultitenancyOptions").GetValue <DatabaseEngine>("CatalogEngine");
            var deploymentMode = configuration.GetSection("MultitenancyOptions").GetValue <DeploymentModes>("DeploymentMode");

            if (deploymentMode == DeploymentModes.Multi)
            {
                expression.ResolveCatalogDataSource(catalogEngine, configuration);
            }
            else if (deploymentMode == DeploymentModes.Single)
            {
                expression.ResolveDbContext(catalogEngine);
                expression.For <ICatalogDataSource>().Use <CatalogDataSource>();
            }
            else if (deploymentMode == DeploymentModes.Hybrid)
            {
                expression.ResolveHybridDataSource(catalogEngine, configuration);
            }

            return(expression);
        }
예제 #48
0
        private static void ConfigureDataAccess(ConfigurationExpression i, IPersistenceConfigurer databaseConfigurer)
        {
            ValidatorEngine validatorEngine;

            //Configura o IoC para session factory do nhibernate ser singleton por toda a aplicação
            i.For <ISessionFactory>()
            .Singleton()
            .Use(ConfigureNHibernate(databaseConfigurer, out validatorEngine));

            //Configura o IoC para criar uma nova sessão a cada requisição
            i.For <ISession>()
            .LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.PerRequest))
            .Use(() =>
                 ObjectFactory.GetInstance <ISessionFactory>
                     ().OpenSession());

            //Configura o validador de entidades do nhibernate
            i.For <ValidatorEngine>()
            .Singleton()
            .Use(validatorEngine);
        }
예제 #49
0
 protected override void InitializeContainer(ConfigurationExpression configuration)
 {
     configuration.For <IdentityMarkerService>();
     configuration.For <IUserValidator <User> >().Use <UserValidator <User> >();
     configuration.For <IPasswordValidator <User> >().Use <PasswordValidator <User> >();
     configuration.For <IPasswordHasher <User> >().Use <PasswordHasher <User> >();
     configuration.For <ILookupNormalizer>().Use <UpperInvariantLookupNormalizer>();
     configuration.For <IRoleValidator <Role> >().Use <RoleValidator <Role> >();
     //configuration.For<IdentityErrorDescriber>(services);
     configuration.For <ISecurityStampValidator>().Use <SecurityStampValidator <User> >();
     configuration.For <IUserClaimsPrincipalFactory <User> >().Use <UserClaimsPrincipalFactory <User, Role> >();
     configuration.For <UserManager <User> >().Use <UserManager <User> >();
     configuration.For <SignInManager <User> >().Use <SignInManager <User> >();
     configuration.For <RoleManager <Role> >().Use <RoleManager <Role> >();
     configuration.For <IOptions <IdentityOptions> >().Use <OptionsProvider>();
     configuration.For <IOptions <PasswordHasherOptions> >().Use <OptionsProvider>();
     configuration.For <IServiceProvider>().Use(context => new ServiceProviderWrapper(context));
     configuration.For <IHttpContextAccessor>().Use <DummyHttpContextAccessor>();
     configuration.For(typeof(ILogger <>)).Use(typeof(DummyLogger <>));
     configuration.AddRegistry <MembershipRegistry>();
 }
예제 #50
0
        public ConfigurationExpressionMediatorConfigurator(ConfigurationExpression expression)
            : base(new StructureMapContainerMediatorRegistrar(expression))
        {
            _expression = expression;

            _expression.For <IMediator>()
            .Use(context => MediatorFactory(context))
            .Singleton();

            expression.For <IConsumerScopeProvider>()
            .Use(context => CreateConsumerScopeProvider(context))
            .Singleton();

            expression.For <IConfigurationServiceProvider>()
            .Use(context => new StructureMapConfigurationServiceProvider(context.GetInstance <IContainer>()))
            .Singleton();

            expression.For <IMediatorRegistrationContext>()
            .Use(context => CreateRegistrationContext(context))
            .Singleton();
        }
        private static void AssertAllControllerActionsHasContainer(ConfigurationExpression configurationExpression)
        {
            Assert.That(configurationExpression.Count(), Is.EqualTo(12));
            var blog    = NameHelper.Controller <BlogController>();
            var admin   = NameHelper.Controller <AdminController>();
            var root    = NameHelper.Controller <TestData.AssemblyScannerControllers.RootController>();
            var include = NameHelper.Controller <TestData.AssemblyScannerControllers.Include.IncludedController>();
            var exclude = NameHelper.Controller <TestData.AssemblyScannerControllers.Exclude.ExcludedController>();

            Assert.That(configurationExpression.GetContainerFor(blog, "Index"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(blog, "ListPosts"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(blog, "AddPost"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(blog, "EditPost"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(blog, "DeletePost"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(blog, "AjaxList"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(admin, "Index"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(admin, "LogIn"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(admin, "LogOut"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(root, "Index"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(include, "Index"), Is.Not.Null);
            Assert.That(configurationExpression.GetContainerFor(exclude, "Index"), Is.Not.Null);
        }
예제 #52
0
        private void InjectMessageBusses(IConfigurationRoot configurationRoot, ConfigurationExpression expression)
        {
            // ВАЖНО! Не использовать DecorateAllWith для IMessageBus.
            // По непонятной причине тест зависает после исполнения TearDown,
            // когда больше одного декоратора!
            expression.
            For <IMessageBus>().
            Use <InMemoryMessageBus>().
            Named(nameof(InMemoryMessageBus)).
            Ctor <IEnumerable>().
            Is(ctx => GetCommandHandlers().Select(ctx.GetInstance)).
            Singleton();

            expression.
            For <IMessageBus>().
            Use <MessageBusLogger>().
            Ctor <IMessageBus>().
            IsNamedInstance(nameof(RmqMessageBus)).
            Singleton();

            InjectRmqMessageBus(configurationRoot, expression);
        }
        public static ConfigurationExpression AddMultitenancy(
            this ConfigurationExpression expression,
            IServiceCollection services, IContainer container,
            IConfiguration configuration)
        {
            //expression.AddMultitenancy<Tenant, CachedDomainTenantResolver>();
            expression.ConfigureCatalogDbContexts(configuration);
            expression.ConfigureTenants <Tenant>(container, (tenant, cfg) =>
            {
                cfg.ConfigureDbContexts(tenant, configuration);

                if (tenant != null)
                {
                    cfg.For <IActiveDbContext>().Use <TenantActiveDbContext>();
                }
                else
                {
                    cfg.For <IActiveDbContext>().Use <CatalogActiveDbContext>();
                }
            });
            return(expression);
        }
        private static void RegisterPropertyInjection(ConfigurationExpression r)
        {
            r.For <IServiceA>().Singleton().Use <ServiceA>();
            r.For <IServiceB>().Singleton().Use <ServiceB>();
            r.For <IServiceC>().Singleton().Use <ServiceC>();

            r.For <ISubObjectA>().Transient().Use <SubObjectA>()
            .Setter(x => x.ServiceA).IsTheDefault();

            r.For <ISubObjectB>().Transient().Use <SubObjectB>()
            .Setter(x => x.ServiceB).IsTheDefault();

            r.For <ISubObjectC>().Transient().Use <SubObjectC>()
            .Setter(x => x.ServiceC).IsTheDefault();

            r.For <IComplexPropertyObject1>().Transient().Use <ComplexPropertyObject1>()
            .Setter(x => x.ServiceA).IsTheDefault()
            .Setter(x => x.ServiceB).IsTheDefault()
            .Setter(x => x.ServiceC).IsTheDefault()
            .Setter(x => x.SubObjectA).IsTheDefault()
            .Setter(x => x.SubObjectB).IsTheDefault()
            .Setter(x => x.SubObjectC).IsTheDefault();

            r.For <IComplexPropertyObject2>().Transient().Use <ComplexPropertyObject2>()
            .Setter(x => x.ServiceA).IsTheDefault()
            .Setter(x => x.ServiceB).IsTheDefault()
            .Setter(x => x.ServiceC).IsTheDefault()
            .Setter(x => x.SubObjectA).IsTheDefault()
            .Setter(x => x.SubObjectB).IsTheDefault()
            .Setter(x => x.SubObjectC).IsTheDefault();

            r.For <IComplexPropertyObject3>().Transient().Use <ComplexPropertyObject3>()
            .Setter(x => x.ServiceA).IsTheDefault()
            .Setter(x => x.ServiceB).IsTheDefault()
            .Setter(x => x.ServiceC).IsTheDefault()
            .Setter(x => x.SubObjectA).IsTheDefault()
            .Setter(x => x.SubObjectB).IsTheDefault()
            .Setter(x => x.SubObjectC).IsTheDefault();
        }
예제 #55
0
        public static void ConfigureDependencies(ConfigurationExpression cfg)
        {
            cfg.AddRegistry(new PersistenceRegistery());

            cfg.AddRegistry(new QueryRegistery());

            cfg.AddRegistry(new BusinessManagerRegistery());

            cfg.For <IQueryRegistery>().Use <QueryRegistery>();

            cfg.For <IBusinessManagerRegistery>().Use <BusinessManagerRegistery>();

            cfg.For <IBusinessManagerInvocationLogger>().Singleton().Use <SqlProcBusinessManagerInvocationLogger>();

            cfg.For <IConnectionString>().Use(new ConnectionString("KafalaDBTest"));

            cfg.For <IEmailMessageSender>().Use <SwllowEmailService>();

            cfg.For <IAuthenticationService>().Use <AuthenticationService>();

            cfg.For <IPasswordHelper>().Use <PasswordHelper>();
        }
        public static void Configure(ConfigurationExpression configuration)
        {
            //OBSERVAÇÃO: O fato de uma nova controller herdar de BaseController
            //não indica que os usuários autenticados terão acessos aos métodos.
            //O Deny na BaseController serve apenas para negar o acesso a usuários
            //não auenticados, ou seja, ainda se faz necessário configurar o tipo
            //de acesso a sua controller. Caso a sua controller tenha acesso a qualquer
            //usuário autenticado basta configurar como configuration.For<MyController>().DenyAnonymousAccess()
            configuration.For <BaseController>().DenyAnonymousAccess();

            configuration.For <CheckupController>().AllowAny();
            configuration.For <NotificationController>().DenyAnonymousAccess();
            //configuration.For<UserController>(t => t.PostUserImage(null, 0)).AllowAny();

            configuration.For <CountryController>(p => p.Delete(0)).AddPolicy(new PermissionPolicy(Permissions.manageCountry));
            configuration.For <CountryController>(p => p.Post(null)).AddPolicy(new PermissionPolicy(Permissions.manageCountry));
            configuration.For <CountryController>(p => p.Put(null)).AddPolicy(new PermissionPolicy(Permissions.manageCountry));
            configuration.For <CountryController>(p => p.Get(0, false, false)).DenyAnonymousAccess();

            configuration.For <ClientController>().AllowAny();

            configuration.For <EventController>().AllowAny();
            configuration.For <EventController>(e => e.Get(null)).DenyAnonymousAccess();
        }
        public static ConfigurationExpression ResolveCatalogDataSource(this ConfigurationExpression expression, DatabaseEngine engine, IConfiguration configuration)
        {
            switch (engine)
            {
            case DatabaseEngine.SqlServer:
                expression.For <ICatalogDataSource>().Use(new CatalogDataSource(
                                                              new SqlServerCatalogDbContext(configuration, new DbContextOptions <SqlServerCatalogDbContext>())));
                break;

            case DatabaseEngine.MySql:
                expression.For <ICatalogDataSource>()
                .Use(new CatalogDataSource(
                         new MySqlCatalogDbContext(configuration, new DbContextOptions <MySqlCatalogDbContext>())));
                break;

            case DatabaseEngine.PostgreSql:
                expression.For <ICatalogDataSource>()
                .Use(new CatalogDataSource(
                         new PostgreSqlCatalogDbContext(configuration, new DbContextOptions <PostgreSqlCatalogDbContext>())));
                break;
            }

            return(expression);
        }
예제 #58
0
        public ConfigurationExpressionRegistrationConfigurator(ConfigurationExpression expression)
            : base(new StructureMapContainerRegistrar(expression))
        {
            _expression = expression;

            expression.For <IConsumerScopeProvider>()
            .Use(context => CreateConsumerScopeProvider(context))
            .Singleton();

            expression.For <ISagaRepositoryFactory>()
            .Use(context => CreateSagaRepositoryFactory(context))
            .Singleton();

            expression.For <IConfigurationServiceProvider>()
            .Use(context => new StructureMapConfigurationServiceProvider(context.GetInstance <IContainer>()))
            .Singleton();

            expression.For <IRegistrationConfigurator>()
            .Use(this);

            expression.For <IRegistration>()
            .Use(provider => CreateRegistration(provider.GetInstance <IConfigurationServiceProvider>()))
            .Singleton();
        }
예제 #59
0
        private static void AssertAllControllerActionsHasContainer(ConfigurationExpression configurationExpression)
        {
            var policyContainers = configurationExpression.Runtime.PolicyContainers;

            Assert.That(policyContainers.Count(), Is.EqualTo(21));
            var blog    = NameHelper.Controller <BlogController>();
            var admin   = NameHelper.Controller <AdminController>();
            var root    = NameHelper.Controller <RootController>();
            var include = NameHelper.Controller <IncludedController>();
            var exclude = NameHelper.Controller <ExcludedController>();

            Assert.That(policyContainers.GetContainerFor(blog, "Index"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(blog, "ListPosts"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(blog, "AddPost"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(blog, "EditPost"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(blog, "DeletePost"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(blog, "AjaxList"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(admin, "Index"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(admin, "LogIn"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(admin, "LogOut"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(root, "Index"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(include, "Index"), Is.Not.Null);
            Assert.That(policyContainers.GetContainerFor(exclude, "Index"), Is.Not.Null);
        }
예제 #60
0
        public static void Register(ConfigurationExpression registry)
        {
            registry.Scan(x =>
            {
                x.Assembly(ASSEMBLY);
                x.WithDefaultConventions();
            });

            var nhConfig = Fluently.Configure()
                           .Mappings(map => map.FluentMappings
                                     .AddFromAssembly(Assembly.Load(ASSEMBLY)))
                           .BuildConfiguration();

            var cfg = new Configuration();

            cfg.Configure();
            cfg.AddAssembly(Assembly.Load(ASSEMBLY));
            new SchemaExport(cfg).Execute(true, true, false);

            registry.For <Configuration>().Use(nhConfig).Singleton();
            registry.For <ISessionFactory>().Use(nhConfig.BuildSessionFactory()).Singleton();
            registry.For <ISession>().Use(ctx => ctx.GetInstance <ISessionFactory>().OpenSession());
            registry.For <IStatelessSession>().Use(ctx => ctx.GetInstance <ISessionFactory>().OpenStatelessSession());
        }