예제 #1
0
        public void AddDuplicateField()
        {
            var record = new RecordSchema("TestRecord");
            var field  = new RecordSchema.Field("TestField");

            record.Add(field);
            Assert.Throws(typeof(AvroParseException), () => record.Add(field));
        }
예제 #2
0
        public void RemoveField()
        {
            var record = new RecordSchema("TestRecord");
            var field  = new RecordSchema.Field("TestField");

            record.Add(field);
            Assert.IsFalse(record.Remove("X"));
            Assert.IsTrue(record.Remove(field.Name));
            Assert.IsEmpty(record);
        }
예제 #3
0
        private static IList <RecordSchema.Field> ParseRecordFieldSchema(JArray jArray, IDictionary <string, NamedSchema> namedTypes, Stack <string> enclosingNamespace)
        {
            var keys = new HashSet <string>()
            {
                "type", "name"
            };
            var optionalKeys = new HashSet <string>()
            {
                "aliases", "doc", "default", "order"
            };
            var fields = new List <RecordSchema.Field>();

            foreach (var jToken in jArray)
            {
                JsonUtil.AssertKeys(jToken, keys, optionalKeys, out var tags);

                var name = JsonUtil.GetValue <string>(jToken, "name");
                var type = JsonUtil.GetValue <JToken>(jToken, "type");

                var fieldType         = ParseSchema(type, namedTypes, enclosingNamespace);
                var recordFieldSchema = new RecordSchema.Field(name, fieldType);
                recordFieldSchema.AddTags(tags);

                if (JsonUtil.TryGetValue <JArray>(jToken, "aliases", out var aliases))
                {
                    recordFieldSchema.Aliases = aliases.Values <string>().ToArray();
                }

                if (JsonUtil.TryGetValue <string>(jToken, "doc", out var doc))
                {
                    recordFieldSchema.Doc = doc;
                }

                if (JsonUtil.TryGetValue <JToken>(jToken, "default", out var def))
                {
                    recordFieldSchema.Default = def;
                }

                if (JsonUtil.TryGetValue <string>(jToken, "order", out var order))
                {
                    recordFieldSchema.Order = order;
                }

                fields.Add(recordFieldSchema);
            }
            return(fields);
        }