El interface DirContext contiene los siguientes m�todos (adem�s de sus sobrecargas de java.lang.String) que implican actualizar el espacio de nombres y a�adir atributos:
- createSubcontext(Name name, Attributes attrs)
- bind(Name name, Object obj, Attributes attrs)
- rebind(Name name, Object obj, Attributes attrs)
C�mo usa estos m�todos un usuario del API se explica en la lecci�n Operaciones de Directorio.
bind() y rebind() pueden usarse para unir un nombre de estas formas:
- A un objeto en el espacio de nombres
- A un conjunto de atributos
- Tanto a un objeto como a un conjunto de atributos
Dependiendo del servicio de directorio subyacente, una implementaci�n de contexto podr�a soprotar s�lo uno o todos ellos. Si una implementaci�n soporta los tres, deber�a estar listo para aceptar null como los par�metros objeto o Attributes. Ambos par�metros podr�an ser null en la misma llamada si la implementaci�n de contexto soporta la adici�n de un nombre s�lo al espacio de nombres, sin a�adir tambi�n un objeto asociado o atributos.
Si el servicio de directorio subyacente s�lo soporta el almacenamiento de atributos, la implementaci�n de contexto puede decidir si quiere soportar uniones de objetos no-null y, si lo hace, c�mo mapear objetos Java a atributos. Puedes encontrar una explicaci�n sobre las representaciones de objetos en la lecci�n Representaci�n en el Directorio Tambi�n puedes ver m�s adelante en esta lecci�n una descripci�n de c�mo extender la implementaci�n de contexto para los tipos de objetos que aceptar�.
La implementaci�n de estos m�todos en particular depende del modelo de atributos del servicio de directorio subyacente. Esto es as� porque una llamada a m�todo podr�a implicar tanto la actualizaci�n del espacio de nombres como la adicci�n de atributos. Si todo es posible, la actualizaci�n del espacio de nombres y la adicci�n de atributos deber�a ocurrir autom�ticamente. De nuevo, si es conseguible depende de las facilidades proporcionadas por el servicio de directorio subyacente. Una implementaci�n real podr�a no necesitar hacer nada m�s que pasar el nombre y la petici�n al servicio de directorio subyacente para su proceso.
|
Truco de Implementaci�n:
La sem�ntica de rebind() rquiere que los atributos existentes del objeto no se modifiquen si el par�metro de entrada Attributes es null. |
�Implicaciones de Operaciones Puras de Nombrado
La implementaci�n de contexto no s�lo debe proporcionar definiciones para createSubcontext(), bind(), y rebind(). Tambi�n debe asegurarse de que las implementaciones de los m�todos de nombrado puro tienen en cuenta los atributos. Abajo tenemos los m�todos de nombrado puro:
- createSubcontext(Name name)
- destroySubcontext(Name name)
- bind(Name name, Object obj)
- rebind(Name name, Object obj)
- unbind(Name name)
Por ejemplo, podr�amos implementar esto m�todos en t�rminos de sus contrapartes que toman un par�metro Attributes. Aqu� tenemos una implementaci�n de ejemplo de bind(Name name, Object obj), escrita en t�rminos de bind(Name name, Object obj, Attributes attrs).
public void bind(Name name, Object obj) throws NamingException {
bind(name, obj, null);
}
unbind(Name name) y destroySubcontext(Name name) necesitan obtener los atributos del objeto adem�s de eliminar el objeto del espacio de nombres.