Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Definición de Tipos de Atributos

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.


Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis