Ejemplo n.º 1
0
        /// <summary>
        /// Create an IronPython enabled Spark service container
        /// </summary>
        /// <returns>A configured service container. Additional service builders may
        /// me added. </returns>
        public static ISparkServiceContainer CreateContainer()
        {
            var container = new SparkServiceContainer();

            ConfigureContainer(container);
            return(container);
        }
Ejemplo n.º 2
0
        public void EmptyMasterPreventsDefaultLayout()
        {
            var settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            var viewFolder = new InMemoryViewFolder
                             {
                                 {"Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>"},
                                 {"Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>"}
                             };

            container.SetServiceBuilder<IViewFolder>(c => viewFolder);

            var engine = container.GetService<ISparkViewEngine>();

            var descriptor = new SparkViewDescriptor()
                .AddTemplate("Home\\Index.spark")
                .AddTemplate("Layouts\\Application.spark");

            var view = engine.CreateInstance(descriptor);
            var contents = view.RenderView();
            engine.ReleaseInstance(view);

            Assert.AreEqual("<p>Hello world</p>", contents);
        }
Ejemplo n.º 3
0
        public void EmptyMasterPreventsDefaultLayout()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            var viewFolder = new InMemoryViewFolder
            {
                { "Home\\Index.spark", "<use master=\"\"/><p>Hello world</p><content:title>bar</content:title>" },
                { "Layouts\\Application.spark", "<h1>alpha</h1><use:view/><p>beta</p>" }
            };

            container.SetServiceBuilder <IViewFolder>(c => viewFolder);

            var engine = container.GetService <ISparkViewEngine>();

            var descriptor = new SparkViewDescriptor()
                             .AddTemplate("Home\\Index.spark")
                             .AddTemplate("Layouts\\Application.spark");

            var view     = engine.CreateInstance(descriptor);
            var contents = view.RenderView();

            engine.ReleaseInstance(view);

            Assert.AreEqual("<p>Hello world</p>", contents);
        }
        public void ConfigSettingsUsedByDefault()
        {
            var container = new SparkServiceContainer();

            var settings = container.GetService<ISparkViewEngine>().Settings;
            Assert.AreSame(ConfigurationManager.GetSection("spark"), settings);
        }
Ejemplo n.º 5
0
        public void SettingsServiceReplacesType()
        {
            var container = new SparkServiceContainer();

            container.SetService <ISparkExtensionFactory>(new StubExtensionFactory());
            Assert.IsInstanceOf(typeof(StubExtensionFactory), container.GetService <ISparkExtensionFactory>());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Create an IronPython enabled service container with explicit spark settings.
        /// </summary>
        /// <param name="settings">Typically an instance of SparkSettings object</param>
        /// <returns>A configured service container. Additional service builders may
        /// me added. May be passed to RegisterViewEngine.</returns>
        public static ISparkServiceContainer CreateContainer(ISparkSettings settings)
        {
            var container = new SparkServiceContainer(settings);

            ConfigureContainer(container);
            return(container);
        }
Ejemplo n.º 7
0
        public void ConfigSettingsUsedByDefault()
        {
            var container = new SparkServiceContainer();

            var settings = container.GetService <ISparkViewEngine>().Settings;

            Assert.AreSame(ConfigurationManager.GetSection("spark"), settings);
        }
 public void AddingServiceBuilderCallsInitialize()
 {
     var container = new SparkServiceContainer();
     container.SetServiceBuilder(typeof(ITestService), c => new TestService());
     var service = container.GetService<ITestService>();
     Assert.IsInstanceOfType(typeof(TestService), service);
     Assert.IsTrue(((TestService)service).Initialized);
 }
Ejemplo n.º 9
0
        public void CreatedSettingsUsedWhenProvided()
        {
            var settings  = new SparkSettings().SetPrefix("foo");
            var container = new SparkServiceContainer(settings);

            var settings2 = container.GetService <ISparkViewEngine>().Settings;

            Assert.AreSame(settings, settings2);
        }
 public void AddingServiceInstanceCallsInitialize()
 {
     var container = new SparkServiceContainer();
     var service = new TestService();
     Assert.IsFalse(service.Initialized);
     container.SetService<ITestService>(service);
     Assert.IsTrue(service.Initialized);
     Assert.AreSame(service, container.GetService<ITestService>());
 }
Ejemplo n.º 11
0
		public SparkConfiguration()
		{
			container = new SparkServiceContainer();
			container.SetServiceBuilder<ISparkSettings>(c => CreateSparkSettings());
			container.SetServiceBuilder<ISparkViewEngine>(c => new SparkViewEngine(c.GetService<ISparkSettings>())
			                                                   	{
			                                                   		ExtensionFactory = new OpenRastaSparkExtensionsFactory()
			                                                   	});
		}
Ejemplo n.º 12
0
        public void AddingServiceBuilderCallsInitialize()
        {
            var container = new SparkServiceContainer();

            container.SetServiceBuilder(typeof(ITestService), c => new TestService());
            var service = container.GetService <ITestService>();

            Assert.IsInstanceOf(typeof(TestService), service);
            Assert.IsTrue(((TestService)service).Initialized);
        }
Ejemplo n.º 13
0
        public void AddingServiceInstanceCallsInitialize()
        {
            var container = new SparkServiceContainer();
            var service   = new TestService();

            Assert.IsFalse(service.Initialized);
            container.SetService <ITestService>(service);
            Assert.IsTrue(service.Initialized);
            Assert.AreSame(service, container.GetService <ITestService>());
        }
        public void ContainterCreatesDefaultServices()
        {
            var container = new SparkServiceContainer();

            var langauageFactory = container.GetService<ISparkLanguageFactory>();
            Assert.IsInstanceOfType(typeof(DefaultLanguageFactory), langauageFactory);

            var resourcePathManager = container.GetService<IResourcePathManager>();
            Assert.IsInstanceOfType(typeof(DefaultResourcePathManager), resourcePathManager);
        }
Ejemplo n.º 15
0
        public void Configure()
        {
            SparkSettings settings = new SparkSettings();
            
            SparkViewFactory viewFactory = new SparkViewFactory(settings) {ViewFolder = new MyViewFolder()};

            var container = new SparkServiceContainer(settings);
            ConfigureContainer(container);
            return container;            
        }
        public ISparkServiceContainer CreateServiceContainer()
        {
            var sparkServiceContainer = new SparkServiceContainer();

            sparkServiceContainer.SetServiceBuilder<ISparkSettings>(c =>_sparkConfiguration.CreateSettings());
            sparkServiceContainer.SetServiceBuilder<ISparkViewEngine>(c => new SparkViewEngine(c.GetService<ISparkSettings>())
                                                                           	{
                                                                           		ExtensionFactory = new OpenRastaSparkExtensionsFactory()
                                                                           	});
            return sparkServiceContainer;
        }
        public ISparkServiceContainer CreateServiceContainer()
        {
            var sparkServiceContainer = new SparkServiceContainer();

            sparkServiceContainer.SetServiceBuilder <ISparkSettings>(c => _sparkConfiguration.CreateSettings());
            sparkServiceContainer.SetServiceBuilder <ISparkViewEngine>(c => new SparkViewEngine(c.GetService <ISparkSettings>())
            {
                ExtensionFactory = new OpenRastaSparkExtensionsFactory()
            });
            return(sparkServiceContainer);
        }
Ejemplo n.º 18
0
        public void Init()
        {
            var settings = new SparkSettings()
                           .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder <IViewFolder>(c => _viewFolder);

            _engine = container.GetService <ISparkViewEngine>();
        }
        private static HtmlResponse GetViewResponse <T>(byte[] viewTemplate, IEnumerable <string> namespaces, Action <T> populateView = null)
            where T : AbstractSparkView
        {
            return(new HtmlResponse(
                       () =>
            {
                Type viewType = typeof(T);
                SparkSettings settings = new SparkSettings()
                                         .SetPageBaseType(viewType)
                                         .SetDebug(false);

                foreach (string @namespace in namespaces.Distinct())
                {
                    settings.AddNamespace(@namespace);
                }

                var container = new SparkServiceContainer(settings);
                var viewFolder = new InMemoryViewFolder();

                container.SetServiceBuilder <IViewFolder>(arg => viewFolder);
                var viewEngine = container.GetService <ISparkViewEngine>();
                string viewKey = viewType.Name.Replace("View", "") + ".spark";
                const string applicationKey = @"Layouts\application.spark";

                viewFolder.AddLayoutsPath("Layouts");
                viewFolder.Add(viewKey, viewTemplate);
                viewFolder.Add(applicationKey, ResponseResources.Application);

                SparkViewDescriptor descriptor = new SparkViewDescriptor()
                                                 .AddTemplate(viewKey)
                                                 .AddTemplate(applicationKey);
                var view = (T)viewEngine.CreateInstance(descriptor);

                try
                {
                    if (populateView != null)
                    {
                        populateView(view);
                    }

                    var writer = new StringWriter();

                    view.RenderView(writer);

                    return writer.ToString();
                }
                finally
                {
                    viewEngine.ReleaseInstance(view);
                }
            }));
        }
Ejemplo n.º 20
0
        public void Init(bool automaticEncoding)
        {
            _settings = new SparkSettings()
                        .SetPageBaseType(typeof(StubSparkView))
                        .SetAutomaticEncoding(automaticEncoding);
            var container = new SparkServiceContainer(_settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder <IViewFolder>(c => _viewFolder);

            _engine = container.GetService <ISparkViewEngine>();
        }
Ejemplo n.º 21
0
        public void Configure()
        {
            SparkSettings settings = new SparkSettings();

            SparkViewFactory viewFactory = new SparkViewFactory(settings)
            {
                ViewFolder = new MyViewFolder()
            };

            var container = new SparkServiceContainer(settings);

            ConfigureContainer(container);
            return(container);
        }
Ejemplo n.º 22
0
        public void ContainerCreatesDefaultServices()
        {
            var container = new SparkServiceContainer();

            var langauageFactory = container.GetService <ISparkLanguageFactory>();

            Assert.IsInstanceOf(typeof(DefaultLanguageFactory), langauageFactory);

            var resourcePathManager = container.GetService <IResourcePathManager>();

            Assert.IsInstanceOf(typeof(DefaultResourcePathManager), resourcePathManager);

            var bindingProvider = container.GetService <IBindingProvider>();

            Assert.IsInstanceOf(typeof(DefaultBindingProvider), bindingProvider);
        }
Ejemplo n.º 23
0
        public void ContainerCreatesDefaultServices()
        {
            var container = new SparkServiceContainer();

            var langauageFactory = container.GetService<ISparkLanguageFactory>();
            Assert.IsInstanceOf(typeof(DefaultLanguageFactory), langauageFactory);

            var resourcePathManager = container.GetService<IResourcePathManager>();
            Assert.IsInstanceOf(typeof(DefaultResourcePathManager), resourcePathManager);

            var bindingProvider = container.GetService<IBindingProvider>();
            Assert.IsInstanceOf(typeof(DefaultBindingProvider), bindingProvider);

            var partialProvider = container.GetService<IPartialProvider>();
            Assert.IsInstanceOf(typeof(DefaultPartialProvider), partialProvider);
        }
Ejemplo n.º 24
0
        public void EngineGetsCustomServiceAndViewFolderSettings()
        {
            var settings = new SparkSettings();

            settings.AddViewFolder(typeof(TestViewFolder),
                                   new Dictionary <string, string> {
                { "testpath", Path.Combine("hello", "world.spark") }
            });

            var container = new SparkServiceContainer(settings);

            container.SetServiceBuilder <IViewActivatorFactory>(c => new TestActivatorFactory());

            var engine = container.GetService <ISparkViewEngine>();

            Assert.IsInstanceOf(typeof(TestActivatorFactory), engine.ViewActivatorFactory);

            Assert.IsTrue(engine.ViewFolder.HasView(Path.Combine("hello", "world.spark")));
        }
Ejemplo n.º 25
0
        public static void Start()
        {
            LoggingConfig.Configure();

            ViewEngines.Engines.Clear();

            var settings = new SparkSettings()
                .AddViewFolder(ViewFolderType.FileSystem, new Dictionary<string, string>
                                                              {
                                                                  {"basePath", ThemeDirectory}
                                                              })
                .SetAutomaticEncoding(true);

            if (Debugger.IsAttached)
                settings.SetDebug(true);

            var viewFactory = new SparkViewFactory(settings);

            var sparkServiceContainer = new SparkServiceContainer(settings);
            sparkServiceContainer.SetServiceBuilder<IViewEngine>(c => viewFactory);
            sparkServiceContainer.SetServiceBuilder<IDescriptorBuilder>(c => new DefaultDescriptorBuilder());
            sparkServiceContainer.SetServiceBuilder<ICacheServiceProvider>(c => new DefaultCacheServiceProvider());
            sparkServiceContainer.AddFilter(new AreaDescriptorFilter());
            sparkServiceContainer.AddFilter(CustomThemeFilter.For(GetCustomerId));

            ViewEngines.Engines.Add(sparkServiceContainer.GetService<IViewEngine>());

            var sparkEngine = sparkServiceContainer.GetService<ISparkViewEngine>();

            var timer = new Stopwatch();
            timer.Start();
            sparkEngine.BatchCompilation(AllKnownDescriptors(viewFactory));
            timer.Stop();

            "SparkWebMvc".Log().Info("Pre-compile time: {0} seconds", timer.Elapsed.TotalSeconds);
        }
Ejemplo n.º 26
0
        public void Init()
        {
            CompiledViewHolder.Current = new CompiledViewHolder();

            var settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView));
            var container = new SparkServiceContainer(settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder<IViewFolder>(c => _viewFolder);

            _engine = container.GetService<ISparkViewEngine>();
        }
Ejemplo n.º 27
0
 /// <summary>
 /// Create a CSharp enabled service container with explicit spark settings.
 /// </summary>
 /// <param name="settings">Typically an instance of SparkSettings object</param>
 /// <returns>A configured service container. Additional service builders may
 /// me added. May be passed to RegisterViewEngine.</returns>
 public static ISparkServiceContainer CreateContainer(ISparkSettings settings)
 {
     var container = new SparkServiceContainer(settings);
     ConfigureContainer(container);
     return container;
 }
Ejemplo n.º 28
0
 /// <summary>
 /// Create a CSharp enabled Spark service container
 /// </summary>
 /// <returns>A configured service container. Additional service builders may
 /// me added. </returns>
 public static ISparkServiceContainer CreateContainer()
 {
     var container = new SparkServiceContainer();
     ConfigureContainer(container);
     return container;
 }
Ejemplo n.º 29
0
        public void Init(bool automaticEncoding)
        {
            _settings = new SparkSettings()
                .SetPageBaseType(typeof(StubSparkView))
                .SetAutomaticEncoding(automaticEncoding);
            var container = new SparkServiceContainer(_settings);

            _viewFolder = new InMemoryViewFolder();

            container.SetServiceBuilder<IViewFolder>(c => _viewFolder);

            _engine = container.GetService<ISparkViewEngine>();
        }
        public void EngineGetsCustomServiceAndViewFolderSettings()
        {
            var settings = new SparkSettings();
            settings.AddViewFolder(typeof(TestViewFolder),
                                   new Dictionary<string, string> { { "testpath", "hello\\world.spark" } });

            var container = new SparkServiceContainer(settings);
            container.SetServiceBuilder<IViewActivatorFactory>(c=>new TestActivatorFactory());

            var engine = container.GetService<ISparkViewEngine>();
            Assert.IsInstanceOfType(typeof(TestActivatorFactory), engine.ViewActivatorFactory);

            Assert.IsTrue(engine.ViewFolder.HasView("hello\\world.spark"));
        }
        public void CreatedSettingsUsedWhenProvided()
        {
            var settings = new SparkSettings().SetPrefix("foo");
            var container = new SparkServiceContainer(settings);

            var settings2 = container.GetService<ISparkViewEngine>().Settings;
            Assert.AreSame(settings, settings2);
        }
 public void SettingsServiceReplacesType()
 {
     var container = new SparkServiceContainer();
     container.SetService<ISparkExtensionFactory>(new StubExtensionFactory());
     Assert.IsInstanceOfType(typeof(StubExtensionFactory), container.GetService<ISparkExtensionFactory>());
 }
Ejemplo n.º 33
0
        public void CreatingViewEngineWithSimpleContainer()
        {
            var settings = new SparkSettings().AddNamespace("System.Web.Mvc.Html");
            var container = new SparkServiceContainer(settings);
            container.SetServiceBuilder<IViewEngine>(c => new SparkViewFactory(c.GetService<ISparkSettings>()));

            var viewFactory = (SparkViewFactory)container.GetService<IViewEngine>();
            var viewEngine = container.GetService<ISparkViewEngine>();
            var viewFolder = container.GetService<IViewFolder>();
            Assert.AreSame(settings, viewFactory.Settings);
            Assert.AreSame(settings, viewEngine.Settings);
            Assert.AreSame(viewEngine, viewFactory.Engine);
            Assert.AreSame(viewFolder, viewEngine.ViewFolder);
            Assert.AreSame(viewFolder, viewFactory.ViewFolder);
        }