public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<ICallContextFactory, DexterCallContextFactory>(LifeCycle.Singleton);
     container.Register<IAsyncCallContext, AsyncCallContext>(LifeCycle.Singleton);
     container.Register<IWebCallContext, WebCallContext>(LifeCycle.Singleton);
     container.Register<ITaskExecutor, TaskExecutor.TaskExecutor>(LifeCycle.Singleton);
 }
 /// <summary>
 /// 	Installs all the component needed by the assembly.
 /// </summary>
 /// <param name="container"> The container. </param>
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IHttpModule, PerWebRequestLifestyleModule>(LifeCycle.Singleton);
     container.Register<IDependencyResolver, DexterDependencyResolver>(LifeCycle.Singleton);
     container.Register<System.Web.Http.Dependencies.IDependencyResolver, Web.WebApi.DexterDependencyResolver>(LifeCycle.Singleton);
     container.Register<IHttpControllerActivator, Web.WebApi.DexterHttpControllerActivator>(LifeCycle.Singleton);
 }
        public void ServiceRegistration(IDexterContainer container)
        {
            container.Register<IJobFactory, DexterJobFactory>(LifeCycle.Singleton);

            StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
            IScheduler scheduler = stdSchedulerFactory.GetScheduler();
            scheduler.JobFactory = container.Resolve<IJobFactory>();

            container.Register(typeof(ISchedulerFactory), stdSchedulerFactory, LifeCycle.Singleton);

            container.Register(typeof(IScheduler), scheduler, LifeCycle.Singleton);
        }
示例#4
0
        public void ServiceRegistration(IDexterContainer container)
        {
            container.Register <IJobFactory, DexterJobFactory>(LifeCycle.Singleton);

            StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
            IScheduler          scheduler           = stdSchedulerFactory.GetScheduler();

            scheduler.JobFactory = container.Resolve <IJobFactory>();

            container.Register(typeof(ISchedulerFactory), stdSchedulerFactory, LifeCycle.Singleton);

            container.Register(typeof(IScheduler), scheduler, LifeCycle.Singleton);
        }
        public void ServiceRegistration(IDexterContainer container)
        {
            container.Register<IPostDataService, PostDataService>(LifeCycle.Singleton);
            container.Register<IPageDataService, PageDataService>(LifeCycle.Singleton);
            container.Register<ICommentDataService, CommentDataService>(LifeCycle.Singleton);
            container.Register<IConfigurationDataService, ConfigurationDataService>(LifeCycle.Singleton);
            container.Register<ICategoryDataService, CategoryDataService>(LifeCycle.Singleton);
            container.Register<IDexterCall, DexterCall>(LifeCycle.Singleton);
            container.Register<ISessionFactory, SessionFactory>(LifeCycle.Singleton);
            container.Register<IPluginDataService, PluginDataService>(LifeCycle.Singleton);
            container.Register<IRepositoryFactory, RepositoryFactory>(LifeCycle.Singleton);
            this.InitializeDocumentStore();

            container.Register(typeof(IDocumentStore), store, LifeCycle.Singleton);
        }
示例#6
0
        public void ServiceRegistration(IDexterContainer container)
        {
            container.Register <IPostDataService, PostDataService>(LifeCycle.Singleton);
            container.Register <IPageDataService, PageDataService>(LifeCycle.Singleton);
            container.Register <ICommentDataService, CommentDataService>(LifeCycle.Singleton);
            container.Register <IConfigurationDataService, ConfigurationDataService>(LifeCycle.Singleton);
            container.Register <ICategoryDataService, CategoryDataService>(LifeCycle.Singleton);
            container.Register <IDexterCall, DexterCall>(LifeCycle.Singleton);
            container.Register <ISessionFactory, SessionFactory>(LifeCycle.Singleton);
            container.Register <IPluginDataService, PluginDataService>(LifeCycle.Singleton);
            container.Register <IRepositoryFactory, RepositoryFactory>(LifeCycle.Singleton);
            this.InitializeDocumentStore();

            container.Register(typeof(IDocumentStore), store, LifeCycle.Singleton);
        }
示例#7
0
        /// <summary>
        ///     Starts up.
        /// </summary>
        public static void StartUp()
        {
            if (started)
            {
                return;
            }

            ReadOnlyCollection <Assembly> alpAssemblies = new ReadOnlyCollection <Assembly>(BuildManager.GetReferencedAssemblies().Cast <Assembly>().Where(x => x.FullName.StartsWith("Dexter")).ToList());

            Type containerType = null;

            foreach (Assembly a in alpAssemblies)
            {
                foreach (Type t in a.GetTypes())
                {
                    if (!t.IsInterface && !t.IsAbstract && typeof(IDexterContainerFactory).IsAssignableFrom(t))
                    {
                        containerType = t;
                    }
                }
            }

            if (containerType == null)
            {
                throw new ArgumentException("Unable to find the DI Implementation.");
            }

            IDexterContainerFactory factory = Activator.CreateInstance(containerType) as IDexterContainerFactory;

            if (factory == null)
            {
                throw new ConfigurationErrorsException(string.Format("The type {0} does not implement the IDexterContainerFactory interface.", containerType.FullName));
            }

            Engine = factory.Create();
            Engine.Register(typeof(IDexterContainer), Engine, LifeCycle.Singleton);

            alpAssemblies.ForEach(x => Engine.Register <ILayerInstaller>(x, LifeCycle.Singleton));

            ILayerInstaller[] coreInstaller = Engine.ResolveAll <ILayerInstaller>();

            coreInstaller.ForEach(x => x.ServiceRegistration(Engine));
            coreInstaller.ForEach(x => x.ServiceRegistrationComplete(Engine));
            coreInstaller.ForEach(x => x.ApplicationStarted(Engine));

            started = true;
        }
        public void EnablePlugin(string pluginId, Version version)
        {
            PluginDto plugin = this.pluginDataService.GetPlugin(pluginId, version);

            if (plugin == null)
            {
                throw new DexterException("Unable to find the specified plugin");
            }

            string pluginPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\Extensions\Plugins", plugin.Title, @"\Assemblies");

            if (!Directory.Exists(pluginPath))
            {
                throw new DirectoryNotFoundException(string.Format("Unable to find the specified path '{0}'.", pluginPath));
            }

            string[] files = Directory.GetFiles(pluginPath, "*.dll", SearchOption.TopDirectoryOnly);

            if (files.Length < 1)
            {
                this.logger.WarnFormat("Unable to find the assemblies for the plugin '{0}'", plugin.Title);
                return;
            }

            foreach (var file in files)
            {
                var pluginAssemblies = Assembly.LoadFrom(file);

                Type pluginType = pluginAssemblies.GetTypes().FirstOrDefault(t => !t.IsInterface && !t.IsAbstract && typeof(IPlugin).IsAssignableFrom(t));

                if (pluginType == null)
                {
                    logger.DebugFormat("The is not an IPlugin for the assemly '{0}' for the plugin '{1}'.", Path.GetFileName(file), plugin.Title);
                    continue;
                }

                container.Register(pluginType, pluginType, LifeCycle.Singleton);
                var pluginInstance = (IPlugin)DexterContainer.Resolve(pluginType);

                if (!plugin.IsInstalled)
                {
                    logger.DebugFormat("Calling Setup method for '{0}' for the plugin '{1}'.", pluginType, plugin.Title);
                    pluginInstance.Setup();
                    plugin.IsInstalled = true;
                }

                logger.DebugFormat("Calling Initialize method for '{0}' for the plugin '{1}'.", pluginType, plugin.Title);
                pluginInstance.Initialize();
                plugin.Enabled = true;
            }

            this.pluginDataService.UpdatePlugin(plugin);
        }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IPostService, PostService>(LifeCycle.Singleton);
     container.Register<IPageService, PageService>(LifeCycle.Singleton);
     container.Register<IConfigurationService, ConfigurationService>(LifeCycle.Singleton);
     container.Register<ICommentService, CommentService>(LifeCycle.Singleton);
     container.Register<ISetupService, SetupService>(LifeCycle.Singleton);
     container.Register<ICategoryService, CategoryService>(LifeCycle.Singleton);
     container.Register<IPluginService, PluginService>(LifeCycle.Singleton);
 }
示例#10
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <IPostService, PostService>(LifeCycle.Singleton);
     container.Register <IPageService, PageService>(LifeCycle.Singleton);
     container.Register <IConfigurationService, ConfigurationService>(LifeCycle.Singleton);
     container.Register <ICommentService, CommentService>(LifeCycle.Singleton);
     container.Register <ISetupService, SetupService>(LifeCycle.Singleton);
     container.Register <ICategoryService, CategoryService>(LifeCycle.Singleton);
     container.Register <IPluginService, PluginService>(LifeCycle.Singleton);
 }
        private static void Register <T>(IDexterContainer container, IJobDetail job, ITrigger trigger, bool enabled)
        {
            IScheduler scheduler = container.Resolve <IScheduler>();

            if (scheduler.CheckExists(job.Key) == false)
            {
                scheduler.ScheduleJob(job, trigger);
            }
            else
            {
                if (!enabled)
                {
                    IList <ITrigger> dbTrigger = scheduler.GetTriggersOfJob(job.Key);
                    scheduler.UnscheduleJobs(dbTrigger.Select(x => x.Key).ToList());
                }
                else
                {
                    scheduler.RescheduleJob(trigger.Key, trigger);
                }
            }

            container.Register(typeof(T), typeof(T), LifeCycle.Transient);
        }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<FilterAttribute, ExceptionHandlingAttribute>(LifeCycle.Singleton);
 }
示例#13
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IUserContext, UserContext.UserContext>(LifeCycle.Singleton);
 }
示例#14
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <IUserContext, UserContext.UserContext>(LifeCycle.Singleton);
 }
示例#15
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<ILocalizationProvider, LocalizationProvider>(LifeCycle.Singleton);
 }
示例#16
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IUrlBuilder, UrlBuilder>(LifeCycle.Singleton);
     container.Register<IAdminUrlBuilder, AdminUrlBuilder>(LifeCycle.Singleton);
     container.Register<IPostUrlBuilder, PostUrlBuilder>(LifeCycle.Singleton);
     container.Register<IPageUrlBuilder, PageUrlBuilder>(LifeCycle.Singleton);
     container.Register<ICategoryUrlBuilder, CategoryUrlBuilder>(LifeCycle.Singleton);
     container.Register<IAdminPageUrlBuilder, AdminPageUrlBuilder>(LifeCycle.Singleton);
     container.Register<IAdminPostUrlBuilder, AdminPostUrlBuilder>(LifeCycle.Singleton);
     container.Register<IAdminCategoryUrlBuilder, AdminCategoryUrlBuilder>(LifeCycle.Singleton);
     container.Register<IAdminAccountUrlBuilder, AdminAccountUrlBuilder>(LifeCycle.Singleton);
     container.Register<IFeedUrlBuilder, FeedUrlBuilder>(LifeCycle.Singleton);
     container.Register<IServiceUrlBuilder, ServiceUrlBuilder>(LifeCycle.Singleton);
 }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <FilterAttribute, ExceptionHandlingAttribute>(LifeCycle.Singleton);
 }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IRoutingService, RoutingService>(LifeCycle.Singleton);
 }
示例#19
0
 /// <summary>
 ///     Installs all the component needed by the assembly.
 /// </summary>
 /// <param name="container"> The container. </param>
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <ICacheProvider, InProcCacheProvider>(LifeCycle.PerWebRequest);
 }
示例#20
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <IUrlBuilder, UrlBuilder>(LifeCycle.Singleton);
     container.Register <IAdminUrlBuilder, AdminUrlBuilder>(LifeCycle.Singleton);
     container.Register <IPostUrlBuilder, PostUrlBuilder>(LifeCycle.Singleton);
     container.Register <IPageUrlBuilder, PageUrlBuilder>(LifeCycle.Singleton);
     container.Register <ICategoryUrlBuilder, CategoryUrlBuilder>(LifeCycle.Singleton);
     container.Register <IAdminPageUrlBuilder, AdminPageUrlBuilder>(LifeCycle.Singleton);
     container.Register <IAdminPostUrlBuilder, AdminPostUrlBuilder>(LifeCycle.Singleton);
     container.Register <IAdminCategoryUrlBuilder, AdminCategoryUrlBuilder>(LifeCycle.Singleton);
     container.Register <IAdminAccountUrlBuilder, AdminAccountUrlBuilder>(LifeCycle.Singleton);
     container.Register <IFeedUrlBuilder, FeedUrlBuilder>(LifeCycle.Singleton);
     container.Register <IServiceUrlBuilder, ServiceUrlBuilder>(LifeCycle.Singleton);
 }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<IPackageManager, PackageManager>(LifeCycle.Singleton);
     container.Register<IPackageInstaller, Services.PackageInstaller>(LifeCycle.Singleton);
 }
示例#22
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <ILocalizationProvider, LocalizationProvider>(LifeCycle.Singleton);
 }
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <IPackageManager, PackageManager>(LifeCycle.Singleton);
     container.Register <IPackageInstaller, Services.PackageInstaller>(LifeCycle.Singleton);
 }
示例#24
0
 /// <summary>
 /// 	Installs all the component needed by the assembly.
 /// </summary>
 /// <param name="container"> The container. </param>
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register<ICacheProvider, InProcCacheProvider>(LifeCycle.PerWebRequest);
 }
示例#25
0
 public void ServiceRegistration(IDexterContainer container)
 {
     container.Register <IRoutingService, RoutingService>(LifeCycle.Singleton);
 }