| Module | ActiveLdap::ObjectClass |
| In: |
lib/active_ldap/object_class.rb
|
# File lib/active_ldap/object_class.rb, line 3 3: def self.included(base) 4: base.extend(ClassMethods) 5: end
# File lib/active_ldap/object_class.rb, line 10
10: def add_class(*target_classes)
11: replace_class((classes + target_classes.flatten).uniq)
12: end
# File lib/active_ldap/object_class.rb, line 30
30: def classes
31: (get_attribute('objectClass', true) || []).dup
32: end
# File lib/active_ldap/object_class.rb, line 14
14: def ensure_recommended_classes
15: add_class(self.class.recommended_classes)
16: end
# File lib/active_ldap/object_class.rb, line 18
18: def remove_class(*target_classes)
19: replace_class((classes - target_classes.flatten).uniq)
20: end
# File lib/active_ldap/object_class.rb, line 22
22: def replace_class(*target_classes)
23: new_classes = target_classes.flatten.uniq
24: assert_object_classes(new_classes)
25: if new_classes.sort != classes.sort
26: set_attribute('objectClass', new_classes)
27: end
28: end
# File lib/active_ldap/object_class.rb, line 65
65: def assert_have_all_required_classes(new_classes)
66: required_classes = self.class.required_classes - new_classes
67: unless required_classes.empty?
68: raise RequiredObjectClassMissed,
69: "Can't remove required objectClass: " +
70: required_classes.join(", ")
71: end
72: end
# File lib/active_ldap/object_class.rb, line 35
35: def assert_object_classes(new_classes)
36: assert_valid_object_class_value_type(new_classes)
37: assert_valid_object_class_value(new_classes)
38: assert_have_all_required_classes(new_classes)
39: end
# File lib/active_ldap/object_class.rb, line 54
54: def assert_valid_object_class_value(new_classes)
55: invalid_classes = new_classes.reject do |new_class|
56: schema.exist_name?("objectClasses", new_class)
57: end
58: unless invalid_classes.empty?
59: message = "unknown objectClass in LDAP server"
60: message = "#{message}: #{invalid_classes.join(', ')}"
61: raise ObjectClassError, message
62: end
63: end
# File lib/active_ldap/object_class.rb, line 41
41: def assert_valid_object_class_value_type(new_classes)
42: invalid_classes = new_classes.reject do |new_class|
43: new_class.is_a?(String)
44: end
45: unless invalid_classes.empty?
46: message = "Value in objectClass array is not a String"
47: invalid_classes_info = invalid_classes.collect do |invalid_class|
48: "#{invalid_class.class}:#{invalid_class.inspect}"
49: end.join(", ")
50: raise TypeError, "#{message}: #{invalid_classes_info}"
51: end
52: end