public static CdmDocumentDefinition FromData(CdmCorpusContext ctx, string name, string nameSpace, string path, DocumentContent obj) { var doc = ctx.Corpus.MakeObject <CdmDocumentDefinition>(CdmObjectType.DocumentDef, name); doc.FolderPath = path; doc.Namespace = nameSpace; // set this as the current doc of the context for this operation ctx.UpdateDocumentContext(doc); if (!string.IsNullOrEmpty(obj.Schema)) { doc.Schema = obj.Schema; } if (DynamicObjectExtensions.HasProperty(obj, "JsonSchemaSemanticVersion") && !string.IsNullOrEmpty(obj.JsonSchemaSemanticVersion)) { doc.JsonSchemaSemanticVersion = obj.JsonSchemaSemanticVersion; } if (obj.Imports != null) { foreach (var importObj in obj.Imports) { doc.Imports.Add(ImportPersistence.FromData(ctx, importObj)); } } if (obj.Definitions != null) { for (int i = 0; i < obj.Definitions.Count; i++) { dynamic d = obj.Definitions[i]; if (d["dataTypeName"] != null) { doc.Definitions.Add(DataTypePersistence.FromData(ctx, d)); } else if (d["purposeName"] != null) { doc.Definitions.Add(PurposePersistence.FromData(ctx, d)); } else if (d["attributeGroupName"] != null) { doc.Definitions.Add(AttributeGroupPersistence.FromData(ctx, d)); } else if (d["traitName"] != null) { doc.Definitions.Add(TraitPersistence.FromData(ctx, d)); } else if (d["entityShape"] != null) { doc.Definitions.Add(ConstantEntityPersistence.FromData(ctx, d)); } else if (d["entityName"] != null) { doc.Definitions.Add(EntityPersistence.FromData(ctx, d)); } } } ctx.UpdateDocumentContext(null); return(doc); }