Exemple #1
0
        /// <summary>
        /// Tries to get JTokens ref, id, and type from <paramref name="node"/>. Sets NodeRefId, NodeId, and ServerTypeNameInfo in the returned JsonNodeInfo object
        /// </summary>
        public JsonNodeInfo VisitNode(JObject node, MappingContext mappingContext, NodeContext nodeContext)
        {
            var result = new JsonNodeInfo();

            JToken refToken;

            if (node.TryGetValue("$ref", out refToken))
            {
                result.NodeRefId = refToken.Value <String>();
                return(result);
            }

            JToken idToken;

            if (node.TryGetValue("$id", out idToken))
            {
                result.NodeId = idToken.Value <String>();
            }

            JToken typeToken;

            if (node.TryGetValue("$type", out typeToken))
            {
                var clrTypeName = typeToken.Value <String>();
                result.ServerTypeNameInfo = TypeNameInfo.FromClrTypeName(clrTypeName);
            }

            return(result);
        }
Exemple #2
0
        private Tuple <EntityKey, EntityKey> ToEntityKeys(KeyMapping keyMapping, MetadataStore metadataStore)
        {
            var serverTypeInfo       = TypeNameInfo.FromClrTypeName(keyMapping.EntityTypeName);
            var clientEntityTypeName = serverTypeInfo.ToClient(metadataStore).StructuralTypeName;
            var et     = metadataStore.GetEntityType(clientEntityTypeName);
            var oldKey = new EntityKey(et, keyMapping.TempValue);
            var newKey = new EntityKey(et, keyMapping.RealValue);

            return(Tuple.Create(oldKey, newKey));
        }
            public StructuralType GetStructuralType(Type clrType)
            {
                var      stName = TypeNameInfo.FromClrTypeName(clrType.FullName).Name;
                TypePair tp;

                if (_map.TryGetValue(stName, out tp))
                {
                    return(tp.StructuralType);
                }
                else
                {
                    _map.Add(stName, new TypePair()
                    {
                        ClrType = clrType
                    });
                    return(null);
                }
            }
        public EntityError Resolve(EntityManager em)
        {
            IsServerError = true;
            try {
                EntityType entityType = null;
                if (EntityTypeName != null)
                {
                    var stName = TypeNameInfo.FromClrTypeName(EntityTypeName).ToClient(em.MetadataStore).StructuralTypeName;
                    entityType = em.MetadataStore.GetEntityType(stName);
                    var ek = new EntityKey(entityType, KeyValues);
                    Entity = em.GetEntityByKey(ek);
                }


                if (entityType != null)
                {
                    if (PropertyName != null)
                    {
                        Property = entityType.Properties.FirstOrDefault(p => p.NameOnServer == PropertyName);
                        if (Property != null)
                        {
                            PropertyName = Property.Name;
                        }
                    }

                    var vc = new ValidationContext(this.Entity);
                    vc.Property = Property;
                    var veKey = (ErrorName ?? ErrorMessage) + (PropertyName ?? "");
                    var ve    = new ValidationError(null, vc, ErrorMessage, veKey);
                    ve.IsServerError = true;
                    this.Entity.EntityAspect.ValidationErrors.Add(ve);
                }
            } catch (Exception e) {
                ErrorMessage = (ErrorMessage ?? "") + ":  Unable to Resolve this error: " + e.Message;
            }
            return(this);
        }