module ActiveFedora::Model
def self.class_exists?(class_name)
def self.class_exists?(class_name) klass = class_name.constantize return klass.is_a?(Class) rescue NameError return false end
def self.classname_from_uri(uri)
def self.classname_from_uri(uri) local_path = uri.split('/')[1] parts = local_path.split(':') return parts[-1].split(/_/).map(&:camelize).join('::'), parts[0] end
def self.from_class_uri(uri)
-
(Class, False)
- the class of the model or false, if it does not exist
def self.from_class_uri(uri) model_value, pid_ns = classname_from_uri(uri) raise "model URI incorrectly formatted: #{uri}" unless model_value unless class_exists?(model_value) logger.warn "#{model_value} is not a real class" return false end if model_value.include?("::") result = eval(model_value) else result = Kernel.const_get(model_value) end unless result.nil? model_ns = (result.respond_to? :pid_namespace) ? result.pid_namespace : ContentModel::CMODEL_NAMESPACE if model_ns != pid_ns logger.warn "Model class namespace '#{model_ns}' does not match uri: '#{uri}'" end end result end
def self.included(klass) # :nodoc:
def self.included(klass) # :nodoc: klass.extend(ClassMethods) end
def create_property_getter(property) # :nodoc:
def create_property_getter(property) # :nodoc: class_eval <<-END, __FILE__, __LINE__ def #{property.name} attribute_get("#{property.name}") end END end
def create_property_setter(property)# :nodoc:
def create_property_setter(property)# :nodoc: class_eval <<-END, __FILE__, __LINE__ def #{property.name}=(value) attribute_set("#{property.name}", value) end END end