Example #1
0
            /// <summary>
            /// Gets the <see cref="IPropertyReflector"/> properties that make up the unique key (lazy-loaded and cached for performance).
            /// </summary>
            /// <param name="ier">The parent <see cref="IEntityReflector"/>.</param>
            /// <returns>The <see cref="IPropertyReflector"/> properties.</returns>
            public IPropertyReflector[] GetPropertyReflectors(IEntityReflector ier)
            {
                if (propertyReflectors != null)
                {
                    return(propertyReflectors);
                }

                lock (_lock)
                {
                    if (propertyReflectors == null)
                    {
                        var prs = new IPropertyReflector[Properties.Length];
                        for (int i = 0; i < Properties.Length; i++)
                        {
                            prs[i] = ier.GetProperty(Properties[i]);
                            if (prs[i] == null)
                            {
                                // Special case where the unique key may be a reference data type; i.e. points to the 'NameSid' property.
                                prs[i] = ier.GetProperty(Properties[i] + "Sid");
                                if (prs[i] == null)
                                {
                                    throw new InvalidOperationException($"Type '{ier.Type.Name}' references a UniqueKey Property '{Properties[i]}' that does not exist.");
                                }
                            }
                        }

                        propertyReflectors = prs;
                    }
                }

                return(propertyReflectors);
            }
Example #2
0
        public PutEntityHttpRequestFactory(IEntityReflector reflector, ISerializer serializer)
        {
            EnsureArg.IsNotNull(reflector, nameof(reflector));
            Ensure.Any.IsNotNull(serializer, nameof(serializer));

            Reflector  = reflector;
            Serializer = serializer;
        }
        public EntityResponseMaterializer(ISerializer serializer, IEntityReflector entityReflector)
        {
            Ensure.That(serializer, "serializer").IsNotNull();
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            Serializer      = serializer;
            EntityReflector = entityReflector;
        }
        public EntityResponseMaterializer(ISerializer serializer, IEntityReflector entityReflector)
        {
            Ensure.Any.IsNotNull(serializer, nameof(serializer));
            Ensure.Any.IsNotNull(entityReflector, nameof(entityReflector));

            Serializer      = serializer;
            EntityReflector = entityReflector;
        }
        public PutEntityHttpRequestFactory(IEntityReflector reflector, ISerializer serializer)
        {
            Ensure.That(reflector, "reflector").IsNotNull();
            Ensure.That(serializer, "serializer").IsNotNull();

            Reflector  = reflector;
            Serializer = serializer;
        }
Example #6
0
        public DefaultSerializer(SerializationConfiguration configuration, IDocumentSerializationMetaProvider documentMetaProvider, IEntityReflector entityReflector = null)
        {
            Ensure.That(configuration, "configuration").IsNotNull();
            Ensure.That(documentMetaProvider, "documentMetaProvider").IsNotNull();

            Configuration        = configuration;
            DocumentMetaProvider = documentMetaProvider;
            EntityReflector      = entityReflector;
            InternalSerializer   = JsonSerializer.Create(Configuration.Settings);
        }
Example #7
0
        public DefaultSerializer(SerializationConfiguration configuration, IDocumentSerializationMetaProvider documentMetaProvider, IEntityReflector entityReflector = null)
        {
            EnsureArg.IsNotNull(configuration, nameof(configuration));
            EnsureArg.IsNotNull(documentMetaProvider, nameof(documentMetaProvider));

            Configuration        = configuration;
            DocumentMetaProvider = documentMetaProvider;
            EntityReflector      = entityReflector;
            InternalSerializer   = JsonSerializer.Create(Configuration.Settings);
        }
Example #8
0
        public DocumentJsonReader(TextReader reader, Type docType, IEntityReflector entityReflector)
            : base(reader)
        {
            EnsureArg.IsNotNull(docType, nameof(docType));
            EnsureArg.IsNotNull(entityReflector, nameof(entityReflector));

            DocType         = docType;
            EntityReflector = entityReflector;
            Reader          = reader;
            CloseInput      = false;
            DocTypeInfo     = docType.GetTypeInfo();
        }
Example #9
0
        public Entities(IConnection connection, EntityResponseFactory entityResponseFactory, ISerializer serializer, IEntityReflector entityReflector)
        {
            Ensure.That(connection, "connection").IsNotNull();
            Ensure.That(entityResponseFactory, "entityResponseFactory").IsNotNull();
            Ensure.That(serializer, "serializer").IsNotNull();
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            Connection            = connection;
            EntityResponseFactory = entityResponseFactory;
            Serializer            = serializer;
            EntityReflector       = entityReflector;
        }
Example #10
0
        public DocumentJsonReader(TextReader reader, Type docType, IEntityReflector entityReflector)
            : base(reader)
        {
            Ensure.That(docType, "docType").IsNotNull();
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            DocType         = docType;
            EntityReflector = entityReflector;
            Reader          = reader;
            CloseInput      = false;
            DocTypeInfo     = docType.GetTypeInfo();
        }
Example #11
0
        public DocumentJsonWriter(TextWriter textWriter, DocumentSerializationMeta documentMeta, SerializationConventions conventions, IEntityReflector entityReflector)
            : base(textWriter)
        {
            EnsureArg.IsNotNull(documentMeta, nameof(documentMeta));
            EnsureArg.IsNotNull(conventions, nameof(conventions));
            EnsureArg.IsNotNull(entityReflector, nameof(entityReflector));

            HasWrittenDocumentMeta = false;
            DocumentMeta           = documentMeta;
            Conventions            = conventions;
            ConventionWriter       = new SerializationConventionWriter(this);
            EntityReflector        = entityReflector;
            CloseOutput            = false;
        }
Example #12
0
        public DocumentJsonWriter(TextWriter textWriter, DocumentSerializationMeta documentMeta, SerializationConventions conventions, IEntityReflector entityReflector)
            : base(textWriter)
        {
            Ensure.That(documentMeta, "documentMeta").IsNotNull();
            Ensure.That(conventions, "conventions").IsNotNull();
            Ensure.That(conventions, "entityReflector").IsNotNull();

            HasWrittenDocumentMeta = false;
            DocumentMeta = documentMeta;
            Conventions = conventions;
            ConventionWriter = new SerializationConventionWriter(this);
            EntityReflector = entityReflector;
            CloseOutput = false;
        }
Example #13
0
        public DocumentJsonWriter(TextWriter textWriter, DocumentSerializationMeta documentMeta, SerializationConventions conventions, IEntityReflector entityReflector)
            : base(textWriter)
        {
            Ensure.That(documentMeta, "documentMeta").IsNotNull();
            Ensure.That(conventions, "conventions").IsNotNull();
            Ensure.That(conventions, "entityReflector").IsNotNull();

            HasWrittenDocumentMeta = false;
            DocumentMeta           = documentMeta;
            Conventions            = conventions;
            ConventionWriter       = new SerializationConventionWriter(this);
            EntityReflector        = entityReflector;
            CloseOutput            = false;
        }
Example #14
0
        public Entities(IDbClientConnection connection, ISerializer serializer, IEntityReflector entityReflector)
            : base(connection)
        {
            Ensure.That(serializer, "serializer").IsNotNull();
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            Serializer               = serializer;
            Reflector                = entityReflector;
            EntityResponseFactory    = new EntityResponseFactory(serializer, Reflector);
            GetHttpRequestFactory    = new GetEntityHttpRequestFactory();
            PostHttpRequestFactory   = new PostEntityHttpRequestFactory(Serializer);
            PutHttpRequestFactory    = new PutEntityHttpRequestFactory(Reflector, Serializer);
            DeleteHttpRequestFactory = new DeleteEntityHttpRequestFactory(Reflector);
        }
Example #15
0
        public DocumentJsonReader(TextReader reader, Type docType, IEntityReflector entityReflector)
            : base(reader)
        {
            Ensure.That(docType, "docType").IsNotNull();
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            DocType = docType;
            EntityReflector = entityReflector;
            Reader = reader;
            CloseInput = false;
#if PCL || vNext
            DocTypeInfo = docType.GetTypeInfo();
#endif
        }
Example #16
0
        public Entities(IDbConnection connection, ISerializer serializer, IEntityReflector entityReflector)
            : base(connection)
        {
            Ensure.Any.IsNotNull(serializer, nameof(serializer));
            Ensure.Any.IsNotNull(entityReflector, nameof(entityReflector));

            Serializer               = serializer;
            Reflector                = entityReflector;
            EntityResponseFactory    = new EntityResponseFactory(serializer, Reflector);
            GetHttpRequestFactory    = new GetEntityHttpRequestFactory();
            PostHttpRequestFactory   = new PostEntityHttpRequestFactory(Serializer);
            PutHttpRequestFactory    = new PutEntityHttpRequestFactory(Reflector, Serializer);
            DeleteHttpRequestFactory = new DeleteEntityHttpRequestFactory(Reflector);
            PurgeHttpRequestFactory  = new PurgeEntityHttpRequestFactory(Reflector, Serializer);
            PurgeResponseFactory     = new PurgeResponseFactory(Serializer);
        }
 public GetEntityHttpRequestFactory(IConnection connection, IEntitySerializer serializer, IEntityReflector reflector)
     : base(connection, serializer, reflector) {}
Example #18
0
 protected EntityHttpRequestFactoryBase(IConnection connection, IEntitySerializer serializer, IEntityReflector reflector)
     : base(connection)
 {
     Serializer = serializer;
     Reflector  = reflector;
 }
 public PutEntityHttpRequestFactory(IConnection connection, IEntitySerializer serializer, IEntityReflector reflector)
     : base(connection, serializer, reflector)
 {
 }
Example #20
0
        public EntitySerializationContractResolver(IEntityReflector entityReflector)
        {
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            EntityReflector = entityReflector;
        }
Example #21
0
 public EntityResponseFactory(ISerializer serializer, IEntityReflector entityReflector)
 {
     SuccessfulResponseMaterializer = new EntityResponseMaterializer(serializer, entityReflector);
     FailedResponseMaterializer     = new FailedEntityResponseMaterializer(serializer);
 }
Example #22
0
 protected ViewQueryResponseRowsDeserializerTests(IEntityReflector entityReflector)
 {
     SUT = new DefaultSerializer(new SerializationConfiguration(new SerializationContractResolver()), new DocumentSerializationMetaProvider(), entityReflector);
 }
 public SerializationContractResolver(IEntityReflector entityReflector)
     : base(true)
 {
     EntityReflector = entityReflector;
 }
        public EntitySerializationContractResolver(IEntityReflector entityReflector)
        {
            Ensure.That(entityReflector, "entityReflector").IsNotNull();

            EntityReflector = entityReflector;
        }
Example #25
0
        public DeleteEntityHttpRequestFactory(IEntityReflector reflector)
        {
            Ensure.Any.IsNotNull(reflector, nameof(reflector));

            Reflector = reflector;
        }
        public DeleteEntityHttpRequestFactory(IEntityReflector reflector)
        {
            Ensure.That(reflector, "reflector").IsNotNull();

            Reflector = reflector;
        }
Example #27
0
        /// <summary>
        /// Apply the merge from the json to the entity value.
        /// </summary>
        private static JsonEntityMergeResult MergeApply(JsonEntityMergeArgs args, IEntityReflector er, JToken json, object entity)
        {
            if (!json.HasValues)
            {
                return(JsonEntityMergeResult.SuccessNoChanges);
            }

            bool hasError   = false;
            bool hasChanged = false;

            foreach (var jp in json.Children <JProperty>())
            {
                // Get the corresponding property from the entity.
                var pr = er.GetJsonProperty(jp.Name);
                if (pr == null)
                {
                    if (args.Log(MessageItem.CreateMessage(jp.Path, MessageType.Warning, $"The JSON path is not valid for the entity.")) == JsonEntityMergeResult.Error)
                    {
                        hasError = true;
                    }

                    continue;
                }

                // Handle the intrinsic types.
                if (!pr.IsComplexType)
                {
                    if (jp.Value.Type == JTokenType.Array || jp.Value.Type == JTokenType.Object)
                    {
                        return(args.Log(MessageItem.CreateMessage(jp.Path, MessageType.Error, $"The JSON token is malformed and could not be parsed.")));
                    }

                    try
                    {
                        if (pr.SetValueFromJToken(entity, jp.Value))
                        {
                            hasChanged = true;
                        }
                    }
                    catch (FormatException fex)
                    {
                        return(args.Log(MessageItem.CreateMessage(jp.Path, MessageType.Error, $"The JSON token is malformed: {fex.Message}")));
                    }
                    catch (Exception)
                    {
                        throw;
                    }

                    continue;
                }

                // Handle complex types (objects, arrays, collections, etc).
                switch (MergeApplyComplex(args, pr, jp, entity))
                {
                case JsonEntityMergeResult.SuccessWithChanges:
                    hasChanged = true;
                    break;

                case JsonEntityMergeResult.Error:
                    hasError = true;
                    break;
                }
            }

            return(hasError ? JsonEntityMergeResult.Error : hasChanged?JsonEntityMergeResult.SuccessWithChanges : JsonEntityMergeResult.SuccessNoChanges);
        }