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:
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.