lib/avro/builder/definition_cache.rb in avro-builder-0.16.1 vs lib/avro/builder/definition_cache.rb in avro-builder-0.16.2

- old
+ new

@@ -1,5 +1,7 @@ +# frozen_string_literal: true + module Avro module Builder # This class is used to cache previously defined schema objects # preventing direct access via the DSL. @@ -20,13 +22,11 @@ # Lookup an Avro schema object by name, possibly fully qualified by namespace. def lookup_named_type(key, namespace = nil) key_str = Avro::Name.make_fullname(key.to_s, namespace && namespace.to_s) object = schema_objects[key_str] - if object.nil? && !schema_names.include?(key.to_s) - object = builder.import(key) - end + object = builder.import(key) if object.nil? && !schema_names.include?(key.to_s) raise DefinitionNotFoundError.new(key) if object.nil? && namespace.nil? # Return object or retry without namespace object || lookup_named_type(key, nil) @@ -57,9 +57,10 @@ schema_names.add(name) end def store_by_fullname(object, fullname = object.fullname) raise DuplicateDefinitionError.new(fullname, object, schema_objects[fullname]) if schema_objects.key?(fullname) + schema_objects.store(fullname, object) end attr_reader :schema_objects, :schema_names, :builder end