public virtual IUnityContainer RegisterComponents(HttpConfiguration httpConfig, IUnityContainer aContainer = null)
        {
            var container = aContainer ?? ContainerConfiguration.Create();

            container.RegisterTypes(
                AllClasses.FromAssemblies(Assembly.GetExecutingAssembly(),
                                          Assembly.GetAssembly(typeof(ContainerConfiguration)),
                                          Assembly.GetAssembly(typeof(SourceSystemConfiguration)),
                                          Assembly.GetAssembly(typeof(SimpleMappingEngineConfiguration)))
                .Where(t => t.Implements <IGlobalConfigurationTask>()),
                WithMappings.FromAllInterfaces,
                ConfiguratorName);

            container.RegisterType <IWebOperationContextWrapper, WebOperationContextWrapper>();
            container.RegisterType <IConfigurationManager, AppConfigConfigurationManager>(new ContainerControlledLifetimeManager());
            RegisterMdmServiceAssemblyNameLocators(container);
            AdditionalRegistrations(container);

            // Now get them all, and initialize them, bootstrapper takes care of ordering

            // There appears to be a bug in Unity 3.5 where ResolveAll fails to do exactly that..
//            var globalTasks = container.ResolveAll<IGlobalConfigurationTask>().ToList();
            var globalTasks   = new List <IGlobalConfigurationTask>();
            var registrations = container.Registrations.Where(reg => reg.RegisteredType == typeof(IGlobalConfigurationTask));

            registrations.ForEach(reg => globalTasks.Add(container.Resolve <IGlobalConfigurationTask>(reg.Name)));
            var tasks = globalTasks.Select(task => task as IConfigurationTask).ToList();

            LogConfigurationTasks(tasks);
            ConfigurationBootStrapper.Initialize(tasks);

            httpConfig.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);

            return(container);
        }
        protected T Execute <T>()
            where T : IStartable
        {
            if (this.ExecuteConfigTasks)
            {
                ConfigurationBootStrapper.Initialize(this.Container.ResolveAll <IGlobalConfigurationTask>());
            }

            var host = this.Container.Resolve <T>();

            host.Start();

            return(host);
        }
        protected void Application_Start(object sender, EventArgs e)
        {
            // Self-register and set up service location
            var container = ContainerConfiguration.Create();

            // Auto register all the global configuration tasks
            //container.ConfigureAutoRegistration()
            //     .Include(x => x.Implements<IGlobalConfigurationTask>(),
            //              Then.Register().As<IGlobalConfigurationTask>().WithTypeName())
            //     .ApplyAutoRegistration(new[] { GetType().Assembly, typeof(BrokerCommodityConfiguration).Assembly });

            // Register all IGlobalConfigurationTasks from this and any other appropriate assemblies
            // NB This needs fixing so we don't have to name them - needs specific IDependencyResolver
            // see http://www.chrisvandesteeg.nl/2009/04/16/making-unity-work-more-like-the-others/
            container.RegisterType <IGlobalConfigurationTask, SampleMappingContextConfiguration>("a");
            container.RegisterType <IGlobalConfigurationTask, RouteConfiguration>("b");
            container.RegisterType <IGlobalConfigurationTask, ServiceConfiguration>("c");
            container.RegisterType <IGlobalConfigurationTask, SimpleMappingEngineConfiguration>("d");
            container.RegisterType <IGlobalConfigurationTask, RepositoryConfiguration>("e");
            // container.RegisterType<IGlobalConfigurationTask, ProfilingConfiguration>("e");
            container.RegisterType <IGlobalConfigurationTask, LoggerConfiguration>("f");

            // Per-entity configurations
            container.RegisterType <IGlobalConfigurationTask, BrokerConfiguration>("broker");
            container.RegisterType <IGlobalConfigurationTask, CounterpartyConfiguration>("counterparty");
            container.RegisterType <IGlobalConfigurationTask, ExchangeConfiguration>("exchange");
            container.RegisterType <IGlobalConfigurationTask, LocationConfiguration>("location");
            container.RegisterType <IGlobalConfigurationTask, PartyConfiguration>("party");
            container.RegisterType <IGlobalConfigurationTask, PartyRoleConfiguration>("partyrole");
            container.RegisterType <IGlobalConfigurationTask, PersonConfiguration>("person");
            container.RegisterType <IGlobalConfigurationTask, SourceSystemConfiguration>("sourcesystem");
            container.RegisterType <IGlobalConfigurationTask, LegalEntityConfiguration>("legalentity");

            // Some dependencies for the tasks
            container.RegisterInstance(RouteTable.Routes);

            // Now get them all, and initialize them, bootstrapper takes care of ordering
            var globalTasks = container.ResolveAll <IGlobalConfigurationTask>();
            var tasks       = globalTasks.Select(task => task as IConfigurationTask).ToList();

            ConfigurationBootStrapper.Initialize(tasks);

            ServiceLocator = container.Resolve <IServiceLocator>();
        }
Example #4
0
        public static UnityContainer Configure()
        {
            // Self-register and set up service location
            var container = ContainerConfiguration.Create();

            // Register all IGlobalConfigurationTasks from this and any other appropriate assemblies
            // NB This needs fixing so we don't have to name them - needs specific IDependencyResolver
            // see http://www.chrisvandesteeg.nl/2009/04/16/making-unity-work-more-like-the-others/
            container.RegisterType <IGlobalConfigurationTask, ServiceConfiguration>("c");
            container.RegisterType <IGlobalConfigurationTask, MdmServiceConfiguration>("d");

            // Now get them all, and initialize them, bootstrapper takes care of ordering
            var globalTasks = container.ResolveAll <IGlobalConfigurationTask>();
            var tasks       = globalTasks.Select(task => task as IConfigurationTask).ToList();

            ConfigurationBootStrapper.Initialize(tasks);

            return(container);
        }