/// <summary> /// Performs the Transform. /// </summary> public override void Transform(Engine engine, Package package) { Logger.Debug("Transform"); Initialize(engine, package); bool includeComponentTemplateData; if (!package.TryGetParameter("includeComponentTemplateData", out includeComponentTemplateData, Logger)) { includeComponentTemplateData = true; // Default } int expandLinkDepth; package.TryGetParameter("expandLinkDepth", out expandLinkDepth, Logger); string[] modelBuilderTypeNames = GetModelBuilderTypeNames(); RenderedItem renderedItem = Engine.PublishingContext.RenderedItem; Component component = GetComponent(); ComponentTemplate ct = GetComponentTemplate(); try { DataModelBuilderSettings settings = new DataModelBuilderSettings { ExpandLinkDepth = expandLinkDepth, GenerateXpmMetadata = IsXpmEnabled || IsPreview }; DataModelBuilderPipeline modelBuilderPipeline = new DataModelBuilderPipeline(renderedItem, settings, modelBuilderTypeNames); EntityModelData entityModel = modelBuilderPipeline.CreateEntityModel(component, includeComponentTemplateData ? ct : null); string entityModelJson = JsonSerialize(entityModel, IsPreview, DataModelBinder.SerializerSettings); Item outputItem = Package.CreateStringItem(ContentType.Text, entityModelJson); Package.PushItem(Package.OutputName, outputItem); } catch (Exception ex) { throw new DxaException($"An error occurred while rendering {component.FormatIdentifier()} with {ct.FormatIdentifier()}", ex); } }
private EntityModelData CreateEntityModel(Component component, ComponentTemplate ct, out RenderedItem renderedItem, IEnumerable <string> modelBuilderTypeNames = null) { renderedItem = CreateTestRenderedItem(component, ct); if (modelBuilderTypeNames == null) { modelBuilderTypeNames = _defaultModelBuilderTypeNames; } DataModelBuilderPipeline testModelBuilderPipeline = new DataModelBuilderPipeline( renderedItem, _defaultModelBuilderSettings, modelBuilderTypeNames, new TestLogger() ); EntityModelData result = testModelBuilderPipeline.CreateEntityModel(component, ct); Assert.IsNotNull(result); OutputJson(result, DataModelBinder.SerializerSettings); return(result); }