class ActiveFedora::LoadableFromJson::SolrBackedResource

def freeze

def freeze
  @hash.freeze
end

def get_values(k)

def get_values(k)
  @hash[k]
end

def initialize(model)

def initialize(model)
  @model = model
  @hash = {}
end

def insert(vals)

Parameters:
  • vals (Array) -- an array of 3 elements (subject, predicate, object) to insert
def insert(vals)
  _, pred, val = vals
  k = reflection(pred)
  if @hash[k].is_a?(Array)
    set_value(k, @hash[k] << val)
  else
    set_value(k, [val])
  end
end

def query(args = {})

def query(args = {})
  predicate = args[:predicate]
  reflection = reflection(predicate)
  FakeQuery.new(get_values(reflection))
end

def rdf_subject

def rdf_subject
  ::RDF::URI.new(nil)
end

def reflection(predicate)

Find the reflection on the model that uses the given predicate
def reflection(predicate)
  result = Array(@model.outgoing_reflections.find { |_key, reflection| reflection.predicate == predicate }).first
  return result if result
  fail "Unable to find reflection for #{predicate} in #{@model}"
end

def set_value(k, v)

resource, so cast everything back to an array.
It is expected that the singular filter gets applied after fetching the value from this
def set_value(k, v)
  @hash[k] = Array(v)
end

def to_s

def to_s
  @hash.to_s
end