LDAP defines 8 different Schema Objects, that are used to define what we can store in a LDAP server, how what we store is organized, and which constraints are applied on those elements.
In the API, we also define 3 other SchemaObjects, which are necessary to control the values and to compare them. They are hard coded, and can be extended if needed.
Here are the 8 LDAP SchemaObjects and the 3 additional ones :
Name | Description |
---|---|
ObjectClasses (e) | Defines the permitted AttributeTypes of an entry |
AttributeTypes (...) | Defines the type of attributes we can store in an entry |
Syntaxes (e) | Defines the syntax that is applied to the AttributeType values |
MatchingRules (e) | The rules that are used to match AttributeType's values |
DITContentRules (e) | Defines the allowed or forbidden AttributeTypes and ObjectClasses |
DITStructureRules (e) | Defines the hierarchical relationships between entries |
NameForms (e) | Defines the AttributeTypes that may be use in a RDN |
MatchingRuleUses (e) | Defines the AttributeTypes that can be used for a MatchingRule |
SyntaxChecker (e) | The function that do the check on values |
Normalizer (e) | The function that normalize the values |
LdapComparator (e) | The function that compare two values |
The last three elements are ApacheDS specific.
All those elements have some tight relationships. The following schema expose all the relations between all those elements :
Here is the relation between the various Java classes that are implementing the various SchemaObjects elements :
As we can see, the 3 specific SchemaObjects are derived from a LoadableSchemaObject abstract class, which allows the developper to inject a new instance of one of those 3 SchemaObjects.
From teh developper point of view, the interesting methods are the following :
All those methods are available for all the SchemaObject. There are specific methods available for each specific SchemaObject, taht will be exposed in the dedicated pages.