Revision bd72aadb
Added by Marc Dequènes over 15 years ago
- ID bd72aadbfe61c004e7bddae7bb98950d5b669610
data/ldap_shadows/schema/object.yaml | ||
---|---|---|
"mapping":
|
||
type: map
|
||
required: true
|
||
name: Mapping
|
||
mapping:
|
||
=:
|
||
type: any
|
lib/ldap_shadows/controller.rb | ||
---|---|---|
class ObjectValidator < Kwalify::Validator
|
||
## hook method called by Validator#validate()
|
||
def validate_hook(value, rule, path, errors)
|
||
msg_list = []
|
||
|
||
case rule.name
|
||
when 'Mapping'
|
||
ne_params = value.keys.collect{|k| k.to_sym } - ActiveLdap::Base::VALID_LDAP_MAPPING_OPTIONS
|
||
unless ne_params.empty?
|
||
msg_list << _("nonexisting mapping parameters (%s)") % ne_params.join(", ")
|
||
end
|
||
|
||
when 'RelationMapping'
|
||
extra_params = [:type, :object]
|
||
|
||
if value['type'] == 'belongs_to'
|
||
ne_params = value.keys.collect{|k| k.to_sym } - ActiveLdap::Associations::ClassMethods::VALID_BELONGS_TO_OPTIONS - extra_params
|
||
unless ne_params.empty?
|
||
msg_list << _("nonexisting relation mapping parameters (%s)") % ne_params.join(", ")
|
||
end
|
||
unless value.has_key? 'many'
|
||
msg = "a 'belongs_to' relation needs a 'many' parameter"
|
||
errors << Kwalify::ValidationError.new(msg, path)
|
||
msg_list << _("a 'belongs_to' relation needs a 'many' parameter")
|
||
end
|
||
else
|
||
ne_params = value.keys.collect{|k| k.to_sym } - ActiveLdap::Associations::ClassMethods::VALID_HAS_MANY_OPTIONS - extra_params
|
||
unless ne_params.empty?
|
||
msg_list << _("nonexisting relation mapping parameters (%s)") % ne_params.join(", ")
|
||
end
|
||
unless value.has_key? 'primary_key'
|
||
msg = "a 'has_many' relation needs a 'primary_key' parameter"
|
||
errors << Kwalify::ValidationError.new(msg, path)
|
||
msg_list << _("a 'has_many' relation needs a 'primary_key' parameter")
|
||
end
|
||
end
|
||
end
|
||
|
||
msg_list.each do |msg|
|
||
errors << Kwalify::ValidationError.new(msg, path)
|
||
end
|
||
end
|
||
end
|
||
|
||
... | ... | |
obj_name = obj_name.to_sym
|
||
obj_def.recursive_symbolize_keys!
|
||
|
||
obj_mapping = obj_def[:mapping]
|
||
klass_name = self.class.object_name_to_klass_name(obj_name)
|
||
|
||
# create class
|
||
... | ... | |
klass.handle = obj_name
|
||
klass.presentation = obj_def[:presentation]
|
||
klass.mapper = self
|
||
klass.ldap_mapping obj_mapping.reject {|key, val| not ActiveLdap::Base::VALID_LDAP_MAPPING_OPTIONS.include?(key) }
|
||
klass.ldap_mapping obj_def[:mapping]
|
||
|
||
# store definition for later relations processing
|
||
@object_definitions[obj_name] = obj_def
|
Also available in: Unified diff
[evol] improve config #11 (improved object definition check #2)