public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var json = JObject.Load(reader);
            var result = new NestedDataModelMultiTypeItem();

            var typeName = json.GetValue(nameof(result.TypeName), StringComparison.OrdinalIgnoreCase);
            var nestedDataModelType = _nestedDataModelTypeRepository.GetByName(typeName.Value<string>());

            result.TypeName = nestedDataModelType.Name;

            var modelData = json.GetValue(nameof(result.Model), StringComparison.OrdinalIgnoreCase);
            if (modelData == null) return result;

            using (var dataModelReader = modelData.CreateReader())
            {
                result.Model = (INestedDataModel)serializer.Deserialize(dataModelReader, nestedDataModelType);
            }

            return result;
        }
Ejemplo n.º 2
0
        public Task <NestedDataModelSchema> ExecuteAsync(GetNestedDataModelSchemaByNameQuery query, IExecutionContext executionContext)
        {
            NestedDataModelSchema result = null;

            if (string.IsNullOrWhiteSpace(query.Name))
            {
                return(Task.FromResult(result));
            }

            var dataModelType = _nestedDataModelRepository.GetByName(query.Name);

            if (dataModelType == null)
            {
                return(Task.FromResult(result));
            }

            result = _nestedDataModelSchemaMapper.Map(dataModelType);

            return(Task.FromResult(result));
        }
Ejemplo n.º 3
0
        public Task <IDictionary <string, NestedDataModelSchema> > ExecuteAsync(GetNestedDataModelSchemaByNameRangeQuery query, IExecutionContext executionContext)
        {
            IDictionary <string, NestedDataModelSchema> result = null;

            if (EnumerableHelper.IsNullOrEmpty(query.Names))
            {
                return(Task.FromResult(result));
            }

            result = new Dictionary <string, NestedDataModelSchema>(StringComparer.OrdinalIgnoreCase);

            foreach (var name in query.Names.Distinct(StringComparer.OrdinalIgnoreCase))
            {
                var dataModelType            = _nestedDataModelRepository.GetByName(name);
                NestedDataModelSchema schema = null;
                if (dataModelType != null)
                {
                    schema = _nestedDataModelSchemaMapper.Map(dataModelType);
                }
                result.Add(name, schema);
            }

            return(Task.FromResult(result));
        }