Exemplo n.º 1
0
        public override PageDefinition Parse(string resourceLocation)
        {
            var result = new PageDefinition();

            var action = new PageAction("GET");

            var moduleDefinitionList = new ModuleDefinitionList();
            var pageParameters = new PageParameterList();

            var viewComponentDefinition = _viewCatalog.Get(typeof(XHtmlView).Name);
            if (viewComponentDefinition == null)
                throw new XrcException(string.Format("View '{0}' not found on catalog.", typeof(XHtmlView).Name));

            var view = new ViewDefinition(viewComponentDefinition, null);
            string propertyName = "Content";
            var viewProperty = viewComponentDefinition.Type.GetProperty(propertyName);
            if (viewProperty == null)
                throw new XrcException(string.Format("Property '{0}' for type '{1}' not found.", propertyName, viewComponentDefinition.Type.FullName));

            XDocument content = _resourceProvider.ResourceToXml(resourceLocation);
            var propertyValue = new XValue(viewProperty.PropertyType, content);

            view.Properties.Add(new XProperty(viewProperty, propertyValue));
            action.Views.Add(view);
            result.Actions.Add(action);

            return result;
        }
Exemplo n.º 2
0
        // TODO E' possibile semplificare e irrobustire questo codice?
        // TODO Potrebero esserci problemi di cache e dipendenze? Da ottimizzare in qualche modo?
        public override PageDefinition Parse(string resourceLocation)
        {
            var result = new PageDefinition();

            var action = new PageAction("GET");

            var moduleDefinitionList = new ModuleDefinitionList();
            var pageParameters = new PageParameterList();

            var viewComponentDefinition = _viewCatalog.Get(typeof(XsltView).Name);
            if (viewComponentDefinition == null)
                throw new XrcException(string.Format("View '{0}' not found on catalog.", typeof(XsltView).Name));

            var view = new ViewDefinition(viewComponentDefinition, null);

            XDocument xsltContent = _resourceProvider.ResourceToXml(resourceLocation);
            AddProperty(viewComponentDefinition, view, "Xslt", xsltContent);

            string dataVirtualPath = resourceLocation.Replace(".xrc.xslt", ".xml");
            if (_resourceProvider.ResourceExists(dataVirtualPath))
            {
                AddProperty(viewComponentDefinition, view, "Data", _resourceProvider.ResourceToXml(dataVirtualPath));
            }

            action.Views.Add(view);
            result.Actions.Add(action);

            return result;
        }
Exemplo n.º 3
0
        public Page(string resourceLocation, 
                    XrcUrl url,
                    PageActionList actions,
                    PageParameterList parameters,
                    ModuleDefinitionList modules,
                    UriSegmentParameterList urlSegmentsParameters,
					Configuration.IHostingConfig hostingConfig)
        {
            _actions = actions;
            _parameters = parameters;
            _modules = modules;
            _urlSegmentsParameters = urlSegmentsParameters;
            _url = url;
            _resourceLocation = resourceLocation;
            _hostingConfig = hostingConfig;
        }
Exemplo n.º 4
0
        public void It_should_be_possible_to_eval_constant()
        {
            PageScriptService target = new PageScriptService(null);
            IContext context = new Mocks.ContextMock();
            ModuleDefinitionList modulesDefinition = new ModuleDefinitionList();
            PageParameterList pageParameters = new PageParameterList();
            Dictionary<string, object> modules = new Dictionary<string, object>();
            ContextParameterList parameters = new ContextParameterList();

            XValue exp;

            exp = target.Parse("ciao", typeof(string), modulesDefinition, pageParameters);
            Assert.AreEqual("ciao", target.Eval(exp, modules, parameters));

            exp = target.Parse("459", typeof(int), modulesDefinition, pageParameters);
            Assert.AreEqual(459, target.Eval(exp, modules, parameters));

            exp = target.Parse("0.59", typeof(double), modulesDefinition, pageParameters);
            Assert.AreEqual(0.59, target.Eval(exp, modules, parameters));

            exp = target.Parse("01/02/2045", typeof(DateTime), modulesDefinition, pageParameters);
            Assert.AreEqual(new DateTime(2045, 01, 02), target.Eval(exp, modules, parameters));
        }
Exemplo n.º 5
0
        public void It_should_be_possible_to_parse_and_eval_script_with_modules()
        {
            var scriptService = new Moq.Mock<IScriptService>();
            scriptService.Setup(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>())).Returns(new Mocks.ScriptExpressionMock("TestModule.Name", typeof(string)));
            TestModule testModule = new TestModule();

            ModuleDefinitionList modules = new ModuleDefinitionList();
            modules.Add(new ModuleDefinition("TestModule", TestModule.Definition));
            PageParameterList parameters = new PageParameterList();

            PageScriptService target = new PageScriptService(scriptService.Object);

            XValue exp;
            exp = target.Parse("@TestModule.Name", typeof(string), modules, parameters);

            scriptService.Verify(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>()));

            Dictionary<string, object> modulesInstance = new Dictionary<string, object>();
            modulesInstance.Add("TestModule", testModule);
            ContextParameterList parametersInstance = new ContextParameterList();

            target.Eval(exp, modulesInstance, parametersInstance);

            scriptService.Verify(p => p.Eval(Moq.It.IsAny<IScriptExpression>(), Moq.It.IsAny<ScriptParameterList>()));
        }