| Class | ActiveLdap::Schema::ObjectClass |
| In: |
lib/active_ldap/schema.rb
|
| Parent: | Entry |
| super_classes | [R] |
# File lib/active_ldap/schema.rb, line 456
456: def initialize(name, schema)
457: super(name, schema, "objectClasses")
458: end
# File lib/active_ldap/schema.rb, line 472
472: def may(include_super_class=true)
473: if include_super_class
474: @all_may
475: else
476: @may
477: end
478: end
# File lib/active_ldap/schema.rb, line 464
464: def must(include_super_class=true)
465: if include_super_class
466: @all_must
467: else
468: @must
469: end
470: end
# File lib/active_ldap/schema.rb, line 460
460: def super_class?(object_class)
461: @super_classes.include?(object_class)
462: end
# File lib/active_ldap/schema.rb, line 523
523: def attribute(attribute_name, name=@name)
524: @schema.object_class_attribute(name, attribute_name)
525: end
# File lib/active_ldap/schema.rb, line 505
505: def collect_attributes
506: must = attribute('MUST').collect {|name| @schema.attribute(name)}
507: may = attribute('MAY').collect {|name| @schema.attribute(name)}
508:
509: all_must = must.dup
510: all_may = may.dup
511: @super_classes.each do |super_class|
512: all_must.concat(super_class.must(false))
513: all_may.concat(super_class.may(false))
514: end
515:
516: # Clean out the dupes.
517: all_must.uniq!
518: all_may.uniq!
519:
520: [must, may, all_must, all_may]
521: end
# File lib/active_ldap/schema.rb, line 481
481: def collect_info
482: @description = attribute("DESC")[0]
483: @super_classes = collect_super_classes
484: @must, @may, @all_must, @all_may = collect_attributes
485: end
# File lib/active_ldap/schema.rb, line 487
487: def collect_super_classes
488: super_classes = attribute('SUP')
489: loop do
490: start_size = super_classes.size
491: new_super_classes = []
492: super_classes.each do |super_class|
493: new_super_classes.concat(attribute('SUP', super_class))
494: end
495:
496: super_classes.concat(new_super_classes)
497: super_classes.uniq!
498: break if super_classes.size == start_size
499: end
500: super_classes.collect do |name|
501: @schema.object_class(name)
502: end
503: end