class ActiveFedora::SolrInstanceLoader

Responsible for loading an ActiveFedora::Base proxy from a Solr document.

def active_fedora_class

def active_fedora_class
  @active_fedora_class ||= ActiveFedora::QueryResultBuilder.class_from_solr_document(solr_doc)
end

def allocate_object

def allocate_object
  active_fedora_class.allocate.init_with_json(profile_json)
end

def initialize(context, id, solr_doc = nil)

def initialize(context, id, solr_doc = nil)
  @context = context
  @id = id
  @solr_doc = solr_doc
  validate_solr_doc_and_id!(@solr_doc)
end

def object

def object
  return @object if @object
  @object = allocate_object
  @object.readonly!
  @object.freeze
  @object
end

def profile_json

def profile_json
  @profile_json ||= begin
    profile_json = Array(solr_doc[ActiveFedora::IndexingService.profile_solr_name]).first
    unless profile_json.present?
      raise ActiveFedora::ObjectNotFoundError, "Object #{id} does not contain a solrized profile"
    end
    profile_json
  end
end

def solr_doc

def solr_doc
  @solr_doc ||= begin
    result = context.find_with_conditions(id: id)
    if result.empty?
      raise ActiveFedora::ObjectNotFoundError, "Object #{id} not found in solr"
    end
    @solr_doc = result.first
    validate_solr_doc_and_id!(@solr_doc)
    @solr_doc
  end
end

def validate_solr_doc_and_id!(document)

def validate_solr_doc_and_id!(document)
  return true if document.nil?
  solr_id = document[SOLR_DOCUMENT_ID]
  if id != solr_id
    raise ActiveFedora::FedoraSolrMismatchError.new(id, solr_id)
  end
end