Class LDAPSchema
- All Implemented Interfaces:
Serializable
fetchSchema method to retrieve
the schema used by a server. (The server must support LDAP v3
and the capability to retrieve the schema over the LDAP protocol.)
After you retrieve the schema, you can use this object to get the object class, attribute type, and matching rule descriptions in the schema. You can also add your own object classes, attribute types, and matching rules to the schema.
To remove any object classes, attribute types, and matching rules
that you added, call the remove methods of the
LDAPObjectClassSchema, LDAPAttributeSchema,
and LDAPMatchingRuleSchema classes. (This method is
inherited from the LDAPSchemaElement class.)
The following class is an example of an LDAP client that can fetch the schema, get and print object class descriptions and attribute type descriptions, and add object classes and attribute types to the schema over the LDAP protocol.
import netscape.ldap.*;
public class TestSchema {
public static void main( String[] args ) {
String HOSTNAME = "ldap.netscape.com";
int PORT_NUMBER = DEFAULT_PORT;
String ROOT_DN = "cn=Directory Manager";
String ROOT_PASSWORD = "23skidoo";
LDAPConnection ld = new LDAPConnection();
// Construct a new LDAPSchema object to get the schema.
LDAPSchema dirSchema = new LDAPSchema();
try {
// Connect to the server.
ld.connect( HOSTNAME, PORT_NUMBER );
// Get the schema from the directory.
dirSchema.fetchSchema( ld );
// Get and print the inetOrgPerson object class description.
LDAPObjectClassSchema objClass = dirSchema.getObjectClass(
"inetOrgPerson" );
if ( objClass != null ) {
System.out.println("inetOrgPerson := "+objClass.toString());
}
// Get and print the definition of the userPassword attribute.
LDAPAttributeSchema attrType = dirSchema.getAttribute(
"userpassword" );
if ( attrType != null ) {
System.out.println("userPassword := " + attrType.toString());
}
// Create a new object class definition.
String[] requiredAttrs = {"cn", "mail"};
String[] optionalAttrs = {"sn", "phoneNumber"};
LDAPObjectClassSchema newObjClass =
new LDAPObjectClassSchema( "newInetOrgPerson",
"1.2.3.4.5.6.7",
"top",
"Experiment",
requiredAttrs,
optionalAttrs );
// Authenticate as root DN to get permissions to edit the schema.
ld.authenticate( ROOT_DN, ROOT_PASSWORD );
// Add the new object class to the schema.
newObjClass.add( ld );
// Create a new attribute type "hairColor".
LDAPAttributeSchema newAttrType =
new LDAPAttributeSchema( "hairColor",
"1.2.3.4.5.4.3.2.1",
"Blonde, red, etc",
LDAPAttributeSchema.cis,
false );
// Add a custom qualifier
newObjClass.setQualifier( "X-OWNER", "John Jacobson" );
// Add the new attribute type to the schema.
newAttrType.add( ld );
// Fetch the schema again to verify that changes were made.
dirSchema.fetchSchema( ld );
// Get and print the new attribute type.
newAttrType = dirSchema.getAttribute( "hairColor" );
if ( newAttrType != null ) {
System.out.println("hairColor := " + newAttrType.toString());
}
// Get and print the new object class.
newObjClass = dirSchema.getObjectClass( "newInetOrgPerson" );
if ( newObjClass != null ) {
System.out.println("newInetOrgPerson := " +newObjClass.toString());
}
ld.disconnect();
} catch ( Exception e ) {
System.err.println( e.toString() );
System.exit( 1 );
}
System.exit( 0 );
}
}
If you are using the Netscape Directory Server 3.0, you can also
verify that the class and attribute type have been added through
the directory server manager (go to Schema | Edit or View Attributes
or Schema | Edit or View Object Classes).
To remove the classes and attribute types added by the example,
see the examples under the LDAPSchemaElement class.
- Version:
- 1.0
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Hashtable<String, LDAPAttributeSchema> private Hashtable<String, LDAPDITContentRuleSchema> private Hashtable<String, LDAPMatchingRuleSchema> private Hashtable<String, LDAPNameFormSchema> private Hashtable<String, LDAPObjectClassSchema> (package private) static final longprivate Hashtable<Integer, LDAPDITStructureRuleSchema> private Hashtable<String, LDAPDITStructureRuleSchema> private Hashtable<String, LDAPSyntaxSchema> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddAttribute(LDAPAttributeSchema attrSchema) Add an attribute type schema definition to the current schema.voidAdd a content rule definition to the current schema.voidAdd a structure rule definition to the current schema.voidaddMatchingRule(LDAPMatchingRuleSchema matchSchema) Add a matching rule schema definition to the current schema.voidaddNameForm(LDAPNameFormSchema nameForm) Add a name form definition to the current schema.voidaddObjectClass(LDAPObjectClassSchema objectSchema) Adds an object class schema definition to the current schema.voidaddSyntax(LDAPSyntaxSchema syntaxSchema) Add a syntax schema definition to the current schema.voidRetrieve the entire schema from the root of a Directory Server.voidfetchSchema(LDAPConnection ld, String dn) Retrieve the schema for a specific entry.getAttribute(String name) Gets the definition of the attribute type with the specified name.Get an enumeration of the names of the attribute types in this schema.Gets an enumeration ofthe attribute type definitions in this schema.getDITContentRule(String name) Gets the definition of a content rule with the specified name.Get an enumeration of the names of the content rules in this schema.Get an enumeration of the content rules in this schema.getDITStructureRule(int ID) Gets the definition of a structure rule with the specified name.getDITStructureRule(String name) Gets the definition of a structure rule with the specified name.Get an enumeration of the names of the structure rules in this schema.Get an enumeration of the structure rules in this schema.getMatchingRule(String name) Gets the definition of a matching rule with the specified name.Get an enumeration of the names of the matching rules in this schema.Gets an enumeration ofthe matching rule definitions in this schema.getNameForm(String name) Gets the definition of a name form with the specified name.Get an enumeration of the names of the name forms in this schema.Get an enumeration of the name forms in this schema.getObjectClass(String name) Gets the definition of the object class with the specified name.Gets an enumeration ofthe object class definitions in this schema.Get an enumeration of the names of the object classes in this schema.(package private) static StringgetSchemaDN(LDAPConnection ld, String dn) Retrieve the DN of the schema definitions for a specific entry.Gets the definition of a syntax with the specified name.Get an enumeration of the syntaxes in this schema.Get an enumeration of the names of the syntaxes in this schema.protected voidinitialize(LDAPEntry entry) Extract all schema elements from subschema entry(package private) static booleanRead one attribute definition from a server to determine if attribute syntaxes are quoted (a bug, present in Netscape and Novell servers).(package private) static booleanisSyntaxQuoted(String raw) Parses an attribute schema definition to see if the SYNTAX value is quoted.static voidFetch the schema from the LDAP server at the specified host and port, and print out the schema (including descriptions of its object classes, attribute types, and matching rules).private static voidprintEnum(Enumeration<? extends LDAPSchemaElement> en) Helper for "main" to print out schema elements.private static LDAPEntryreadSchema(LDAPConnection ld, String dn) private static LDAPEntryreadSchema(LDAPConnection ld, String dn, String[] attrs) toString()Displays the schema (including the descriptions of its object classes, attribute types, and matching rules) in an easily readable format (not the same as the format expected by an LDAP server).
-
Field Details
-
serialVersionUID
static final long serialVersionUID- See Also:
-
objectClasses
-
attributes
-
matchingRules
-
syntaxes
-
structureRulesByName
-
structureRulesById
-
contentRules
-
nameForms
-
-
Constructor Details
-
LDAPSchema
public LDAPSchema()Constructs a newLDAPSchemaobject. Once you construct the object, you can get the schema by callingfetchSchema.You can also print out the schema by using the
mainmethod. For example, you can enter the following command:java netscape.ldap.LDAPSchema myhost.mydomain.com 389
Note that you need to callfetchSchemato get the schema from the server. Constructing the object does not fetch the schema.- See Also:
-
LDAPSchema
-
-
Method Details
-
addObjectClass
Adds an object class schema definition to the current schema. You can also add object class schema definitions by calling theaddmethod of your newly constructedLDAPObjectClassSchemaobject.To remove an object class schema definition that you have added, call the
getObjectClassmethod to get theLDAPObjectClassSchemaobject representing your object class and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPObjectClassSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
objectSchema-LDAPObjectClassSchemaobject representing the object class schema definition to add- See Also:
-
addAttribute
Add an attribute type schema definition to the current schema. You can also add attribute type schema definitions by calling theaddmethod of your newly constructedLDAPAttributeSchemaobject.To remove an attribute type schema definition that you have added, call the
getAttributemethod to get theLDAPAttributeSchemaobject representing your attribute type and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPAttributeSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
attrSchema-LDAPAttributeSchemaobject representing the attribute type schema definition to add- See Also:
-
addMatchingRule
Add a matching rule schema definition to the current schema. You can also add matching rule schema definitions by calling theaddmethod of your newly constructedLDAPMatchingRuleSchemaobject.To remove an attribute type schema definition that you have added, call the
getMatchingRulemethod to get theLDAPMatchingRuleSchemaobject representing your matching rule and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPMatchingRuleSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
matchSchema-LDAPMatchingRuleSchemaobject representing the matching rule schema definition to add- See Also:
-
addSyntax
Add a syntax schema definition to the current schema. You can also add syntax schema definitions by calling theaddmethod of your newly constructedLDAPSyntaxSchemaobject.To remove a syntax schema definition that you have added, call the
getSyntaxmethod to get theLDAPSyntaxSchemaobject representing your syntax type and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPSyntaxSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
syntaxSchema-LDAPSyntaxSchemaobject representing the syntax schema definition to add- See Also:
-
addDITStructureRule
Add a structure rule definition to the current schema. You can also add structure rule definitions by calling theaddmethod of your newly constructedLDAPDITStructureRuleSchemaobject.To remove a structure rule definition that you have added, call the
getDITStructureRulemethod to get theLDAPDITStructureRuleSchemaobject representing your rule and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPSyntaxSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
rule-LDAPDITStructureRuleSchemaobject representing the structure rule definition to add- See Also:
-
addDITContentRule
Add a content rule definition to the current schema. You can also add content rule definitions by calling theaddmethod of your newly constructedLDAPDITContentRuleSchemaobject.To remove a content rule definition that you have added, call the
getDITContentRulemethod to get theLDAPDITContentRuleSchemaobject representing your rule and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPSyntaxSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
rule-LDAPDITContentRuleSchemaobject representing the content rule definition to add- See Also:
-
addNameForm
Add a name form definition to the current schema. You can also add name form definitions by calling theaddmethod of your newly constructedLDAPNameFormSchemaobject.To remove a name form definition that you have added, call the
getNameFormmethod to get theLDAPNameFormSchemaobject representing your nameForm type and call theremovemethod.NOTE: For information on the
addandremovemethods ofLDAPNameFormSchema, see the documentation forLDAPSchemaElement. (These methods are inherited fromLDAPSchemaElement.)- Parameters:
nameForm-LDAPNameFormSchemaobject representing the name form definition to add- See Also:
-
getObjectClasses
Gets an enumeration ofthe object class definitions in this schema.- Returns:
- an enumeration of object class definitions.
-
getAttributes
Gets an enumeration ofthe attribute type definitions in this schema.- Returns:
- an enumeration of attribute type definitions.
-
getMatchingRules
Gets an enumeration ofthe matching rule definitions in this schema.- Returns:
- an enumeration of matching rule definitions.
-
getSyntaxes
Get an enumeration of the syntaxes in this schema.- Returns:
- an enumeration of syntax objects
-
getDITStructureRules
Get an enumeration of the structure rules in this schema.- Returns:
- an enumeration of structure rule objects
-
getDITContentRules
Get an enumeration of the content rules in this schema.- Returns:
- an enumeration of content rule objects
-
getNameForms
Get an enumeration of the name forms in this schema.- Returns:
- an enumeration of name form objects
-
getObjectClass
Gets the definition of the object class with the specified name.- Parameters:
name- name of the object class to find- Returns:
- an
LDAPObjectClassSchemaobject representing the object class definition, ornullif not found.
-
getAttribute
Gets the definition of the attribute type with the specified name.- Parameters:
name- name of the attribute type to find- Returns:
- an
LDAPAttributeSchemaobject representing the attribute type definition, ornullif not found.
-
getMatchingRule
Gets the definition of a matching rule with the specified name.- Parameters:
name- name of the matching rule to find- Returns:
- an
LDAPMatchingRuleSchemaobject representing the matching rule definition, ornullif not found.
-
getSyntax
Gets the definition of a syntax with the specified name.- Parameters:
name- name of the syntax to find- Returns:
- an
LDAPSyntaxSchemaobject representing the syntax definition, ornullif not found.
-
getDITStructureRule
Gets the definition of a structure rule with the specified name.- Parameters:
name- name of the rule to find- Returns:
- an
LDAPDITStructureRuleSchemaobject representing the rule, ornullif not found.
-
getDITStructureRule
Gets the definition of a structure rule with the specified name.- Parameters:
ID- ID of the rule to find- Returns:
- an
LDAPDITStructureRuleSchemaobject representing the rule, ornullif not found.
-
getDITContentRule
Gets the definition of a content rule with the specified name.- Parameters:
name- name of the rule to find- Returns:
- an
LDAPDITContentRuleSchemaobject representing the rule, ornullif not found.
-
getNameForm
Gets the definition of a name form with the specified name.- Parameters:
name- name of the name form to find- Returns:
- an
LDAPNameFormSchemaobject representing the syntax definition, ornullif not found.
-
getObjectClassNames
Get an enumeration of the names of the object classes in this schema.- Returns:
- an enumeration of object class names (all lower-case).
-
getAttributeNames
Get an enumeration of the names of the attribute types in this schema.- Returns:
- an enumeration of attribute names (all lower-case).
-
getMatchingRuleNames
Get an enumeration of the names of the matching rules in this schema.- Returns:
- an enumeration of matching rule names (all lower-case).
-
getSyntaxNames
Get an enumeration of the names of the syntaxes in this schema.- Returns:
- an enumeration of syntax names (all lower-case).
-
getDITStructureRuleNames
Get an enumeration of the names of the structure rules in this schema.- Returns:
- an enumeration of names of the structure rule objects
-
getDITContentRuleNames
Get an enumeration of the names of the content rules in this schema.- Returns:
- an enumeration of names of the content rule objects
-
getNameFormNames
Get an enumeration of the names of the name forms in this schema.- Returns:
- an enumeration of names of name form objects
-
fetchSchema
Retrieve the schema for a specific entry.- Parameters:
ld- an active connection to a Directory Serverdn- the entry for which to fetch schema- Throws:
LDAPException- on failure.
-
initialize
Extract all schema elements from subschema entry- Parameters:
entry- entry containing schema definitions
-
fetchSchema
Retrieve the entire schema from the root of a Directory Server.- Parameters:
ld- an active connection to a Directory Server- Throws:
LDAPException- on failure.
-
isAttributeSyntaxStandardsCompliant
Read one attribute definition from a server to determine if attribute syntaxes are quoted (a bug, present in Netscape and Novell servers).- Parameters:
ld- an active connection to a Directory Server- Returns:
trueif standards-compliant.- Throws:
LDAPException- on failure.
-
isSyntaxQuoted
Parses an attribute schema definition to see if the SYNTAX value is quoted. It shouldn't be (according to RFC 2252), but it is for some LDAP servers. It will either be:
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15or
SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'- Parameters:
raw- Definition of the attribute type in the AttributeTypeDescription format.
-
toString
Displays the schema (including the descriptions of its object classes, attribute types, and matching rules) in an easily readable format (not the same as the format expected by an LDAP server). -
getSchemaDN
Retrieve the DN of the schema definitions for a specific entry.- Parameters:
ld- an active connection to a Directory Serverdn- the entry for which to fetch schema- Throws:
LDAPException- on failure.
-
readSchema
private static LDAPEntry readSchema(LDAPConnection ld, String dn, String[] attrs) throws LDAPException - Throws:
LDAPException
-
readSchema
- Throws:
LDAPException
-
printEnum
Helper for "main" to print out schema elements.- Parameters:
en- enumeration of schema elements
-
main
Fetch the schema from the LDAP server at the specified host and port, and print out the schema (including descriptions of its object classes, attribute types, and matching rules). The schema is printed in an easily readable format (not the same as the format expected by an LDAP server). For example, you can enter the following command to print the schema:java netscape.ldap.LDAPSchema myhost.mydomain.com 389
- Parameters:
args- the host name and the port number of the LDAP server (for example,netscape.ldap.LDAPSchema directory.netscape.com 389)
-