module ActiveFedora::ServiceDefinitions

def self.included(mod)

def self.included(mod)
  # check that it's an AF base
  if mod.ancestors.include? ActiveFedora::Base
    mod.extend(ClassMethods)
    model_uri = mod.to_class_uri
  # load ContentModel, pull Sdef pointers
    begin
      cmodel = ActiveFedora::ContentModel.find(mod.to_class_uri)
      sdef_pids = cmodel.ids_for_outbound(:has_service).collect { |uri|
        uri.split('/')[-1]
      }
    rescue
      sdef_pids = []
    end
    unless sdef_pids.include? "fedora-system:3"
      sdef_pids << "fedora-system:3"
    end
    sdef_pids.each { |sdef_pid| mod.has_service_definition sdef_pid }
  end
end

def self.lookup_method(sdef_uri, method_name)

def self.lookup_method(sdef_uri, method_name)
  sdef_pid = sdef_uri.split('/')[-1]
  begin
    sdef = sdef_config[sdef_pid]
    return nil unless sdef
    result = nil
    sdef.each { |key, value| result = key if method_name == value }
  rescue
    return nil
  end
  return result
end

def self.sdef_config

def self.sdef_config
  @@methods ||= begin
    if defined? Rails
      config_path = Rails.root.join('config','service_mappings.yml')
    else
      config_path = 'config/service_mappings.yml'
    end
    YAML::load(File.open(config_path))[:service_mapping]
  end
  @@methods
end