El interface DirContext contiene los siguientes m�todos (adem�s de sus sobrecargas de java.lang.String) para modificar los atributos de un objeto del directorio:
- modifyAttributes(Name name, int modOp, Attributes attrs)
- modifyAttributes(Name name, ModificationItem[] mods)
La forma que acepta una operaci�n de modificaci�n (modOp) y un Attributes normalmente la usa un usuario del API para especificar que la misma operaci�n se aplique a un conjunto de atributos, como a�adir varios atributos. El usuario del API tambi�n puede usar la forma que acepta un array de ModificationItem para el mismo prop�sito, pero la otra forma es m�s conveniente. La forma que acepta un array de ModificationItem normalmente se usa para especificar una serie de modificaciones diferentes sobre el mismo objeto.
Normalmente una implementaci�n de contexto implementa la forma Attributes usando la forma ModificationItem. Aqu� tenemos un ejemplo que hace esto:
public void modifyAttributes(Name name, int mod_op, Attributes attrs)
throws NamingException {
if (attrs == null || attrs.size() == 0) {
throw new IllegalArgumentException(
"Cannot modify without an attribute");
}
// Turn it into a modification list and pass it on
NamingEnumeration attrEnum = attrs.getAll();
ModificationItem[] mods = new ModificationItem[attrs.size()];
for (int i = 0; i < mods.length && attrEnum.hasMoreElements(); i++) {
mods[i] = new ModificationItem(mod_op, (Attribute)attrEnum.next());
}
modifyAttributes(name, mods);
}
La implementaci�n para �mbos m�todos deber�a garantizar que la serie de modificaciones encapsulada por una sola llamada a modifyAttributes() es at�mica. Si se garantiza la atomicidad o no, es altamente dependiente del servicio de directorio subyacente, as� es, de hecho, la implementaci�n completa de estos m�todos. Otras caracter�sticas de la implementaci�n incluyen si los nombres de atributos o identificadores son sensibles a las may�sculas y si las actualizaciones son sancionadas por alguna caracter�stica de chequeo de esquema del servicio de directorio subyacente. Normalmente una implementaci�n de contexto no necesita tener ninguna atenci�n especial para soportar o desactivar estas caracter�sticas. Normalmente estas son caracter�sticas del lado del servidor y se ven forzadas cuando la modificaci�n pide alcanzar al servicio subyacente.