/// <summary> /// Performs the Transform. /// </summary> public override void Transform(Engine engine, Package package) { Logger.Debug("Transform"); Initialize(engine, package); int expandLinkDepth; package.TryGetParameter("expandLinkDepth", out expandLinkDepth, Logger); string[] modelBuilderTypeNames = GetModelBuilderTypeNames(); RenderedItem renderedItem = Engine.PublishingContext.RenderedItem; Page page = GetPage(); try { DataModelBuilderSettings settings = new DataModelBuilderSettings { ExpandLinkDepth = expandLinkDepth, GenerateXpmMetadata = IsXpmEnabled || IsPreview, Locale = GetLocale() }; DataModelBuilderPipeline modelBuilderPipeline = new DataModelBuilderPipeline(renderedItem, settings, modelBuilderTypeNames); PageModelData pageModel = modelBuilderPipeline.CreatePageModel(page); OutputJson = JsonSerialize(pageModel, IsPreview, DataModelBinder.SerializerSettings); } catch (Exception ex) { throw new DxaException($"An error occurred while rendering {page.FormatIdentifier()}", ex); } }
private PageModelData CreatePageModel(Page page, out RenderedItem renderedItem, IEnumerable <string> modelBuilderTypeNames = null) { renderedItem = CreateTestRenderedItem(page, page.PageTemplate); if (modelBuilderTypeNames == null) { modelBuilderTypeNames = _defaultModelBuilderTypeNames; } DataModelBuilderPipeline testModelBuilderPipeline = new DataModelBuilderPipeline( renderedItem, _defaultModelBuilderSettings, modelBuilderTypeNames, new TestLogger() ); PageModelData result = testModelBuilderPipeline.CreatePageModel(page); Assert.IsNotNull(result); OutputJson(result, DataModelBinder.SerializerSettings); return(result); }