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