Esempio n. 1
0
        internal void UpdateFromJNode(JNode jNode)
        {
            var complexTypeName = jNode.Get <String>("complexTypeName");

            if (complexTypeName == null)
            {
                Check(DataType, DataType.FromName(jNode.Get <String>("dataType")), "DataType");
            }
            else
            {
                Check(ComplexType.Name, complexTypeName, "ComplexTypeName");
            }
            Check(this.IsScalar, jNode.Get <bool>("isScalar", true), "IsScalar");

            IsNullable = jNode.Get <bool>("isNullable", true);
            if (DataType != null)
            {
                DefaultValue = jNode.Get("defaultValue", DataType.ClrType);
            }
            IsPartOfKey        = jNode.Get <bool>("isPartOfKey", false);
            IsUnmapped         = jNode.Get <bool>("isUnmapped", false);
            IsAutoIncrementing = jNode.Get <bool>("isAutoIncrementing", false);
            ConcurrencyMode    = (ConcurrencyMode)Enum.Parse(typeof(ConcurrencyMode), jNode.Get <String>("conncurrencyMode", ConcurrencyMode.None.ToString()));
            MaxLength          = jNode.Get <int?>("maxLength");
            EnumTypeName       = jNode.Get <String>("enumType");
            _validators        = new ValidatorCollection(jNode.GetJNodeArray("validators"));
        }
Esempio n. 2
0
        internal void UpdateFromJNode(JNode jNode)
        {
            var shortName = jNode.Get <String>("shortName");
            var ns        = jNode.Get <String>("namespace");
            var name      = TypeNameInfo.QualifyTypeName(shortName, ns);
            var et        = MetadataStore.Instance.GetEntityType(name);

            Check(et.BaseEntityTypeName, jNode.Get <String>("baseTypeName"), "BaseEntityType");
            // For now this doesn't need to match
            et.IsAbstract = jNode.Get <bool>("isAbstract");

            et.AutoGeneratedKeyType = jNode.GetEnum <AutoGeneratedKeyType>("autoGeneratedKeyType");
            var drn = jNode.Get <String>("defaultResourceName");

            if (drn != null)
            {
                MetadataStore.Instance.SetResourceName(drn, et, true);
            }
            jNode.GetJNodeArray("dataProperties").ForEach(jn => {
                var dpName = jn.Get <String>("name");
                var dp     = et.GetDataProperty(dpName);
                dp.UpdateFromJNode(jn);
            });
            jNode.GetJNodeArray("navigationProperties").ForEach(jn => {
                var npName = jn.Get <String>("name");
                var np     = et.GetNavigationProperty(npName);
                np.UpdateFromJNode(jn);
            });
            et._validators = new ValidatorCollection(jNode.GetJNodeArray("validators"));
            // custom
        }
 internal void UpdateFromJNode(JNode jNode)
 {
     Check(EntityType.Name, jNode.Get <String>("entityTypeName"), "EntityTypeName");
     IsScalar        = jNode.Get <bool>("isScalar", true);
     AssociationName = jNode.Get <String>("associationName");
     _validators     = new ValidatorCollection(jNode.GetJNodeArray("validators"));
     SetFkNames(jNode.GetArray <String>("foreignKeyNames"));
     SetInvFkNames(jNode.GetArray <String>("invForeignKeyNames"));
     // custom
 }
Esempio n. 4
0
        /// <summary>
        /// For internal use only.
        /// </summary>
        /// <param name="jNode"></param>
        public DataService(JNode jNode)
        {
            ServiceName       = jNode.Get <String>("serviceName");
            HasServerMetadata = jNode.Get <bool>("hasServerMetadata");

            UseJsonP = jNode.Get <bool>("useJsonp");
            Adapter  = GetAdapter(jNode.Get <String>("adapterName"));
            // TODO: need to do the same as above with JsonResultsAdapter.
            JsonResultsAdapter = Adapter.JsonResultsAdapter;
            InitializeHttpClient(null);
        }
Esempio n. 5
0
        internal String GetPropertyNameFromJNode(JNode jn)
        {
            var dpName = jn.Get <String>("name");

            if (dpName == null)
            {
                var dpNameOnServer = jn.Get <String>("nameOnServer");
                dpName = MetadataStore.NamingConvention.ServerPropertyNameToClient(dpNameOnServer, this);
            }
            return(dpName);
        }
        internal void UpdateFromJNode(JNode jNode, bool isFromServer)
        {
            var etName = MetadataStore.GetStructuralTypeNameFromJNode(jNode, "entityTypeName", isFromServer);

            Check(EntityType.Name, etName, "EntityTypeName");
            IsScalar        = jNode.Get <bool>("isScalar", true);
            AssociationName = jNode.Get <String>("associationName");
            _validators     = new ValidatorCollection(jNode.GetJNodeArray("validators"));
            SetFkNames(jNode.GetArray <String>(isFromServer ? "foreignKeyNamesOnServer" : "foreignKeyNames"));
            SetInvFkNames(jNode.GetArray <String>(isFromServer ? "invForeignKeyNamesOnServer" : "invForeignKeyNames"));
            // custom
        }
Esempio n. 7
0
        internal void UpdateFromJNode(JNode jNode, bool isFromServer)
        {
            var complexTypeName = MetadataStore.GetStructuralTypeNameFromJNode(jNode, "complexTypeName", isFromServer);

            if (complexTypeName == null)
            {
                Check(DataType, DataType.FromName(jNode.Get <String>("dataType")), "DataType");
            }
            else
            {
                Check(ComplexType.Name, complexTypeName, "ComplexTypeName");
            }
            Check(this.IsScalar, jNode.Get <bool>("isScalar", true), "IsScalar");

            IsNullable = jNode.Get <bool>("isNullable", true);
            if (DataType != null)
            {
                DefaultValue = jNode.Get("defaultValue", DataType.ClrType);
                if (DefaultValue == null && !IsNullable)
                {
                    DefaultValue = DataType.DefaultValue;
                }
            }
            IsPartOfKey        = jNode.Get <bool>("isPartOfKey", false);
            IsUnmapped         = jNode.Get <bool>("isUnmapped", false);
            IsAutoIncrementing = jNode.Get <bool>("isAutoIncrementing", false);
            ConcurrencyMode    = (ConcurrencyMode)Enum.Parse(typeof(ConcurrencyMode), jNode.Get <String>("concurrencyMode", ConcurrencyMode.None.ToString()));
            MaxLength          = jNode.Get <int?>("maxLength");
            // EnumType is best determined on the client and not from the server
            // so for now just ignore the 'enumType'
            // var enumTypeName = jNode.Get<String>("enumType");

            _validators = new ValidatorCollection(jNode.GetJNodeArray("validators"));
        }
Esempio n. 8
0
        internal override void UpdateFromJNode(JNode jNode, bool isFromServer)
        {
            var name         = this.MetadataStore.GetStructuralTypeNameFromJNode(jNode, isFromServer);
            var et           = MetadataStore.GetEntityType(name);
            var baseTypeName = this.MetadataStore.GetStructuralTypeNameFromJNode(jNode, "baseTypeName", isFromServer);

            if (baseTypeName != null)
            {
                Check(et.BaseEntityTypeName, baseTypeName, "BaseEntityType");
            }
            // For now this doesn't need to match
            et.IsAbstract = jNode.Get <bool>("isAbstract");

            et.AutoGeneratedKeyType = jNode.GetEnum <AutoGeneratedKeyType>("autoGeneratedKeyType");
            var drn = jNode.Get <String>("defaultResourceName");

            if (drn != null)
            {
                MetadataStore.SetResourceName(drn, et, true);
            }
            jNode.GetJNodeArray("dataProperties").ForEach(jn => {
                var dpName = GetPropertyNameFromJNode(jn);
                var dp     = et.GetDataProperty(dpName);
                if (dp == null)
                {
                    MetadataStore.OnMetadataMismatch(name, dpName, MetadataMismatchTypes.MissingCLRDataProperty);
                    return;
                }
                dp.UpdateFromJNode(jn, isFromServer);
            });
            jNode.GetJNodeArray("navigationProperties").ForEach(jn => {
                var npName = GetPropertyNameFromJNode(jn);
                var np     = et.GetNavigationProperty(npName);
                if (np == null)
                {
                    MetadataStore.OnMetadataMismatch(name, npName, MetadataMismatchTypes.MissingCLRNavigationProperty);
                    return;
                }
                np.UpdateFromJNode(jn, isFromServer);
            });
            et._validators = new ValidatorCollection(jNode.GetJNodeArray("validators"));
            // custom
            // next 2 lines are only needed if importing 'native' breeze metadata.
            if (et.KeyProperties.Count == 1 && et.AutoGeneratedKeyType != AutoGeneratedKeyType.None)
            {
                et.KeyProperties.First().IsAutoIncrementing = true;
            }
        }
Esempio n. 9
0
        internal String GetStructuralTypeNameFromJNode(JNode jNode, bool isFromServer)
        {
            var    shortName = jNode.Get <String>("shortName");
            var    ns        = jNode.Get <String>("namespace");
            String stName;

            if (isFromServer)
            {
                stName = new TypeNameInfo(shortName, ns).ToClient(this).StructuralTypeName;
            }
            else
            {
                stName = TypeNameInfo.ToStructuralTypeName(shortName, ns);
            }
            return(stName);
        }
Esempio n. 10
0
        public void UpdateFromJNode(JNode jNode)
        {
            var shortName = jNode.Get <String>("shortName");
            var ns        = jNode.Get <String>("namespace");

            Name = TypeNameInfo.QualifyTypeName(shortName, ns);
            // BaseTypeName = jnode.Get<String>("baseTypeName");
            // IsAbstract = jnode.Get<bool>("isAbstract");
            jNode.GetJNodeArray("dataProperties").ForEach(jn => {
                var dpName = jn.Get <String>("name");
                var dp     = this.GetDataProperty(dpName);
                dp.UpdateFromJNode(jn);
            });
            // validators
            // custom
        }
        private void DeserializeFrom(JNode jNode)
        {
            MetadataVersion = jNode.Get <String>("metadataVersion");
            // may be more than just a name

            var ncNode = jNode.GetJNode("namingConvention");
            var nc     = FindOrCreateNamingConvention(ncNode);

            if (nc == null)
            {
                OnMetadataMismatch(null, null, MetadataMismatchType.MissingCLRNamingConvention, ncNode.ToString());
            }
            else
            {
                NamingConvention = nc;
            }

            // localQueryComparisonOptions
            jNode.GetJNodeArray("dataServices").Select(jn => new DataService(jn)).ForEach(ds => {
                if (GetDataService(ds.ServiceName) == null)
                {
                    AddDataService(ds);
                }
            });
            jNode.GetJNodeArray("structuralTypes")
            .ForEach(UpdateStructuralTypeFromJNode);

            jNode.GetMap <String>("resourceEntityTypeMap").ForEach(kvp => {
                var et = GetEntityType(kvp.Value);
                SetResourceName(kvp.Key, et);
            });
        }
Esempio n. 12
0
        internal EntityKey(JNode jn, MetadataStore metadataStore)
        {
            var etName = jn.Get <String>("entityType");

            EntityType = metadataStore.GetEntityType(etName);
            ClrType    = EntityType.ClrType;
            // coerce the incoming data
            Values = jn.GetArray("values", EntityType.KeyProperties.Select(kp => kp.ClrType)).ToArray();
        }
        private void UpdateStructuralTypeFromJNode(JNode jNode)
        {
            var shortName     = jNode.Get <String>("shortName");
            var ns            = jNode.Get <String>("namespace");
            var name          = TypeNameInfo.ToStructuralTypeName(shortName, ns);
            var isComplexType = jNode.Get <bool>("isComplexType", false);

            if (isComplexType)
            {
                var ct = MetadataStore.Instance.GetComplexType(name);
                ct.UpdateFromJNode(jNode);
            }
            else
            {
                var et = MetadataStore.Instance.GetEntityType(name);
                et.UpdateFromJNode(jNode);
            }
        }
Esempio n. 14
0
        internal SaveException(EntityManager em, JNode jn)
            : base()
        {
            _message = jn.Get <String>("ExceptionMessage") ?? "see EntityErrors";
            var entityErrors = jn.GetArray <EntityError>("Errors", "errors", "EntityErrors", "entityErrors");

            entityErrors  = entityErrors.Select(ee => ee.Resolve(em));
            _entityErrors = new SafeList <EntityError>(entityErrors);
            IsServerError = true;
        }
Esempio n. 15
0
        private void UpdateStructuralTypeFromJNode(JNode jNode, bool isFromServer)
        {
            var name  = GetStructuralTypeNameFromJNode(jNode, isFromServer);
            var stype = GetStructuralTypeCore(name);

            if (stype == null)
            {
                var isComplexType = jNode.Get <bool>("isComplexType", false);
                OnMetadataMismatch(name, null, isComplexType ?
                                   MetadataMismatchTypes.MissingCLRComplexType : MetadataMismatchTypes.MissingCLREntityType);
                return;
            }
            if (isFromServer)
            {
                stype.NameOnServer = $"{jNode.Get<string>("shortName")}:#{jNode.Get<string>("namespace")}";
            }

            stype.UpdateFromJNode(jNode, isFromServer);
        }
Esempio n. 16
0
        internal String GetStructuralTypeNameFromJNode(JNode jNode, String key, bool isFromServer)
        {
            var stName = jNode.Get <String>(key);

            if (stName != null && isFromServer)
            {
                stName = TypeNameInfo.FromStructuralTypeName(stName).ToClient(this).StructuralTypeName;
            }
            return(stName);
        }
Esempio n. 17
0
        private void DeserializeFrom(JNode jNode)
        {
            MetadataVersion = jNode.Get <String>("metadataVersion");
            // Name
            NamingConvention = NamingConvention.FromName(jNode.Get <String>("namingConvention"));
            // localQueryComparisonOptions
            jNode.GetJNodeArray("dataServices").Select(jn => new DataService(jn)).ForEach(ds => {
                if (GetDataService(ds.ServiceName) == null)
                {
                    AddDataService(ds);
                }
            });
            jNode.GetJNodeArray("structuralTypes")
            .ForEach(UpdateStructuralTypeFromJNode);

            jNode.GetMap <String>("resourceEntityTypeMap").ForEach(kvp => {
                var et = GetEntityType(kvp.Value);
                SetResourceName(kvp.Key, et);
            });
        }
Esempio n. 18
0
            private T InternableFromJNode(JNode jNode)
            {
                var  name = jNode.Get <String>("name");
                Type type;

                if (!TypeMap.TryGetValue(name, out type))
                {
                    return(null);
                }
                // Deserialize the object
                var vr = (T)jNode.ToObject(type, true);

                return(vr);
            }
Esempio n. 19
0
        private void UpdateStructuralTypeFromJNode(JNode jNode, bool isFromServer)
        {
            var name  = GetStructuralTypeNameFromJNode(jNode, isFromServer);
            var stype = GetStructuralTypeCore(name);

            if (stype == null)
            {
                var isComplexType = jNode.Get <bool>("isComplexType", false);
                OnMetadataMismatch(name, null, isComplexType ?
                                   MetadataMismatchType.MissingCLRComplexType : MetadataMismatchType.MissingCLREntityType);
                return;
            }

            stype.UpdateFromJNode(jNode, isFromServer);
        }
Esempio n. 20
0
        private Validator ValidatorFromJNode(JNode jNode)
        {
            var  vrName = jNode.Get <String>("name");
            Type vrType;

            if (!_validatorMap.TryGetValue(vrName, out vrType))
            {
                AddMessage("Unable to create a validator for " + vrName, MessageType.Warning);
                return(null);
            }
            // Deserialize the object
            var vr = (Validator)jNode.ToObject(vrType, true);

            return(vr);
        }
Esempio n. 21
0
        private void DeserializeFrom(JNode jNode, bool isFromServer)
        {
            MetadataVersion = jNode.Get <String>("metadataVersion");
            // may be more than just a name

            var ncNode = jNode.GetJNode("namingConvention");

            if (ncNode != null)
            {
                var nc = Configuration.Instance.FindOrCreateNamingConvention(ncNode);
                if (nc == null)
                {
                    OnMetadataMismatch(null, null, MetadataMismatchTypes.MissingCLRNamingConvention, ncNode.ToString());
                }
                else
                {
                    // keep any preexisting ClientServerNamespaceMap info
                    NamingConvention = nc.WithClientServerNamespaceMapping(this.NamingConvention.ClientServerNamespaceMap);
                }
            }

            // localQueryComparisonOptions
            jNode.GetJNodeArray("dataServices").Select(jn => new DataService(jn)).ForEach(ds => {
                if (GetDataService(ds.ServiceName) == null)
                {
                    AddDataService(ds);
                }
            });
            jNode.GetJNodeArray("structuralTypes")
            .ForEach(jn => UpdateStructuralTypeFromJNode(jn, isFromServer));

            jNode.GetMap <String>("resourceEntityTypeMap").ForEach(kvp => {
                var stName = kvp.Value;
                if (isFromServer)
                {
                    stName = TypeNameInfo.FromStructuralTypeName(stName).ToClient(this).StructuralTypeName;
                }
                // okIfNotFound because metadata may contain refs to types that were already excluded earlier in
                // UpdateStructuralTypeFromJNode
                var et = GetEntityType(stName, true);
                if (et != null)
                {
                    SetResourceName(kvp.Key, et);
                }
            });
        }