class AvroPinions::SchemaRegistry

Public Class Methods

new() click to toggle source
# File lib/avro_pinions/schema_registry.rb, line 3
def initialize
  @cache = {}
end

Public Instance Methods

canonical_name(schema_name, namespace = "") click to toggle source
# File lib/avro_pinions/schema_registry.rb, line 13
def canonical_name(schema_name, namespace = "")
  if namespace.length > 0
    "#{namespace}.#{schema_name}"
  else
    schema_name
  end
end
load_schema(schema_name, namespace) click to toggle source
# File lib/avro_pinions/schema_registry.rb, line 21
def load_schema(schema_name, namespace)
  raise AvroPinions::NotFullyImplementedError.new("Please define how to load schemas")
end
schema(schema_name, namespace = "") click to toggle source
# File lib/avro_pinions/schema_registry.rb, line 7
def schema(schema_name, namespace = "")
  with_cache(schema_name, namespace) do
    load_schema(schema_name, namespace)
  end
end
with_cache(schema_name, namespace, &block) click to toggle source
# File lib/avro_pinions/schema_registry.rb, line 25
def with_cache(schema_name, namespace, &block)
  key = canonical_name(schema_name, namespace)

  unless @cache.has_key?(key)
    @cache[key] = block.call
  end

  @cache[key]
end