Sistema de Nombrado en Java (JNDI) y II

Una definici�n de tipo de atributo especifica la s�ntaxis de un atributo y c�mo se ordenan y comparan los atributos de ese tipo. Los tipos de atributos en el directorio forman un �rbol de clases. Por ejemplo, el tipo de atributo "commonName" es una subclase del tipo de atributo "name". Sin embargo, no muchos servidores LDAP soportan subclasificaci�n de atributos.

En el �rbol de esquema, el nombre "AttributeDefinition" est� unido a un contexto plano que contiene objetos DirContext que representan definiciones del tipos de atributos en el esquema. Por ejemplo, si un directorio soporta un atributo "commonName", el contexto "AttributeDefinition" tendr� una uni�n con el nombre "commonName" que est� unido a un objeto DirContext.

Cada objeto del contexto "AttributeDefinition" tiene los atributos obligatorios y opcionales listados en la siguiente tabla:

Identificador de Atributo Descripci�n del Valor de Atributo
NUMERICOID (obligatorio) Identificador de Objeto �nico (OID)
NAME Nombre del Atributo
DESC Descripci�n del Atributo
OBSOLETE "true" si es obsoleto; "false" o ausente si no lo es
SUP Nombre del tipo de atributo superior del que se deriba el tipo de atributo.
EQUALITY Nombre o OID de la regla de correspondencia si la igualdad de correspondencia est� permitida; ausente si no lo est�.
ORDERING Nombre o OID de la regla de correspondencia si est� permitida la ordenaci�n; ausente si no lo est�.
SUBSTRING Nombre o OID de la regla de correspondencia si est� permitida la correspondencia de sub-string; ausente si no lo est�.
SYNTAX OID num�rico de la s�ntaxis de los valores de este tipo.
SINGLE-VALUE "true" si el atributo no es multi-valor; "false" o ausente si lo es.
COLLECTIVE "true" si el atributo es colectivo; "false" o ausente si no lo es.
NO-USER-MODIFICATION "true" si el atributo no es modificable por el usuario; "false" o ausente si lo es.
USAGE Descripci�n del uso del atributo.

Estos atributos corresponden a la definci�n de "AttributeTypeDescription" en la RFC 2252. Todos los valores de atributos est�n representados por la clase java.lang.String. Algunos directorios no publican todos los datos del esquema. Por ejemplo, el Netscape Directory Server v4.1 no publica las reglas de igualdad, ordenaci�n y sustring para sus definiciones de atributos aunque el servidor si las soporta para ciertos atributos. En estos casos, los objetos esquema no describen completamente las definiciones de atributos.

.�Recuperar el Objeto Esquema de una Definici�n de Tipo de Atributo

Para recuperar el objeto esquema de una definici�n de tipo de atributo, la buscamos en el �rbol de esquema. Por ejemplo, podemos obtener el objeto esquema que representa el atributo "cn" usando el siguiente c�digo:

// Get the schema tree root
DirContext schema = ctx.getSchema("");

// Get the schema object for "cn"
DirContext cnSchema = (DirContext)schema.lookup("AttributeDefinition/cn");

Si obtenemos los atributos del objeto esquema cnSchema, veremos lo siguiente:

NUMERICOID: 2.5.4.3
NAME: cn 
SYNTAX: 1.3.6.1.4.1.1466.115.121.1.15 
DESC: Standard Attribute

No s�lo podemos usar lookup() para recuperar objetos esquema del �rbol de esquema, tambi�n podemos usar m�todos como list() o search().

.�Obtener una Definici�n de Tipo de Atributo

Dando un objeto Attribute que representa un atributo LDAP, podemos obtener su objeto esquema llamando a getAttributeDefinition() sobre �l. As�, otra forma de obtener el objeto esquema de "cn" es obtener el atributo "cn" y luego llamar a getAttributeDefinition(). Aqu� tenemos un ejemplo.

// Get an attribute of that type
Attributes attrs = ctx.getAttributes("cn=Ted Geisel, ou=People",
    new String[]{"cn"});
Attribute cnAttr = attrs.get("cn");

// Get its attribute type definition
DirContext cnSchema = cnAttr.getAttributeDefinition();

.�A�adir una Nueva Definici�n de Tipo de Atributo

Antes de Continuar:

Ver las notas de la secci�n Definici�n de Clases Obejto sobre actualizaci�n del esquema.

A�adir una nueva definici�n de tipo de atributo al esquema es como a�adir una nueva entrada al directorio. Esto es as� porque el �rbol de esquema y los objetos esquema son objetos DirContext.

Aqu� hay un ejemplo que a�ade una nueva definici�n de tipo de atributo ("fooAttr") al esquema. Primero declara el atributo que describe la nueva definici�n y luego a�ade la definici�n al esquema usando DirContext.createSubcontext().

// Specify attributes for the schema object
Attributes attrs = new BasicAttributes(true); // Ignore case
attrs.put("NUMERICOID", "1.3.6.1.4.1.42.2.27.4.2.3.1.1.2");
attrs.put("NAME", "fooAttr");
attrs.put("DESC", "for JNDITutorial example only");
attrs.put("SYNTAX", "1.3.6.1.4.1.1466.115.121.1.15");

// Get the schema tree root
DirContext schema = ctx.getSchema("");

// Add the new schema object for "fooAttr"
DirContext newAttr = schema.createSubcontext("AttributeDefinition/fooAttr", attrs);

.�Modificar una Definici�n de Tipo de Atributo

No podemos modificar una definici�n de atributo existente. Primero debemos borrar la definici�n existente y luego a�adir la versi�n actualizada.

.�Borrar una Definici�n de Tipo de Atributo

Antes de Continuar:

Ver las notas de la secci�n Definici�n de Clases Obejto sobre actualizaci�n del esquema.

Borrar una definici�n de tipo de atributo del esquema es como borrar una entrada del directorio. Aqu� hay un ejemplo que elimina la definici�n de tipo de atributo "fooAttr" del esquema usando DirContext.destroySubcontext():

// Get the schema tree root
DirContext schema = ctx.getSchema("");

// Remove the schema object for "fooAttr"
schema.destroySubcontext("AttributeDefinition/fooAttr");

Alguno servidores podr�an no permitirnos borrar una definici�n de tipo de atributo que est� siendo utilizada por entradas del directorio. Podr�amos evitar esta restricci�n desactivando el chequeo de esquema.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR