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