| Class | ActiveLdap::Schema::ObjectClass |
| In: |
lib/active_ldap/schema.rb
|
| Parent: | Entry |
| super_classes | [R] |
# File lib/active_ldap/schema.rb, line 565
565: def initialize(name, schema)
566: super(name, schema, "objectClasses")
567: end
# File lib/active_ldap/schema.rb, line 581
581: def may(include_super_class=true)
582: if include_super_class
583: @all_may
584: else
585: @may
586: end
587: end
# File lib/active_ldap/schema.rb, line 573
573: def must(include_super_class=true)
574: if include_super_class
575: @all_must
576: else
577: @must
578: end
579: end
# File lib/active_ldap/schema.rb, line 569
569: def super_class?(object_class)
570: @super_classes.include?(object_class)
571: end
# File lib/active_ldap/schema.rb, line 632
632: def attribute(attribute_name, name=@name)
633: @schema.object_class_attribute(name, attribute_name)
634: end
# File lib/active_ldap/schema.rb, line 614
614: def collect_attributes
615: must = attribute('MUST').collect {|name| @schema.attribute(name)}
616: may = attribute('MAY').collect {|name| @schema.attribute(name)}
617:
618: all_must = must.dup
619: all_may = may.dup
620: @super_classes.each do |super_class|
621: all_must.concat(super_class.must(false))
622: all_may.concat(super_class.may(false))
623: end
624:
625: # Clean out the dupes.
626: all_must.uniq!
627: all_may.uniq!
628:
629: [must, may, all_must, all_may]
630: end
# File lib/active_ldap/schema.rb, line 590
590: def collect_info
591: @description = attribute("DESC")[0]
592: @super_classes = collect_super_classes
593: @must, @may, @all_must, @all_may = collect_attributes
594: end
# File lib/active_ldap/schema.rb, line 596
596: def collect_super_classes
597: super_classes = attribute('SUP')
598: loop do
599: start_size = super_classes.size
600: new_super_classes = []
601: super_classes.each do |super_class|
602: new_super_classes.concat(attribute('SUP', super_class))
603: end
604:
605: super_classes.concat(new_super_classes)
606: super_classes.uniq!
607: break if super_classes.size == start_size
608: end
609: super_classes.collect do |name|
610: @schema.object_class(name)
611: end
612: end