This interface represents a factory for obtaining the state of an
object and corresponding attributes for binding.
The JNDI framework allows for object implementations to
be loaded in dynamically via object factories.
A DirStateFactory extends StateFactory
by allowing an Attributes instance
to be supplied to and be returned by the getStateToBind() method.
DirStateFactory implementations are intended to be used by
DirContext service providers.
When a caller binds an object using DirContext.bind(),
he might also specify a set of attributes to be bound with the object.
The object and attributes to be bound are passed to
the getStateToBind() method of a factory.
If the factory processes the object and attributes, it returns
a corresponding pair of object and attributes to be bound.
If the factory does not process the object, it must return null.
For example, a caller might bind a printer object with some printer-related
attributes.
ctx.rebind("inky", printer, printerAttrs);
An LDAP service provider for
ctx uses a
DirStateFactory
(indirectly via
DirectoryManager.getStateToBind())
and gives it
printer and
printerAttrs. A factory for
an LDAP directory might turn
printer into a set of attributes
and merge that with
printerAttrs. The service provider then
uses the resulting attributes to create an LDAP entry and updates
the directory.
Since DirStateFactory extends StateFactory, it
has two getStateToBind() methods, where one
differs from the other by the attributes
argument. DirectoryManager.getStateToBind() will only use
the form that accepts the attributes argument, while
NamingManager.getStateToBind() will only use the form that
does not accept the attributes argument.
Either form of the getStateToBind() method of a
DirStateFactory may be invoked multiple times, possibly using different
parameters. The implementation is thread-safe.