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; }
// 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; }
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; }
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)); }
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>())); }