| Class | ActiveLdap::Schema::ObjectClass |
| In: |
lib/active_ldap/schema.rb
|
| Parent: | Entry |
| UNWRITABLE_MUST_ATTRIBUTES | = | ["nTSecurityDescriptor"] |
| super_classes | [R] |
# File lib/active_ldap/schema.rb, line 599
599: def initialize(name, schema)
600: super(name, schema, "objectClasses")
601: end
# File lib/active_ldap/schema.rb, line 615
615: def may(include_super_class=true)
616: if include_super_class
617: @all_may
618: else
619: @may
620: end
621: end
# File lib/active_ldap/schema.rb, line 607
607: def must(include_super_class=true)
608: if include_super_class
609: @all_must
610: else
611: @must
612: end
613: end
# File lib/active_ldap/schema.rb, line 603
603: def super_class?(object_class)
604: @super_classes.include?(object_class)
605: end
# File lib/active_ldap/schema.rb, line 670
670: def attribute(attribute_name, name=@name)
671: @schema.object_class_attribute(name, attribute_name) +
672: @schema.dit_content_rule_attribute(name, attribute_name)
673: end
# File lib/active_ldap/schema.rb, line 649
649: def collect_attributes
650: must = attribute('MUST').reject do |name|
651: UNWRITABLE_MUST_ATTRIBUTES.include?(name)
652: end.uniq
653: must = must.collect {|name| @schema.attribute(name)}
654: may = attribute('MAY').uniq.collect {|name| @schema.attribute(name)}
655:
656: all_must = must.dup
657: all_may = may.dup
658: @super_classes.each do |super_class|
659: all_must.concat(super_class.must(false))
660: all_may.concat(super_class.may(false))
661: end
662:
663: # Clean out the dupes.
664: all_must.uniq!
665: all_may.uniq!
666:
667: [must, may, all_must, all_may]
668: end
# File lib/active_ldap/schema.rb, line 624
624: def collect_info
625: @description = attribute("DESC")[0]
626: @super_classes = collect_super_classes
627: @must, @may, @all_must, @all_may = collect_attributes
628: end
# File lib/active_ldap/schema.rb, line 630
630: def collect_super_classes
631: super_classes = attribute('SUP')
632: loop do
633: start_size = super_classes.size
634: new_super_classes = []
635: super_classes.each do |super_class|
636: new_super_classes.concat(attribute('SUP', super_class))
637: end
638:
639: super_classes.concat(new_super_classes)
640: super_classes.uniq!
641: break if super_classes.size == start_size
642: end
643: super_classes.collect do |name|
644: @schema.object_class(name)
645: end
646: end