class Avro::Schema::RecordSchema
Attributes
doc[R]
fields[R]
Public Class Methods
make_field_objects(field_data, names, namespace=nil)
click to toggle source
# File lib/avro/schema.rb 300 def self.make_field_objects(field_data, names, namespace=nil) 301 field_objects, field_names, alias_names = [], Set.new, Set.new 302 field_data.each do |field| 303 if field.respond_to?(:[]) # TODO(jmhodges) wtffffff 304 type = field['type'] 305 name = field['name'] 306 default = field.key?('default') ? field['default'] : :no_default 307 order = field['order'] 308 doc = field['doc'] 309 aliases = field['aliases'] 310 new_field = Field.new(type, name, default, order, names, namespace, doc, aliases) 311 # make sure field name has not been used yet 312 if field_names.include?(new_field.name) 313 raise SchemaParseError, "Field name #{new_field.name.inspect} is already in use" 314 end 315 field_names << new_field.name 316 # make sure alias has not be been used yet 317 if new_field.aliases && alias_names.intersect?(new_field.aliases.to_set) 318 raise SchemaParseError, "Alias #{(alias_names & new_field.aliases).to_a} already in use" 319 end 320 alias_names.merge(new_field.aliases) if new_field.aliases 321 else 322 raise SchemaParseError, "Not a valid field: #{field}" 323 end 324 field_objects << new_field 325 end 326 field_objects 327 end
new(name, namespace, fields, names=nil, schema_type=:record, doc=nil, aliases=nil)
click to toggle source
Calls superclass method
Avro::Schema::NamedSchema::new
# File lib/avro/schema.rb 329 def initialize(name, namespace, fields, names=nil, schema_type=:record, doc=nil, aliases=nil) 330 if schema_type == :request || schema_type == 'request' 331 @type_sym = schema_type.to_sym 332 @namespace = namespace 333 @name = nil 334 @doc = nil 335 else 336 super(schema_type, name, namespace, names, doc, nil, aliases) 337 end 338 @fields = if fields 339 RecordSchema.make_field_objects(fields, names, self.namespace) 340 else 341 {} 342 end 343 end
Public Instance Methods
fields_by_alias()
click to toggle source
# File lib/avro/schema.rb 349 def fields_by_alias 350 @fields_by_alias ||= fields.each_with_object({}) do |field, hash| 351 if field.aliases 352 field.aliases.each do |a| 353 hash[a] = field 354 end 355 end 356 end 357 end
fields_hash()
click to toggle source
# File lib/avro/schema.rb 345 def fields_hash 346 @fields_hash ||= fields.inject({}){|hsh, field| hsh[field.name] = field; hsh } 347 end
to_avro(names=Set.new)
click to toggle source
Calls superclass method
Avro::Schema::NamedSchema#to_avro
# File lib/avro/schema.rb 359 def to_avro(names=Set.new) 360 hsh = super 361 return hsh unless hsh.is_a?(Hash) 362 hsh['fields'] = @fields.map {|f| f.to_avro(names) } 363 if type_sym == :request 364 hsh['fields'] 365 else 366 hsh 367 end 368 end