public static CdmDataTypeReference FromData(CdmCorpusContext ctx, JToken obj)
        {
            if (obj == null)
            {
                return(null);
            }

            bool    simpleReference = true;
            bool?   optional        = null;
            dynamic dataType;
            List <CdmTraitReferenceBase> appliedTraits = null;

            if (obj is JValue)
            {
                dataType = obj;
            }
            else
            {
                simpleReference = false;

                if (obj["optional"] != null)
                {
                    if (bool.TryParse(obj["optional"].ToString(), out bool optVal))
                    {
                        optional = optVal;
                    }
                }

                if (obj["dataTypeReference"] is JValue)
                {
                    dataType = (string)obj["dataTypeReference"];
                }
                else
                {
                    dataType = DataTypePersistence.FromData(ctx, obj["dataTypeReference"]);
                }
            }

            CdmDataTypeReference dataTypeReference = ctx.Corpus.MakeRef <CdmDataTypeReference>(CdmObjectType.DataTypeRef, dataType, simpleReference);

            if (optional != null)
            {
                dataTypeReference.Optional = optional;
            }

            if (!(obj is JValue))
            {
                appliedTraits = Utils.CreateTraitReferenceList(ctx, obj["appliedTraits"]);
            }

            Utils.AddListToCdmCollection(dataTypeReference.AppliedTraits, appliedTraits);

            return(dataTypeReference);
        }
Esempio n. 2
0
        /// <summary>
        /// Create a Type Attribute
        /// </summary>
        /// <returns></returns>
        public CdmTypeAttributeDefinition CreateTypeAttribute(string attributeName, string dataType, string purpose)
        {
            CdmDataTypeReference dataTypeRef = Corpus.MakeRef <CdmDataTypeReference>(CdmObjectType.DataTypeRef, dataType, simpleNameRef: false);

            CdmPurposeReference purposeRef = Corpus.MakeRef <CdmPurposeReference>(CdmObjectType.PurposeRef, purpose, simpleNameRef: false);

            CdmTypeAttributeDefinition attribute = Corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef, nameOrRef: attributeName, simpleNameRef: false);

            attribute.DataType = dataTypeRef;
            attribute.Purpose  = purposeRef;

            return(attribute);
        }
 public static dynamic ToData(CdmDataTypeReference instance, ResolveOptions resOpt, CopyOptions options)
 {
     return(CdmObjectRefPersistence.ToData(instance, resOpt, options));
 }