private IContainer CreateHostContainer() { var hostContainer = OrchardStarter.CreateHostContainer(ContainerRegistrations); var host = hostContainer.Resolve <IOrchardHost>(); host.Initialize(); return(hostContainer); }
protected void Application_Start() { _hostContainer = OrchardStarter.CreateHostContainer(MvcSingletons); _host = _hostContainer.Resolve <IOrchardHost>(); _host.Initialize(); var route = RouteTable.Routes.MapRoute("foo", "hello-world", new { controller = "Home", action = "Index" }); route.RouteHandler = new HelloYetAgainHandler(); }
public void MostRecentlyRegisteredServiceReturnsFromSingularResolve() { var container = OrchardStarter.CreateHostContainer(builder => { builder.RegisterType <Component1>().As <IServiceA>(); builder.RegisterType <Component2>().As <IServiceA>(); }); var service = container.Resolve <IServiceA>(); Assert.That(service, Is.Not.Null); Assert.That(service, Is.TypeOf <Component2>()); }
protected void Application_Start() { RegisterRoutes(RouteTable.Routes); _container = OrchardStarter.CreateHostContainer(MvcSingletons); _host = _container.Resolve <IOrchardHost>(); _host.Initialize(); // initialize shells to speed up the first dynamic query _host.BeginRequest(); _host.EndRequest(); }
public void ContainerResolvesServicesInSameOrderTheyAreRegistered() { var container = OrchardStarter.CreateHostContainer(builder => { builder.RegisterType <Component1>().As <IServiceA>(); builder.RegisterType <Component2>().As <IServiceA>(); }); var services = container.Resolve <IEnumerable <IServiceA> >(); Assert.That(services.Count(), Is.EqualTo(2)); Assert.That(services.First(), Is.TypeOf <Component1>()); Assert.That(services.Last(), Is.TypeOf <Component2>()); }
public void Init() { var clock = new StubClock(); var appDataFolder = new StubAppDataFolder(clock); _controllerBuilder = new ControllerBuilder(); _routeCollection = new RouteCollection(); _modelBinderDictionary = new ModelBinderDictionary(); _viewEngineCollection = new ViewEngineCollection { new WebFormViewEngine() }; _container = OrchardStarter.CreateHostContainer( builder => { builder.RegisterInstance(new StubShellSettingsLoader()).As <IShellSettingsManager>(); builder.RegisterType <RoutePublisher>().As <IRoutePublisher>(); builder.RegisterType <ModelBinderPublisher>().As <IModelBinderPublisher>(); builder.RegisterType <ShellContextFactory>().As <IShellContextFactory>(); builder.RegisterType <StubExtensionManager>().As <IExtensionManager>(); builder.RegisterType <StubVirtualPathMonitor>().As <IVirtualPathMonitor>(); builder.RegisterInstance(appDataFolder).As <IAppDataFolder>(); builder.RegisterInstance(_controllerBuilder); builder.RegisterInstance(_routeCollection); builder.RegisterInstance(_modelBinderDictionary); builder.RegisterInstance(_viewEngineCollection); builder.RegisterAutoMocking() .Ignore <IExtensionFolders>() .Ignore <IRouteProvider>() .Ignore <IHttpRouteProvider>() .Ignore <IModelBinderProvider>() .Ignore <IWorkContextEvents>() .Ignore <IOwinMiddlewareProvider>(); }); _lifetime = _container.BeginLifetimeScope(); _container.Mock <IContainerProvider>() .SetupGet(cp => cp.ApplicationContainer).Returns(_container); _container.Mock <IContainerProvider>() .SetupGet(cp => cp.RequestLifetime).Returns(_lifetime); _container.Mock <IContainerProvider>() .Setup(cp => cp.EndRequestLifetime()).Callback(() => _lifetime.Dispose()); _container.Mock <IShellDescriptorManager>() .Setup(cp => cp.GetShellDescriptor()).Returns(default(ShellDescriptor)); _container.Mock <IOrchardShellEvents>() .Setup(e => e.Activated()); _container.Mock <IOrchardShellEvents>() .Setup(e => e.Terminating()).Callback(() => new object()); }
/// <summary> /// Initializes a new instance of the <see cref="AgentBase"/> class. /// </summary> public AgentBase() { this.HostContainer = OrchardStarter.CreateHostContainer(this.ContainerRegistrations); this.ContainerManager = this.HostContainer.Resolve <IContainerManager>(); }
public void Init() { _hostContainer = OrchardStarter.CreateHostContainer(builder => { builder.RegisterType <Alpha>().InstancePerDependency(); }); }
public static IContainer CreateHostContainer(IOrchardAppHost appHost, AppHostSettings settings, AppHostRegistrations registrations) { return(OrchardStarter.CreateHostContainer(builder => { builder.RegisterType <AppHostEnvironment>().As <IHostEnvironment>().SingleInstance(); // Needed also for shells, separately. RegisterAppDataFolderRoot(builder, settings.AppDataFolderPath).SingleInstance(); RegisterVolatileProvider <AppHostVirtualPathMonitor, IVirtualPathMonitor>(builder); RegisterVolatileProvider <AppHostVirtualPathProvider, IVirtualPathProvider>(builder); RegisterVolatileProvider <AppHostWebSiteFolder, IWebSiteFolder>(builder); var shellRegistrations = new ShellContainerRegistrations { Registrations = shellBuilder => { // Despite imported assemblies being handled these registrations are necessary, because they are needed too early. // Adding them as normal services, even with OrchardSuppressDependency, wouldn't work. RegisterAppDataFolderRoot(shellBuilder, settings.AppDataFolderPath).InstancePerMatchingLifetimeScope("shell"); RegisterVolatileProviderForShell <AppHostVirtualPathMonitor, IVirtualPathMonitor>(shellBuilder); RegisterVolatileProviderForShell <AppHostVirtualPathProvider, IVirtualPathProvider>(shellBuilder); RegisterVolatileProviderForShell <AppHostWebSiteFolder, IWebSiteFolder>(shellBuilder); if (registrations.ShellRegistrations != null) { registrations.ShellRegistrations(shellBuilder); } } }; builder.RegisterInstance(shellRegistrations).As <IShellContainerRegistrations>(); // Handling imported assemblies. if (settings.ImportedExtensions != null && settings.ImportedExtensions.Any()) { builder.RegisterType <ImportedExtensionsProvider>().As <IExtensionFolders, IExtensionLoader>().SingleInstance() .WithParameter(new NamedParameter("extensions", settings.ImportedExtensions)); } // Configuring extension loading. builder.RegisterType <ExtensionPathsProvider>().As <IExtensionPathsProvider>().SingleInstance() .WithParameter(new NamedParameter("hostSettings", settings)); builder.RegisterType <AppHostExtensionFolders>().As <IExtensionFolders>().SingleInstance(); builder.RegisterType <AppHostCoreExtensionLoader>().As <IExtensionLoader>().SingleInstance(); builder.RegisterType <AppHostRawThemeExtensionLoader>().As <IExtensionLoader>().SingleInstance(); if (settings.DisableConfiguratonCaches) { builder.RegisterModule <ConfigurationCacheDisablingModule>(); } if (settings.DisableExtensionMonitoring) { builder.RegisterModule <ExtensionMonitoringDisablingModule>(); } // Either we register MVC singletons or we need at least a new IOrchardShell implementation. builder.Register(ctx => RouteTable.Routes).SingleInstance(); builder.Register(ctx => ModelBinders.Binders).SingleInstance(); builder.Register(ctx => ViewEngines.Engines).SingleInstance(); builder.RegisterType <LoggerService>().As <ILoggerService>().SingleInstance(); builder.RegisterInstance(appHost).As <IOrchardAppHost>().ExternallyOwned(); if (registrations.HostRegistrations != null) { registrations.HostRegistrations(builder); } })); }