Ejemplo n.º 1
0
 public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
 {
     //
     var cacheProvider = new UserProvider(containerManager.Resolve<IUserProvider>());
     containerManager.AddComponentInstance(typeof(IUserProvider), cacheProvider);
     containerManager.AddComponentInstance(typeof(IProvider<User>), cacheProvider);
 }
Ejemplo n.º 2
0
 public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
 {
     //
     var searchSettingProvider = new SearchSettingProvider(containerManager.Resolve<ISearchSettingProvider>());
     containerManager.AddComponentInstance(typeof(ISearchSettingProvider), searchSettingProvider);
     containerManager.AddComponentInstance(typeof(IProvider<SearchSetting>), searchSettingProvider);
 }
Ejemplo n.º 3
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            //
            var searchSettingProvider = new SearchSettingProvider(containerManager.Resolve <ISearchSettingProvider>());

            containerManager.AddComponentInstance(typeof(ISearchSettingProvider), searchSettingProvider);
            containerManager.AddComponentInstance(typeof(IProvider <SearchSetting>), searchSettingProvider);
        }
Ejemplo n.º 4
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            //
            var cacheProvider = new UserProvider(containerManager.Resolve <IUserProvider>());

            containerManager.AddComponentInstance(typeof(IUserProvider), cacheProvider);
            containerManager.AddComponentInstance(typeof(IProvider <User>), cacheProvider);
        }
Ejemplo n.º 5
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            // Current instance providers
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(ThreadScopeCurrentInstanceProvider), "ThreadScopeCurrentInstanceProvider", ComponentLifeStyle.Singleton);
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(SiteAwareHttpCurrentInstanceProvider), "SiteAwareHttpCurrentInstanceProvider", ComponentLifeStyle.Transient);

            // Data folder factory
            containerManager.AddComponentInstance <DataFolderFactory>(DataFolderFactory.Current);

            // Instance intializers
            foreach (var type in typeFinder.FindClassesOfType <IInstanceInitializer>())
            {
                containerManager.AddComponent(typeof(IInstanceInitializer), type, type.FullName, ComponentLifeStyle.Transient);
            }

            // Repository and ICommerceDatabase
            var container = ((Kooboo.CMS.Common.Runtime.Dependency.Ninject.ContainerManager)containerManager).Container;

            container.Bind <CommerceInstance>()
            .ToMethod(ctx => CommerceInstance.Current);

            container.Bind <ICommerceDatabase>()
            .ToMethod(ctx =>
            {
                var instance = CommerceInstance.Current;
                if (instance == null)
                {
                    throw new InvalidOperationException("Cannot resolve ICommerceDatabase, because there's no commerce instance in the context.");
                }

                return(instance.Database);
            });

            container.Bind(typeof(IRepository <>)).To(typeof(CommerceRepository <>));
        }
Ejemplo n.º 6
0
 public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
 {
     containerManager.AddComponentInstance<IRepositoryProvider>(new RepositoryProvider(containerManager.Resolve<IRepositoryProvider>()));
     containerManager.AddComponent<IMediaFolderProvider, MediaFolderProvider>();
     containerManager.AddComponent<IMediaContentProvider, MediaContentProvider>();
     containerManager.AddComponent<ITextContentFileProvider, TextContentFileProvider>();
 }
Ejemplo n.º 7
0
 public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
 {
     containerManager.AddComponentInstance <IRepositoryProvider>(new RepositoryProvider(containerManager.Resolve <IRepositoryProvider>()));
     containerManager.AddComponent <IMediaFolderProvider, MediaFolderProvider>();
     containerManager.AddComponent <IMediaContentProvider, MediaContentProvider>();
     containerManager.AddComponent <ITextContentFileProvider, TextContentFileProvider>();
 }
Ejemplo n.º 8
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            // Current instance providers
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(ThreadScopeCurrentInstanceProvider), "ThreadScopeCurrentInstanceProvider", ComponentLifeStyle.Singleton);
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(SiteAwareHttpCurrentInstanceProvider), "SiteAwareHttpCurrentInstanceProvider", ComponentLifeStyle.Transient);

            // Data folder factory
            containerManager.AddComponentInstance<DataFolderFactory>(DataFolderFactory.Current);

            // Instance intializers
            foreach (var type in typeFinder.FindClassesOfType<IInstanceInitializer>())
            {
                containerManager.AddComponent(typeof(IInstanceInitializer), type, type.FullName, ComponentLifeStyle.Transient);
            }

            // Repository and ICommerceDatabase
            var container = ((Kooboo.CMS.Common.Runtime.Dependency.Ninject.ContainerManager)containerManager).Container;

            container.Bind<CommerceInstance>()
                     .ToMethod(ctx => CommerceInstance.Current);

            container.Bind<ICommerceDatabase>()
                     .ToMethod(ctx =>
                     {
                         var instance = CommerceInstance.Current;
                         if (instance == null)
                             throw new InvalidOperationException("Cannot resolve ICommerceDatabase, because there's no commerce instance in the context.");

                         return instance.Database;
                     });

            container.Bind(typeof(IRepository<>)).To(typeof(CommerceRepository<>));
        }
Ejemplo n.º 9
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            var assemblies = typeFinder.GetAssemblies()
                                       .Where(x => !IsIgnoredAssembly(x))
                                       .ToList();

            // Handler Registry
            var handlerRegistry = new DefaultEventHandlerRegistry();
            handlerRegistry.RegisterAssemblies(assemblies);
            containerManager.AddComponentInstance<IEventHandlerRegistry>(handlerRegistry);

            // Event Registry
            var eventRegistry = new DefaultEventRegistry();
            eventRegistry.RegisterAssemblies(assemblies);
            containerManager.AddComponentInstance<IEventRegistry>(eventRegistry);

            // Event Dispatcher
            var eventDispatcher = new DefaultEventDispatcher(handlerRegistry);
            containerManager.AddComponentInstance<IEventDispatcher>(eventDispatcher);
        }
Ejemplo n.º 10
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            //
            var mediaFolderProvider = new MediaFolderProvider(containerManager.Resolve<IMediaFolderProvider>());
            containerManager.AddComponentInstance(typeof(IMediaFolderProvider), mediaFolderProvider);
            containerManager.AddComponentInstance(typeof(IProvider<MediaFolder>), mediaFolderProvider);

            var repositoryProvider = new RepositoryProvider(containerManager.Resolve<IRepositoryProvider>());
            containerManager.AddComponentInstance(typeof(IRepositoryProvider), repositoryProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Repository>), repositoryProvider);

            var schemaProvider = new SchemaProvider(containerManager.Resolve<ISchemaProvider>());
            containerManager.AddComponentInstance(typeof(ISchemaProvider), schemaProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Schema>), schemaProvider);

            var textFolderProvider = new TextFolderProvider(containerManager.Resolve<ITextFolderProvider>());
            containerManager.AddComponentInstance(typeof(ITextFolderProvider), textFolderProvider);
            containerManager.AddComponentInstance(typeof(IProvider<TextFolder>), textFolderProvider);
        }
Ejemplo n.º 11
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            //
            var mediaFolderProvider = new MediaFolderProvider(containerManager.Resolve <IMediaFolderProvider>());

            containerManager.AddComponentInstance(typeof(IMediaFolderProvider), mediaFolderProvider);
            containerManager.AddComponentInstance(typeof(IProvider <MediaFolder>), mediaFolderProvider);

            var repositoryProvider = new RepositoryProvider(containerManager.Resolve <IRepositoryProvider>());

            containerManager.AddComponentInstance(typeof(IRepositoryProvider), repositoryProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Repository>), repositoryProvider);

            var schemaProvider = new SchemaProvider(containerManager.Resolve <ISchemaProvider>());

            containerManager.AddComponentInstance(typeof(ISchemaProvider), schemaProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Schema>), schemaProvider);

            var textFolderProvider = new TextFolderProvider(containerManager.Resolve <ITextFolderProvider>());

            containerManager.AddComponentInstance(typeof(ITextFolderProvider), textFolderProvider);
            containerManager.AddComponentInstance(typeof(IProvider <TextFolder>), textFolderProvider);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// register necessary type
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="containerManager"></param>
        /// <param name="broker"></param>
        /// <param name="configuration"></param>
        public virtual void Init(IEngine engine, IContainerManager containerManager, EventBroker broker, Config configuration)
        {
            // register singleton instance
            containerManager.AddComponentInstance<Config>(configuration, typeof(Config).Name);
            containerManager.AddComponentInstance<IEngine>(engine, engine.GetType().Name);
            containerManager.AddComponentInstance<EventBroker>(broker, broker.GetType().Name);
            containerManager.AddComponentInstance<ContainerConfigBase>(this, this.GetType().Name);

            // register type
            containerManager.AddComponent<ISearcher, WebsiteSearcher>(typeof(WebsiteSearcher).Name);

            // register type: should remove in future (to use configuration provider to config and register)
            // TO-DO: Check if I register this time multi times (should not)
            //containerManager.AddComponent<DatabaseSettings>(typeof(DatabaseSettings).Name); // to remove because data dll has been decoupled
            // TO-DO: Check if register it before and figure out how to set it
            containerManager.AddComponentInstance<StoreStateSettings>(
                new StoreStateSettings
                {
                    DefaultStoredThemeForDesktop = "Default",
                    DefaultStoredThemeForMobile = "Default",
                    EnableMiniProfile = true
                },
                typeof(StoreStateSettings).Name);
            containerManager.AddComponentInstance<UserSettings>(new UserSettings
                {
                    StoreLastVisitedPage = true,
                    UsingUserEmail = true
                },
                typeof(UserSettings).Name);
            // TO-DO: Check if register it before and figure out how to set it
            containerManager.AddComponentInstance<PageSettings>(new PageSettings { DefaultTitle = "HomePage" }, typeof(PageSettings).Name, Infrastructure.IoC.LifeStyle.Singleton);

            // register IRegistrar
            containerManager.UpdateContainer(build =>
            {
                var searcher = containerManager.Resolve<ISearcher>(typeof(WebsiteSearcher).Name);
                searcher.RoutingToExecute<IRegistrar>(i => i.Register(build, searcher));
            });

            // TO-DO
        }
Ejemplo n.º 13
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            var htmlBlockProvider = new HtmlBlockProvider(containerManager.Resolve<IHtmlBlockProvider>());
            containerManager.AddComponentInstance(typeof(IHtmlBlockProvider), htmlBlockProvider);
            containerManager.AddComponentInstance(typeof(IProvider<HtmlBlock>), htmlBlockProvider);

            var layoutProvider = new LayoutProvider(containerManager.Resolve<ILayoutProvider>());
            containerManager.AddComponentInstance(typeof(ILayoutProvider), layoutProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Layout>), layoutProvider);

            var pageProvider = new PageProvider(containerManager.Resolve<IPageProvider>());
            containerManager.AddComponentInstance(typeof(IPageProvider), pageProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Page>), pageProvider);

            var siteProvider = new SiteProvider(containerManager.Resolve<ISiteProvider>());
            containerManager.AddComponentInstance(typeof(ISiteProvider), siteProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Site>), siteProvider);

            var urlKeyMapProvider = new UrlKeyMapProvider(containerManager.Resolve<IUrlKeyMapProvider>());
            containerManager.AddComponentInstance(typeof(IUrlKeyMapProvider), urlKeyMapProvider);
            containerManager.AddComponentInstance(typeof(IProvider<UrlKeyMap>), urlKeyMapProvider);

            var viewProvider = new ViewProvider(containerManager.Resolve<IViewProvider>());
            containerManager.AddComponentInstance(typeof(IViewProvider), viewProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Kooboo.CMS.Sites.Models.View>), viewProvider);

            var visitRuleSettingProvider = new ABRuleSettingProvider(containerManager.Resolve<IABRuleSettingProvider>());
            containerManager.AddComponentInstance(typeof(IABRuleSettingProvider), visitRuleSettingProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Kooboo.CMS.Sites.ABTest.ABRuleSetting>), visitRuleSettingProvider);

            var siteVisitRuleProvider = new ABSiteSettingProvider(containerManager.Resolve<IABSiteSettingProvider>());
            containerManager.AddComponentInstance(typeof(IABSiteSettingProvider), siteVisitRuleProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Kooboo.CMS.Sites.ABTest.ABSiteSetting>), siteVisitRuleProvider);

            var pageVisitRuleProvider = new ABPageSettingProvider(containerManager.Resolve<IABPageSettingProvider>());
            containerManager.AddComponentInstance(typeof(IABPageSettingProvider), pageVisitRuleProvider);
            containerManager.AddComponentInstance(typeof(IProvider<Kooboo.CMS.Sites.ABTest.ABPageSetting>), pageVisitRuleProvider);
        }
Ejemplo n.º 14
0
        public void Register(IContainerManager containerManager, ITypeFinder typeFinder)
        {
            var htmlBlockProvider = new HtmlBlockProvider(containerManager.Resolve <IHtmlBlockProvider>());

            containerManager.AddComponentInstance(typeof(IHtmlBlockProvider), htmlBlockProvider);
            containerManager.AddComponentInstance(typeof(IProvider <HtmlBlock>), htmlBlockProvider);

            var layoutProvider = new LayoutProvider(containerManager.Resolve <ILayoutProvider>());

            containerManager.AddComponentInstance(typeof(ILayoutProvider), layoutProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Layout>), layoutProvider);

            var pageProvider = new PageProvider(containerManager.Resolve <IPageProvider>());

            containerManager.AddComponentInstance(typeof(IPageProvider), pageProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Page>), pageProvider);

            var siteProvider = new SiteProvider(containerManager.Resolve <ISiteProvider>());

            containerManager.AddComponentInstance(typeof(ISiteProvider), siteProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Site>), siteProvider);

            var urlKeyMapProvider = new UrlKeyMapProvider(containerManager.Resolve <IUrlKeyMapProvider>());

            containerManager.AddComponentInstance(typeof(IUrlKeyMapProvider), urlKeyMapProvider);
            containerManager.AddComponentInstance(typeof(IProvider <UrlKeyMap>), urlKeyMapProvider);

            var viewProvider = new ViewProvider(containerManager.Resolve <IViewProvider>());

            containerManager.AddComponentInstance(typeof(IViewProvider), viewProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Kooboo.CMS.Sites.Models.View>), viewProvider);


            var visitRuleSettingProvider = new ABRuleSettingProvider(containerManager.Resolve <IABRuleSettingProvider>());

            containerManager.AddComponentInstance(typeof(IABRuleSettingProvider), visitRuleSettingProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Kooboo.CMS.Sites.ABTest.ABRuleSetting>), visitRuleSettingProvider);

            var siteVisitRuleProvider = new ABSiteSettingProvider(containerManager.Resolve <IABSiteSettingProvider>());

            containerManager.AddComponentInstance(typeof(IABSiteSettingProvider), siteVisitRuleProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Kooboo.CMS.Sites.ABTest.ABSiteSetting>), siteVisitRuleProvider);

            var pageVisitRuleProvider = new ABPageSettingProvider(containerManager.Resolve <IABPageSettingProvider>());

            containerManager.AddComponentInstance(typeof(IABPageSettingProvider), pageVisitRuleProvider);
            containerManager.AddComponentInstance(typeof(IProvider <Kooboo.CMS.Sites.ABTest.ABPageSetting>), pageVisitRuleProvider);
        }
Ejemplo n.º 15
0
        public static void RegisterConfig(this IContainerManager containerManager, XElement root)
        {
            var compEles = root.Element("components").Elements("component");

            foreach (var ele in compEles)
            {
                var serviceType          = GetTypeByFullName(ele.Attribute("type").Value);
                var interfaceType        = GetTypeByFullName(ele.Attribute("service").Value);
                ComponentLifeStyle scope = ComponentLifeStyle.Transient;
                if (ele.Attribute("scope") != null)
                {
                    switch (ele.Attribute("scope").Value.ToLower())
                    {
                    case "singleton":
                        scope = ComponentLifeStyle.Singleton;
                        break;

                    case "request":
                        scope = ComponentLifeStyle.InRequestScope;
                        break;

                    case "thread":
                        scope = ComponentLifeStyle.InThreadScope;
                        break;

                    case "transiant":
                    default:
                        scope = ComponentLifeStyle.Transient;
                        break;
                    }
                }
                string name = ele.Attribute("name") == null ? null : ele.Attribute("name").Value;

                if (ele.HasElements)
                {
                    var paraEles     = ele.Element("parameters").Elements("parameter");
                    var constructors = serviceType.GetConstructors();
                    foreach (var constructor in constructors)
                    {
                        var           parameters = constructor.GetParameters();
                        List <object> pvals      = new List <object>();
                        try
                        {
                            foreach (var para in parameters)
                            {
                                var    pele = paraEles.FirstOrDefault(e => e.Attribute("name").Value.ToLower() == para.Name.ToLower());
                                object val  = null;
                                if (pele != null)
                                {
                                    val = ConvertTo(para.ParameterType, pele.Attribute("value").Value);
                                }
                                else
                                {
                                    val = containerManager.TryResolve(para.ParameterType);
                                }
                                pvals.Add(val);
                            }

                            object instance = constructor.Invoke(pvals.ToArray());
                            containerManager.AddComponentInstance(interfaceType, instance, name);
                        }
                        catch
                        {
                            continue;
                        }
                    }
                }
                else
                {
                    containerManager.AddComponent(interfaceType, serviceType, name, scope);
                }
            }

            var moduleEles = root.Element("modules").Elements("module");

            foreach (var ele in moduleEles)
            {
                var        moduleType = Type.GetType(ele.Attribute("type").Value);
                IIocModule module     = Activator.CreateInstance(moduleType) as IIocModule;
                containerManager.RegisterModule(module);
            }
        }