Definición de la Síntaxis de Atributos
Una síntaxis de atributo especifica la representación de los valores del atributo. Algunos ejemplos de síntaxis son Directory String, que especifica un string de carácteres no sensible a las mayúsculas codificado usando el conjunto de caracteres ISO 10646, y Octet String, que especifica una secuencia de octetos.
En el árbol de esquema, el nombre "SyntaxDefinition" está unido a un contexto plano que contiene objetos DirContext que representan definiciones de síntaxis en el esquema. Por ejemplo, si un directorio soporta la síntaxis 1.3.6.1.4.1.1466.115.121.1.15 (Directory String), el contexto "SyntaxDefinition" tendrá una unión con el nombre "1.3.6.1.4.1.1466.115.121.1.15" que está unida a un objeto DirContext.
Cada objeto en el contexto "SyntaxDefinition" tiene los atributos obligatorios y opcionales listados en la siguiente tabla:
| Identificador de Atributo |
Descripción del Valor del Atributo |
| NUMERICOID (obligatorio) |
Identificador de Objeto Único (OID) |
| DESC |
Descripción de la Síntaxis |
Estos atributos correponden con la definición de "SyntaxDescription" en la RFC 2252. Todos los valores de los atributos están representados por la clase java.lang.String.
Recuperar el Esquema de una Definición de Síntaxis de Atributo
Para recuperar el objeto esquema de una síntaxis de atributo, lo buscamos en el árbol del esquema. Por ejemplo, podremos obtener el objeto esquema que representa la síntaxis "Directory String" usando el siguiente código. El OID para el Directory String es 1.3.6.1.4.1.1466.115.121.1.15:
// Get the schema tree root
DirContext schema = ctx.getSchema("");
// Get the schema object for Directory String's syntax
DirContext dsSchema =
(DirContext)schema.lookup("SyntaxDefinition/1.3.6.1.4.1.1466.115.121.1.15");
Si obtenemos los atributos del objeto esquema dsSchema, veremos lo siguiente:
NUMERICOID: 1.3.6.1.4.1.1466.115.121.1.15
DESC: Directory String
No sólo podemos usar lookup() para recuperar objetos del árbol de esquema, también podemos usar métodos como list() o search().
Obtener una Definición de Síntaxis de Atributo
Dando un objeto Attribute que representa un atributo LDAP, podemos obtener su definición de síntaxis llamando a getAttributeSyntaxDefinition() sobre él. Por ejemplo, para recuperar el objeto de la síntaxis "Directory String", primero localizamos un atributo que use esa síntaxis (como "cn") y luego llamamos a getAttributeSyntaxDefinition() sobre él. Aquí tenemos un ejemplo:
// Get an attribute that uses that syntax
Attributes attrs = ctx.getAttributes("cn=Ted Geisel, ou=People",
new String[]{"cn"});
Attribute cnAttr = attrs.get("cn");
// Get its attribute syntax definition
DirContext dsSyntax = cnAttr.getAttributeSyntaxDefinition();
Crear, Modificar o Actualizar Definiciones de Síntaxis de Atributos
Dinámicamente crear, borrar o modificar síntaxis de atributos no tiene sentido. Incluso si el servidor LDAP nos permitiera añadir (o borrar) una síntaxis del esquema, se deben realizar los cambios necesarios en el servidor LDAP para soportar la nueva síntaxis. La mayoría de los servidores soportan un conjunto de síntaxis fijas. El cambio programático de este conjunto normalmente no es una caracterítica soportada.