An LDAP repository may have any number of item descriptors. Because the LDAP directory might contain any kind of data, the item descriptors may represent different kinds of items—people, computers, and mailing lists. Each item descriptor simply maps to a particular set of object classes specified in the LDAP schema.
The LDAP model also nicely supports hierarchies of item descriptors that map to object class subtypes. For example, suppose the inetorgPerson
object class has several subclasses, such as engineeringPerson
and salesPerson
. The engineeringPerson
class contains all the same attributes as the inetorgPerson
class, and adds a few, such as engineerType
and currentProject
. In the LDAP repository, you can define an engineer
item descriptor that inherits from the user
item descriptor but supports these additional attributes. The following example shows how a portion of an LDAP repository definition might describe such an engineer
item descriptor:
<item-descriptor name="engineer" parent="user"> <!-- object classes (added to parent classes) --> <object-class>engineeringPerson</object-class> <!-- properties (added to parent properties) --> <property name="engineerType" data-type="enumerated" default="products" description="Type of engineer: products or services"> <option>products</option> <option>services</option> </property> <property name="currentProject" data-type="string" description="Project or product the engineer is currently working on"/> <!-- child properties (override parent properties) --> <child-property name="department" default="Engineering"/> <!-- item creation (overrides parent behavior) --> ... </item-descriptor>
The optional parent
property of an <item-descriptor>
specifies that the item descriptor inherits all parent’s object classes and properties. Any additional object-class
and property
values are added to the list of the parent’s object classes and properties.
You can also specify <child-property>
tags to override any parent properties that have the same name. The only aspect of the parent property definition that can be overridden is the property’s default value. The property’s data-type
and other attributes must stay the same. The example above demonstrates how the <child-property>
tag can be used to assign the default value of Engineering
to the parent’s department
property; the salespeople
item descriptor might assign the default value of Sales
to the same property.