Avro.RecordSchema.NewInstance C# (CSharp) Method

NewInstance() static private method

static private NewInstance ( Type type, JToken j, Names names ) : RecordSchema
type System.Type
j JToken
names Names
return RecordSchema
        internal static RecordSchema NewInstance(Type type, JToken j, Names names)
        {
            JToken jfields = j["fields"];

            if (null == jfields)
            {
                throw new SchemaParseException("'fields' cannot be null for record");
            }

            if (jfields.Type != JTokenType.Array) {
                throw new SchemaParseException("'fields' not an array for record");
            }

            Name name = GetName(j);
            IDictionary<string, Field> fields = new Dictionary<string, Field>();
            RecordSchema result = new RecordSchema(type, name, fields, names);
            foreach (JObject jfield in jfields)
            {
                string fieldName = JsonHelper.GetRequiredString(jfield, "name");
                Field field = createField(jfield, names);
                fields.Add(fieldName, field);
            }
            return result;
        }

Usage Example

        /// <summary>
        /// Parses the messages section of a protocol definition
        /// </summary>
        /// <param name="jmessage">messages JSON object</param>
        /// <param name="names">list of parsed names</param>
        /// <param name="encspace">enclosing namespace</param>
        /// <returns></returns>
        internal static Message Parse(JProperty jmessage, SchemaNames names, string encspace)
        {
            string name   = jmessage.Name;
            string doc    = JsonHelper.GetOptionalString(jmessage.Value, "doc");
            bool?  oneway = JsonHelper.GetOptionalBoolean(jmessage.Value, "one-way");

            PropertyMap  props  = Schema.GetProperties(jmessage.Value);
            RecordSchema schema = RecordSchema.NewInstance(Schema.Type.Record, jmessage.Value as JObject, props, names, encspace);

            JToken jresponse = jmessage.Value["response"];
            var    response  = Schema.ParseJson(jresponse, names, encspace);

            JToken      jerrors      = jmessage.Value["errors"];
            UnionSchema uerrorSchema = null;

            if (null != jerrors)
            {
                Schema errorSchema = Schema.ParseJson(jerrors, names, encspace);
                if (!(errorSchema is UnionSchema))
                {
                    throw new AvroException("");
                }

                uerrorSchema = errorSchema as UnionSchema;
            }

            return(new Message(name, doc, schema, response, uerrorSchema, oneway));
        }
All Usage Examples Of Avro.RecordSchema::NewInstance