public void When_getting_controller_attributes_then_builds_up_instance()
        {
            using (var container = new UnityContainer())
            {
                // Arrange
                var someInstance = new SomeClass();
                container.RegisterInstance <ISomeInterface>(someInstance);
                container.RegisterType <TestFilterAttribute>(new InjectionProperty("Some"));

                var context = new ControllerContext {
                    Controller = new ControllerWithTypeAttribute()
                };
                var controllerDescriptor = new ReflectedControllerDescriptor(context.Controller.GetType());
                var action           = context.Controller.GetType().GetMethod("MyActionMethod");
                var actionDescriptor = new ReflectedActionDescriptor(action, "MyActionMethod", controllerDescriptor);
                var provider         = new UnityFilterAttributeFilterProvider(container);

                // Act
                Filter filter = provider.GetFilters(context, actionDescriptor).Single();

                // Assert
                TestFilterAttribute attrib = filter.Instance as TestFilterAttribute;
                Assert.IsNotNull(attrib);
                Assert.AreEqual(FilterScope.Controller, filter.Scope);
                Assert.AreEqual(1234, filter.Order);
                Assert.AreSame(someInstance, attrib.Some);
            }
        }
Esempio n. 2
0
        public void Configuration(IAppBuilder app)
        {
            UnityConfig.SetupUnityContainer(app);
            var unityFilterAttributeFilterProvider = new UnityFilterAttributeFilterProvider(UnityConfig.Container);

            FilterProviders.Providers.Add(unityFilterAttributeFilterProvider);
            AuthConfig.ConfigureAuth(app);
        }
Esempio n. 3
0
        public static void RegisterUnityFilterExtension(IUnityContainer container)
        {
            IFilterProvider filterProvider = FilterProviders.Providers.Single(p => p is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(filterProvider);

            var unityFilterAttributeFilterProvider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(unityFilterAttributeFilterProvider);
        }
Esempio n. 4
0
        /// <summary>
        /// Register a Unity filter attribute filter provider.
        /// </summary>
        public void Register()
        {
            // Remove standard FilterAttributeFilterProvider
            System.Web.Mvc.FilterProviders.Providers.Remove(System.Web.Mvc.FilterProviders.Providers.Single(f => f is System.Web.Mvc.FilterAttributeFilterProvider));

            var container = DependencyResolver.Current as IContainerProvider;
            var provider  = new UnityFilterAttributeFilterProvider(container);

            // Add the Unity FilterAttributeFilterProvider in its place
            System.Web.Mvc.FilterProviders.Providers.Add(provider);
        }
Esempio n. 5
0
    public static IUnityContainer Compose()
    {
        var container = new UnityContainer();

        container.AddNewExtension <RepositoryContainerExtension>();
        container.AddNewExtension <ServiceContainerExtension>();
        container.AddNewExtension <DbContextContainerExtension>();

        var provider = new UnityFilterAttributeFilterProvider(container);

        FilterProviders.Providers.Add(provider);
        return(container);
    }
Esempio n. 6
0
        private void RegisterDependencyResolver()
        {
            var container = new UnityContainer();

            container.RegisterType <IMembershipService, EFMembershipService>();
            container.RegisterType <IRepositoryPermissionService, EFRepositoryPermissionService>();
            container.RegisterType <IFormsAuthenticationService, FormsAuthenticationService>();
            container.RegisterType <ITeamRepository, EFTeamRepository>();
            container.RegisterType <IRepositoryRepository, EFRepositoryRepository>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);
            var provider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);
        }
Esempio n. 7
0
        public static void RegisterComponents()
        {
            var container = new UnityContainer();

            // register all your components with the container here
            // it is NOT necessary to register your controllers

            // e.g. container.RegisterType<ITestService, TestService>();
            container.RegisterType <IFeatureOptions, FeatureOptions>();
            container.RegisterType <IFeatureContext, FeatureContext>();

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);
            var provider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);

            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }
Esempio n. 8
0
        private static void RegisterDependencyResolver()
        {
            var container = new UnityContainer().AddExtension(new UnityDecoratorContainerExtension());

            container.RegisterType <IMembershipService, EFMembershipService>();
            container.RegisterType <IRepositoryPermissionService, EFRepositoryPermissionService>();
            container.RegisterType <IFormsAuthenticationService, FormsAuthenticationService>();
            container.RegisterType <ITeamRepository, EFTeamRepository>();
            container.RegisterType <IRepositoryRepository, EFRepositoryRepository>();

            container.RegisterType <IGitRepositoryLocator, ConfigurationBasedRepositoryLocator>(
                new InjectionFactory((ctr, type, name) => {
                return(new ConfigurationBasedRepositoryLocator(UserConfiguration.Current.Repositories));
            })
                );

            container.RegisterInstance(
                new GitServiceExecutorParams()
            {
                GitPath             = GetRootPath(ConfigurationManager.AppSettings["GitPath"]),
                GitHomePath         = GetRootPath(ConfigurationManager.AppSettings["GitHomePath"]),
                RepositoriesDirPath = UserConfiguration.Current.Repositories,
            });

            if (AppSettings.IsPushAuditEnabled)
            {
                EnablePushAuditAnalysis(container);
            }

            container.RegisterType <IGitService, GitServiceExecutor>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);

            var provider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);
        }
Esempio n. 9
0
        //public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        //{
        //    // filters.Add(new HandleErrorAttribute());
        //    filters.Add(new HandleErrorWithLog4netAttribute());
        //}

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            BundleTable.EnableOptimizations = true;

            //注册unity
            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);
            IUnityContainer container = UnityContainerFactory.Instance.CurrentContainer;
            var             provider  = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);//为Filter加入支持Unity的Provider
            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        }
Esempio n. 10
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            //start: unity support in filters
            var oldProvider = FilterProviders.Providers.Single(
                f => f is FilterAttributeFilterProvider
                );

            FilterProviders.Providers.Remove(oldProvider);
            var provider = new UnityFilterAttributeFilterProvider(UnityConfig.GetConfiguredContainer());

            FilterProviders.Providers.Add(provider);
            //end: unity support in filters

            //WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Logger.Initialize();
        }
        private static void RegisterDependencyResolver()
        {
            var container = new UnityContainer()
                            .AddExtension(new UnityDecoratorContainerExtension());

            container.RegisterType <IMembershipService, EFMembershipService>();
            container.RegisterType <IRepositoryPermissionService, EFRepositoryPermissionService>();
            container.RegisterType <IFormsAuthenticationService, FormsAuthenticationService>();
            container.RegisterType <ITeamRepository, EFTeamRepository>();
            container.RegisterType <IRepositoryRepository, EFRepositoryRepository>();

            container.RegisterType <IGitRepositoryLocator, ConfigurationBasedRepositoryLocator>(
                new InjectionFactory((ctr, type, name) => {
                return(new ConfigurationBasedRepositoryLocator(UserConfiguration.Current.Repositories));
            })
                );

            container.RegisterInstance(new GitServiceExecutorParams()
            {
                GitPath = Path.IsPathRooted(ConfigurationManager.AppSettings["GitPath"])
                    ? ConfigurationManager.AppSettings["GitPath"]
                    : HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["GitPath"]),
                RepositoriesDirPath = UserConfiguration.Current.Repositories,
            });

            var isReceivePackRecoveryProcessEnabled = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["RecoveryDataPath"]);

            if (isReceivePackRecoveryProcessEnabled)
            {
                // git service execution durability registrations to enable receive-pack hook execution after failures
                container.RegisterType <IGitService, DurableGitServiceResult>();
                container.RegisterType <IHookReceivePack, ReceivePackRecovery>();
                container.RegisterType <IRecoveryFilePathBuilder, AutoCreateMissingRecoveryDirectories>();
                container.RegisterType <IRecoveryFilePathBuilder, OneFolderRecoveryFilePathBuilder>();
                container.RegisterInstance(new NamedArguments.FailedPackWaitTimeBeforeExecution(TimeSpan.FromSeconds(5 * 60)));
                container.RegisterInstance(new NamedArguments.ReceivePackRecoveryDirectory(
                                               Path.IsPathRooted(ConfigurationManager.AppSettings["RecoveryDataPath"])
                            ? ConfigurationManager.AppSettings["RecoveryDataPath"]
                            : HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["RecoveryDataPath"])));
            }

            // base git service executor
            container.RegisterType <IGitService, ReceivePackParser>();
            container.RegisterType <IGitService, GitServiceExecutor>();
            container.RegisterType <GitServiceResultParser, GitServiceResultParser>();

            // receive pack hooks
            container.RegisterType <IHookReceivePack, AuditPusherToGitNotes>();
            container.RegisterType <IHookReceivePack, NullReceivePackHook>();



            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);
            var provider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);

            // run receive-pack recovery if possible
            if (isReceivePackRecoveryProcessEnabled)
            {
                var recoveryProcess = container.Resolve <ReceivePackRecovery>(new ParameterOverride(
                                                                                  "failedPackWaitTimeBeforeExecution",
                                                                                  new NamedArguments.FailedPackWaitTimeBeforeExecution(TimeSpan.FromSeconds(0)))); // on start up set time to wait = 0 so that recovery for all waiting packs is attempted

                try
                {
                    recoveryProcess.RecoverAll();
                }
                catch { /* don't let a failed recovery attempt stop start-up process */ }
                finally
                {
                    if (recoveryProcess != null)
                    {
                        container.Teardown(recoveryProcess);
                    }
                }
            }
        }
Esempio n. 12
0
        private static void RegisterDependencyResolver()
        {
            var container = new UnityContainer().AddExtension(new UnityDecoratorContainerExtension());

            container.RegisterType<IMembershipService, EFMembershipService>();
            container.RegisterType<IRepositoryPermissionService, EFRepositoryPermissionService>();
            container.RegisterType<IFormsAuthenticationService, FormsAuthenticationService>();
            container.RegisterType<ITeamRepository, EFTeamRepository>();
            container.RegisterType<IRepositoryRepository, EFRepositoryRepository>();

            container.RegisterType<IGitRepositoryLocator, ConfigurationBasedRepositoryLocator>(
                new InjectionFactory((ctr, type, name) => {
                    return new ConfigurationBasedRepositoryLocator(UserConfiguration.Current.Repositories);
                })
            );

            container.RegisterInstance(
                new GitServiceExecutorParams()
                {
                    GitPath = GetRootPath(ConfigurationManager.AppSettings["GitPath"]),
                    GitHomePath = GetRootPath(ConfigurationManager.AppSettings["GitHomePath"]),
                    RepositoriesDirPath = UserConfiguration.Current.Repositories,
                });

            if (AppSettings.IsPushAuditEnabled)
            {
                EnablePushAuditAnalysis(container);
            }

            container.RegisterType<IGitService, GitServiceExecutor>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);
            FilterProviders.Providers.Remove(oldProvider);

            var provider = new UnityFilterAttributeFilterProvider(container);
            FilterProviders.Providers.Add(provider);
        }
Esempio n. 13
0
        private void RegisterDependencyResolver()
        {
            var container = new UnityContainer();

            container.RegisterType<IMembershipService, EFMembershipService>();
            container.RegisterType<IRepositoryPermissionService, EFRepositoryPermissionService>();
            container.RegisterType<IFormsAuthenticationService, FormsAuthenticationService>();
            container.RegisterType<ITeamRepository, EFTeamRepository>();
            container.RegisterType<IRepositoryRepository, EFRepositoryRepository>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);
            FilterProviders.Providers.Remove(oldProvider);
            var provider = new UnityFilterAttributeFilterProvider(container);
            FilterProviders.Providers.Add(provider);
        }
Esempio n. 14
0
        private static void RegisterDependencyResolver()
        {
            var container = new UnityContainer();

            /*
             *  The UnityDecoratorContainerExtension breaks resolving named type registrations, like:
             *
             *  container.RegisterType<IMembershipService, ADMembershipService>("ActiveDirectory");
             *  container.RegisterType<IMembershipService, EFMembershipService>("Internal");
             *  IMembershipService membershipService = container.Resolve<IMembershipService>(AuthenticationSettings.MembershipService);
             *
             *  Until this issue is resolved, the following two switch hacks will have to do
             */

            switch (AuthenticationSettings.MembershipService.ToLowerInvariant())
            {
            case "activedirectory":
                container.RegisterType <IMembershipService, ADMembershipService>();
                container.RegisterType <IRoleProvider, ADRoleProvider>();
                container.RegisterType <ITeamRepository, ADTeamRepository>();
                container.RegisterType <IRepositoryRepository, ADRepositoryRepository>();
                container.RegisterType <IRepositoryPermissionService, RepositoryPermissionService>();
                break;

            case "internal":
                container.RegisterType <IMembershipService, EFMembershipService>();
                container.RegisterType <IRoleProvider, EFRoleProvider>();
                container.RegisterType <ITeamRepository, EFTeamRepository>();
                container.RegisterType <IRepositoryRepository, EFRepositoryRepository>();
                container.RegisterType <IRepositoryPermissionService, RepositoryPermissionService>();
                break;

            default:
                throw new ArgumentException("Missing declaration in web.config", "MembershipService");
            }

            switch (AuthenticationSettings.AuthenticationProvider.ToLowerInvariant())
            {
            case "windows":
                container.RegisterType <IAuthenticationProvider, WindowsAuthenticationProvider>();
                break;

            case "cookies":
                container.RegisterType <IAuthenticationProvider, CookieAuthenticationProvider>();
                break;

            case "federation":
                container.RegisterType <IAuthenticationProvider, FederationAuthenticationProvider>();
                break;

            default:
                throw new ArgumentException("Missing declaration in web.config", "AuthenticationProvider");
            }

            container.RegisterType <IGitRepositoryLocator, ConfigurationBasedRepositoryLocator>(
                new InjectionFactory((ctr, type, name) => {
                return(new ConfigurationBasedRepositoryLocator(UserConfiguration.Current.Repositories));
            })
                );

            container.RegisterInstance(
                new GitServiceExecutorParams()
            {
                GitPath             = GetRootPath(ConfigurationManager.AppSettings["GitPath"]),
                GitHomePath         = GetRootPath(ConfigurationManager.AppSettings["GitHomePath"]),
                RepositoriesDirPath = UserConfiguration.Current.Repositories,
            });

            container.RegisterType <IDatabaseResetManager, DatabaseResetManager>();

            if (AppSettings.IsPushAuditEnabled)
            {
                EnablePushAuditAnalysis(container);
            }

            container.RegisterType <IGitService, GitServiceExecutor>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);

            FilterProviders.Providers.Remove(oldProvider);

            var provider = new UnityFilterAttributeFilterProvider(container);

            FilterProviders.Providers.Add(provider);
        }
Esempio n. 15
0
        private static void RegisterDependencyResolver()
        {
            var container = new UnityContainer().AddExtension(new UnityDecoratorContainerExtension());

            /* 
                The UnityDecoratorContainerExtension breaks resolving named type registrations, like:

                container.RegisterType<IMembershipService, ADMembershipService>("ActiveDirectory");
                container.RegisterType<IMembershipService, EFMembershipService>("Internal");
                IMembershipService membershipService = container.Resolve<IMembershipService>(AuthenticationSettings.MembershipService);

                Until this issue is resolved, the following two switch hacks will have to do
            */

            switch (AuthenticationSettings.MembershipService.ToLowerInvariant())
            {
                case "activedirectory":
                    container.RegisterType<IMembershipService, ADMembershipService>();
                    container.RegisterType<IRoleProvider, ADRoleProvider>();
                    container.RegisterType<ITeamRepository, ADTeamRepository>();
                    container.RegisterType<IRepositoryRepository, ADRepositoryRepository>();
                    container.RegisterType<IRepositoryPermissionService, ADRepositoryPermissionService>();
                    break;
                case "internal":
                    container.RegisterType<IMembershipService, EFMembershipService>();
                    container.RegisterType<IRoleProvider, EFRoleProvider>();
                    container.RegisterType<ITeamRepository, EFTeamRepository>();
                    container.RegisterType<IRepositoryRepository, EFRepositoryRepository>();
                    container.RegisterType<IRepositoryPermissionService, EFRepositoryPermissionService>();
                    break;
                default:
                    throw new ArgumentException("Missing declaration in web.config", "MembershipService");
            }

            switch (AuthenticationSettings.AuthenticationProvider.ToLowerInvariant())
            {
                case "windows":
                    container.RegisterType<IAuthenticationProvider, WindowsAuthenticationProvider>();
                    break;
                case "cookies":
                    container.RegisterType<IAuthenticationProvider, CookieAuthenticationProvider>();
                    break;
                case "federation":
                    container.RegisterType<IAuthenticationProvider, FederationAuthenticationProvider>();
                    break;
                default:
                    throw new ArgumentException("Missing declaration in web.config", "AuthenticationProvider");
            }

            container.RegisterType<IGitRepositoryLocator, ConfigurationBasedRepositoryLocator>(
                new InjectionFactory((ctr, type, name) => {
                    return new ConfigurationBasedRepositoryLocator(UserConfiguration.Current.Repositories);
                })
            );
                
            container.RegisterInstance(
                new GitServiceExecutorParams()
                {
                    GitPath = GetRootPath(ConfigurationManager.AppSettings["GitPath"]),
                    GitHomePath = GetRootPath(ConfigurationManager.AppSettings["GitHomePath"]),
                    RepositoriesDirPath = UserConfiguration.Current.Repositories,
                });

            if (AppSettings.IsPushAuditEnabled)
            {
                EnablePushAuditAnalysis(container);
            }

            container.RegisterType<IGitService, GitServiceExecutor>();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);
            FilterProviders.Providers.Remove(oldProvider);
            
            var provider = new UnityFilterAttributeFilterProvider(container);
            FilterProviders.Providers.Add(provider);
        }