org.apache.directory.shared.ldap.model.schema.package.html Maven / Gradle / Ivy
Contains interfaces and base classes for representing the LDAP schema domain
model. We model the following LDAP schema objects:
- attributeTypes
- dITContentRules
- dItStructureRules
- matchingRules
- matchingRuleUses
- nameForms
- objectClasses
- syntaxes
An interface is defined for each type of schema object. All these interfaces
extend from a common root interface: SchemaObject. Other interfaces have been
added to associate some useful behavoir with these objects. These interfaces
are listed below:
- Normalizer
- Comparator [from SDK]
- SyntaxChecker
These interfaces are primitive constructs that help define what some schema
objects like a syntax or a matchingRule is in terms of use. Namely these
constructs determine how schema objects are applied. For example a syntax exists
not only as an OID to be implemented internally by some directory server. It
exists to constrain the values of attributes which are associated with the
syntax. This function is defined by the SyntaxChecker interface. All syntaxes
have a value checker that can apply the syntax to the value to determine if the
value is accepted by the syntax. A SyntaxChecker is nothing but a lexical
pattern matcher like a regular expression.
Normalizers and Comparators play an important role in controlling matching and
hence giving meaning to matchingRules. They respectively define how values are
to be reduced to a canonical form and how they are to be compared to match
filter assertions to values while conducting a search. This is a very important
aspect of the directory and unfortunately it is the least understood. These
two interfaces give tangible meaning to what a matchingRule is about making a
matchingRule definition more than just an OID tag or place holder but something
that can be used.
The extra interfaces above are not SchemaObjects although they play a critical
role in defining how schema objects are applied. SchemaObjects are those that
you actually get back from a directory server and are part of the protocol.
Within a server environment the relevant schema objects will have valid
SyntaxCheckers, Normalizers and Comparators. However outside of the this
environment these properties MAY be undefined. We hope to make it defined
on the client side as well if desired.
Here's what the OID of each element means according to [MODELS
]:
Schema Description Numericoid Description
ObjectClass
numericoid is object identifier assigned to this object class;
AttributeType
numericoid is object identifier assigned to this attribute type;
MatchingRule
numericoid is object identifier assigned to this matching rule;
MatchingRuleUse
numericoid is the object identifier of the matching rule associated
with this matching rule use description; matching rule uses are [0-1]:[1]
cardinality with their respective matchingRule.
Syntax
numericoid is object identifier assigned to this LDAP syntax;
DitContentRule
numericoid is the object identifier of the structural object class
associated with this DIT content rule;
DitStructureRule
this now something very special and needs further investigation
NameForm
numericoid is object identifier which identifies this name form;