lib/avro/io.rb in avro-1.11.1 vs lib/avro/io.rb in avro-1.11.2
- old
+ new
@@ -388,47 +388,49 @@
read_record
end
def read_default_value(field_schema, default_value)
# Basically a JSON Decoder?
- case field_schema.type_sym
+ datum = case field_schema.type_sym
when :null
- return nil
+ nil
when :int, :long
- return Integer(default_value)
+ Integer(default_value)
when :float, :double
- return Float(default_value)
+ Float(default_value)
when :boolean, :enum, :fixed, :string, :bytes
- return default_value
+ default_value
when :array
read_array = []
default_value.each do |json_val|
item_val = read_default_value(field_schema.items, json_val)
read_array << item_val
end
- return read_array
+ read_array
when :map
read_map = {}
default_value.each do |key, json_val|
map_val = read_default_value(field_schema.values, json_val)
read_map[key] = map_val
end
- return read_map
+ read_map
when :union
- return read_default_value(field_schema.schemas[0], default_value)
+ read_default_value(field_schema.schemas[0], default_value)
when :record, :error
read_record = {}
field_schema.fields.each do |field|
json_val = default_value[field.name]
json_val = field.default unless json_val
field_val = read_default_value(field.type, json_val)
read_record[field.name] = field_val
end
- return read_record
+ read_record
else
fail_msg = "Unknown type: #{field_schema.type}"
raise AvroError, fail_msg
end
+
+ field_schema.type_adapter.decode(datum)
end
def skip_data(writers_schema, decoder)
case writers_schema.type_sym
when :null