/// <summary>
        /// Sets the context variables to data collector
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        public void SetVariables(IDIContainerProvider containerProvider)
        {
            var environment       = containerProvider.Resolve <IEnvironment>();
            var languageManager   = containerProvider.Resolve <ILanguageManagerProvider>().Get();
            var context           = containerProvider.Resolve <IWebContextProvider>().Get();
            var stopWatchProvider = containerProvider.Resolve <IStopwatchProvider>();

            _dataCollector.Add(VariableNameTemplatesPath, environment.TemplatesPath);
            _dataCollector.Add(VariableNameSiteStyle, environment.SiteStyle);

            if (!string.IsNullOrEmpty(languageManager.Language))
            {
                _dataCollector.Add(VariableNameCurrentLanguage, languageManager.Language);
                _dataCollector.Add(VariableNameCurrentLanguageExtension, "." + languageManager.Language);
                _dataCollector.Add(VariableNameCurrentLanguageCultureName, Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
                _dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, "." + Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
            }
            else
            {
                _dataCollector.Add(VariableNameCurrentLanguage, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageExtension, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageCultureName, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, (string)null);
            }

            _dataCollector.Add(VariableNameSiteUrl, context.SiteUrl);
            _dataCollector.Add(VariableNameSiteVirtualPath, context.VirtualPath);

            if (!_disableAutomaticSiteTitleSet)
            {
                SetSiteTitleFromStringTable(context.Request.Path.Value, containerProvider.Resolve <IStringTable>());
            }

            _dataCollector.Add(VariableNameExecutionTime, stopWatchProvider.StopAndGetMeasurement().ToString("mm\\:ss\\:fff"));
        }
예제 #2
0
		/// <summary>
		/// Sets the context variables to data collector
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		public void SetVariables(IDIContainerProvider containerProvider)
		{
			var environment = containerProvider.Resolve<IEnvironment>();
			var languageManager = containerProvider.Resolve<ILanguageManagerProvider>().Get();
			var context = containerProvider.Resolve<IWebContextProvider>().Get();
			var stopWatchProvider = containerProvider.Resolve<IStopwatchProvider>();

			_dataCollector.Add(VariableNameTemplatesPath, environment.TemplatesPath);
			_dataCollector.Add(VariableNameSiteStyle, environment.SiteStyle);

			if (!string.IsNullOrEmpty(languageManager.Language))
			{
				_dataCollector.Add(VariableNameCurrentLanguage, languageManager.Language);
				_dataCollector.Add(VariableNameCurrentLanguageExtension, "." + languageManager.Language);
				_dataCollector.Add(VariableNameCurrentLanguageCultureName, Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
				_dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, "." + Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
			}
			else
			{
				_dataCollector.Add(VariableNameCurrentLanguage, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageExtension, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageCultureName, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, (string)null);
			}

			_dataCollector.Add(VariableNameSiteUrl, context.SiteUrl);
			_dataCollector.Add(VariableNameSiteVirtualPath, context.VirtualPath);

			if (!_disableAutomaticSiteTitleSet)
				SetSiteTitleFromStringTable(context.Request.Path.Value, containerProvider.Resolve<IStringTable>());

			_dataCollector.Add(VariableNameExecutionTime, stopWatchProvider.StopAndGetMeasurement().ToString("mm\\:ss\\:fff"));
		}
		/// <summary>
		/// Builds the modules accessor properties.
		/// </summary>
		/// <param name="modulesAccessor">The modules accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildActionModulesAccessorProperties(ActionModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
		{
			BuildModulesAccessorProperties(modulesAccessor, containerProvider);

			modulesAccessor.Context = containerProvider.Resolve<IWebContextProvider>().Get();
			modulesAccessor.DataCollector = containerProvider.Resolve<IDataCollector>();
			modulesAccessor.Redirector = containerProvider.Resolve<IRedirector>();
			modulesAccessor.LanguageManager = containerProvider.Resolve<ILanguageManagerProvider>().Get();
			modulesAccessor.FileReader = containerProvider.Resolve<IFileReader>();
		}
예제 #4
0
        /// <summary>
        /// Builds the modules accessor properties.
        /// </summary>
        /// <param name="modulesAccessor">The modules accessor.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        protected void BuildActionModulesAccessorProperties(ActionModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
        {
            BuildModulesAccessorProperties(modulesAccessor, containerProvider);

            modulesAccessor.Context         = containerProvider.Resolve <IWebContextProvider>().Get();
            modulesAccessor.DataCollector   = containerProvider.Resolve <IDataCollector>();
            modulesAccessor.Redirector      = containerProvider.Resolve <IRedirector>();
            modulesAccessor.LanguageManager = containerProvider.Resolve <ILanguageManagerProvider>().Get();
            modulesAccessor.FileReader      = containerProvider.Resolve <IFileReader>();
        }
예제 #5
0
        /// <summary>
        /// Creates the view.
        /// </summary>
        /// <param name="viewType">Type of the view.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public View CreateView(Type viewType, IDIContainerProvider containerProvider)
        {
            var view = (View)containerProvider.Resolve(viewType);

            BuildModulesAccessorProperties(view, containerProvider);

            view.Language = containerProvider.Resolve <ILanguageManagerProvider>().Get().Language;
            view.SiteUrl  = containerProvider.Resolve <IAcspNetContextProvider>().Get().SiteUrl;

            return(view);
        }
예제 #6
0
        /// <summary>
        /// Creates the view.
        /// </summary>
        /// <param name="viewType">Type of the view.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public View CreateView(Type viewType, IDIContainerProvider containerProvider)
        {
            var view = (View)containerProvider.Resolve(viewType);

            BuildModulesAccessorProperties(view, containerProvider);

            view.Language = containerProvider.Resolve<ILanguageManagerProvider>().Get().Language;
            view.SiteUrl = containerProvider.Resolve<IAcspNetContextProvider>().Get().SiteUrl;

            return view;
        }
예제 #7
0
		/// <summary>
		/// Buids a web page
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		/// <returns></returns>
		public string Build(IDIContainerProvider containerProvider)
		{
			containerProvider.Resolve<IStringTableItemsSetter>().Set();
			containerProvider.Resolve<IContextVariablesSetter>().SetVariables(containerProvider);

			var tpl = _templateFactory.Load(containerProvider.Resolve<IEnvironment>().MasterTemplateFileName);

			foreach (var item in _dataCollector.Items.Keys)
				tpl.Set(item, _dataCollector.Items[item]);

			return tpl.Get();
		}
예제 #8
0
        /// <summary>
        /// Buids a web page
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public string Build(IDIContainerProvider containerProvider)
        {
            containerProvider.Resolve <IStringTableItemsSetter>().Set();
            containerProvider.Resolve <IContextVariablesSetter>().SetVariables(containerProvider);

            var tpl = _templateFactory.Load(containerProvider.Resolve <IEnvironment>().MasterTemplateFileName);

            foreach (var item in _dataCollector.Items.Keys)
            {
                tpl.Set(item, _dataCollector.Items[item]);
            }

            return(tpl.Get());
        }
        public void Resolve_NotRegistered_ActivationException()
        {
            // Act & Assert

            var ex = Assert.Throws <ActivationException>(() => _provider.Resolve <NonDepFoo>());

            Assert.That(ex.Message, Does.StartWith("No registration for type NonDepFoo could be found and an implicit registration could not be made."));
        }
        public void Resolve_NotRegistered_InvalidOperationException()
        {
            // Act & Assert

            var ex = Assert.Throws <InvalidOperationException>(() => _provider.Resolve <NonDepFoo>());

            Assert.That(ex.Message, Does.StartWith("No service for type 'Simplify.DI.TestsTypes.NonDepFoo' has been registered."));
        }
        public void Resolve_NotRegistered_ComponentNotFoundException()
        {
            // Act & Assert

            var ex = Assert.Throws <ComponentNotFoundException>(() => _provider.Resolve <NonDepFoo>());

            Assert.That(ex.Message,
                        Does.StartWith("No component for supporting the service Simplify.DI.TestsTypes.NonDepFoo was found"));
        }
예제 #12
0
        public void Resolve_NotRegistered_ContainerException()
        {
            // Act & Assert

            var ex = Assert.Throws <ContainerException>(() => _provider.Resolve <NonDepFoo>());

            Assert.That(ex.Message, Does.StartWith("Unable to resolve"));
            Assert.That(ex.Message, Does.Contain("NonDepFoo (IsResolutionCall)"));
        }
        public void Resolve_NotRegistered_ContainerException()
        {
            // Act & Assert

            var ex = Assert.Throws <ContainerException>(() => _provider.Resolve <NonDepFoo>());

            Assert.That(ex.Message, Does.StartWith("code: Error.UnableToResolveUnknownService"));
            Assert.That(ex.Message, Does.Contain("Unable to resolve resolution root"));
            Assert.That(ex.Message, Does.Contain("NonDepFoo"));
        }
예제 #14
0
		/// <summary>
		/// Builds the modules accessor properties.
		/// </summary>
		/// <param name="modulesAccessor">The modules accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildModulesAccessorProperties(ModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
		{
			BuildViewAccessorProperties(modulesAccessor, containerProvider);

			modulesAccessor.Environment = containerProvider.Resolve<IEnvironment>();

			var stringTable = containerProvider.Resolve<IStringTable>();
			modulesAccessor.StringTable = stringTable.Items;
			modulesAccessor.StringTableManager = stringTable;

			modulesAccessor.TemplateFactory = containerProvider.Resolve<ITemplateFactory>();

			var htmlWrapper = new HtmlWrapper
			{
				ListsGenerator = containerProvider.Resolve<IListsGenerator>()
			};

			modulesAccessor.Html = htmlWrapper;
		}
예제 #15
0
        /// <summary>
        /// Creates the controller.
        /// </summary>
        /// <param name="controllerType">Type of the controller.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="routeParameters">The route parameters.</param>
        /// <returns></returns>
        public ControllerBase CreateController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters = null)
        {
            var controller = (ControllerBase)containerProvider.Resolve(controllerType);

            BuildActionModulesAccessorProperties(controller, containerProvider);

            controller.RouteParameters = routeParameters;

            return(controller);
        }
예제 #16
0
        /// <summary>
        /// Creates the controller.
        /// </summary>
        /// <param name="controllerType">Type of the controller.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="routeParameters">The route parameters.</param>
        /// <returns></returns>
        public ControllerBase CreateController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters = null)
        {
            var controller = (ControllerBase)containerProvider.Resolve(controllerType);

            BuildActionModulesAccessorProperties(controller, containerProvider);

            controller.RouteParameters = routeParameters;

            return controller;
        }
        /// <summary>
        /// Builds the modules accessor properties.
        /// </summary>
        /// <param name="modulesAccessor">The modules accessor.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        protected void BuildModulesAccessorProperties(ModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
        {
            BuildViewAccessorProperties(modulesAccessor, containerProvider);

            modulesAccessor.Environment = containerProvider.Resolve <IEnvironment>();

            var stringTable = containerProvider.Resolve <IStringTable>();

            modulesAccessor.StringTable        = stringTable.Items;
            modulesAccessor.StringTableManager = stringTable;

            modulesAccessor.TemplateFactory = containerProvider.Resolve <ITemplateFactory>();

            var htmlWrapper = new HtmlWrapper
            {
                ListsGenerator = containerProvider.Resolve <IListsGenerator>()
            };

            modulesAccessor.Html = htmlWrapper;
        }
        public void Resolve_AllSingletones_EqualObjects()
        {
            // Assign

            _provider.Register <Foo>(LifetimeType.Singleton);
            _provider.Register <Bar1>(LifetimeType.Singleton);
            _provider.Register <Bar2>(LifetimeType.Singleton);

            // Act

            var foo  = _provider.Resolve <Foo>();
            var foo2 = _provider.Resolve <Foo>();
            Foo foo3;
            Foo foo4;

            using (var scope = _provider.BeginLifetimeScope())
                foo3 = scope.Container.Resolve <Foo>();

            using (var scope = _provider.BeginLifetimeScope())
                foo4 = scope.Container.Resolve <Foo>();

            // Assert

            Assert.AreEqual(foo, foo2);
            Assert.AreEqual(foo, foo3);
            Assert.AreEqual(foo, foo4);
        }
예제 #19
0
 /// <summary>
 /// Builds the view accessor properties.
 /// </summary>
 /// <param name="viewAccessor">The view accessor.</param>
 /// <param name="containerProvider">The DI container provider.</param>
 protected void BuildViewAccessorProperties(ViewAccessor viewAccessor, IDIContainerProvider containerProvider)
 {
     viewAccessor.ContainerProvider = containerProvider;
     viewAccessor.ViewFactory       = containerProvider.Resolve <IViewFactory>();
 }
		/// <summary>
		/// Builds the controller response properties.
		/// </summary>
		/// <param name="controllerResponse">The controller response.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		public void BuildControllerResponseProperties(ControllerResponse controllerResponse, IDIContainerProvider containerProvider)
		{
			BuildActionModulesAccessorProperties(controllerResponse, containerProvider);

			controllerResponse.ResponseWriter = containerProvider.Resolve<IResponseWriter>();
		}
 public void Resolve_NotRegistered_ActivationException()
 {
     // Act & Assert
     Assert.Throws <ComponentNotRegisteredException>(() => _provider.Resolve <NonDepFoo>());
 }
 /// <summary>
 /// Resolves the specifed type.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="provider">The DI provider.</param>
 /// <returns></returns>
 public static T Resolve <T>(this IDIContainerProvider provider)
 {
     return((T)provider.Resolve(typeof(T)));
 }
예제 #23
0
		/// <summary>
		/// Builds the view accessor properties.
		/// </summary>
		/// <param name="viewAccessor">The view accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildViewAccessorProperties(ViewAccessor viewAccessor, IDIContainerProvider containerProvider)
		{
			viewAccessor.ContainerProvider = containerProvider;
			viewAccessor.ViewFactory = containerProvider.Resolve<IViewFactory>();
		}
        /// <summary>
        /// Builds the controller response properties.
        /// </summary>
        /// <param name="controllerResponse">The controller response.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        public void BuildControllerResponseProperties(ControllerResponse controllerResponse, IDIContainerProvider containerProvider)
        {
            BuildActionModulesAccessorProperties(controllerResponse, containerProvider);

            controllerResponse.ResponseWriter = containerProvider.Resolve <IResponseWriter>();
        }