Интерфейс DirStateFactory
- Все суперинтерфейсы:
StateFactory
public interface DirStateFactory extends StateFactory
Инфраструктура JNDI позволяет динамически загружать реализации объектов с помощью object factories.
DirStateFactory расширяет StateFactory, позволяя передавать экземпляр Attributes в метод getStateToBind() и получать его из этого метода. Реализации DirStateFactory предназначены для использования поставщиками служб DirContext. Когда вызывающий код привязывает объект с помощью DirContext.bind(), он также может указать набор атрибутов, которые следует привязать вместе с объектом. Объект и атрибуты, подлежащие привязке, передаются методу getStateToBind() фабрики. Если фабрика обрабатывает объект и атрибуты, она возвращает соответствующую пару объекта и атрибутов для привязки. Если фабрика не обрабатывает объект, она должна вернуть null.
Например, вызывающий код может привязать объект принтера с некоторыми атрибутами, относящимися к принтеру.
ctx.rebind("inky", printer, printerAttrs);
Поставщик службы LDAP для ctx использует DirStateFactory (косвенно через DirectoryManager.getStateToBind()) и передает ему printer и printerAttrs. Фабрика для каталога LDAP может преобразовать printer в набор атрибутов и объединить его с printerAttrs. Затем поставщик службы использует полученные атрибуты для создания записи LDAP и обновляет каталог. Поскольку DirStateFactory расширяет StateFactory, у него есть два метода getStateToBind(), различающихся аргументом атрибутов. DirectoryManager.getStateToBind() будет использовать только вариант, принимающий аргумент атрибутов, а NamingManager.getStateToBind() — только вариант, не принимающий аргумент атрибутов.
Любой вариант метода getStateToBind() интерфейса DirStateFactory может вызываться несколько раз, возможно, с разными параметрами. Реализация является потокобезопасной.
- Начиная с версии:
- 1.3
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
DirStateFactory.Result |
Пара объекта и атрибутов для возврата результата вызова DirStateFactory.getStateToBind(). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
DirStateFactory.Result |
getStateToBind |
Получает состояние объекта для привязки, используя объект и атрибуты, которые необходимо преобразовать. |
Методы, объявленные в интерфейсе StateFactory
getStateToBind
Подробное описание методов
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs) throws NamingException
DirectoryManager.getStateToBind() последовательно загружает фабрики состояний. Если фабрика реализует DirStateFactory, DirectoryManager вызывает этот метод; в противном случае вызывается StateFactory.getStateToBind(). Это продолжается до тех пор, пока одна из фабрик не вернет ненулевой результат.
Если фабрика выбрасывает исключение, оно передается вызывающему коду DirectoryManager.getStateToBind(). Поиск других фабрик, которые могут вернуть ненулевой результат, прекращается. Фабрика должна выбрасывать исключение, только если уверена, что именно она предназначена для обработки объекта и другие фабрики не должны вызываться. Если эта фабрика не может создать объект с использованием предоставленных аргументов, она должна вернуть null.
Параметры name и nameCtx можно использовать для указания имени создаваемого объекта. Подробные сведения см. в описании раздела «Параметры имени и контекста» в ObjectFactory.getObjectInstance(). Если фабрика использует nameCtx, она должна синхронизировать доступ к нему, поскольку реализации контекста не гарантируют потокобезопасность.
Параметры name, inAttrs и environment принадлежат вызывающему коду. Реализация не будет изменять эти объекты или сохранять ссылки на них, хотя может сохранять ссылки на их клоны или копии. Возвращаемый этим методом объект принадлежит вызывающему коду. Реализация не будет изменять его впоследствии. Он будет содержать либо новый объект Attributes, также принадлежащий вызывающему коду, либо ссылку на исходный параметр inAttrs.
- Параметры:
-
obj— возможно, null; объект, состояние которого требуется получить. -
name— имя этого объекта относительноnameCtxили null, если имя не указано. -
nameCtx— контекст, относительно которого задан параметрname, или null, еслиnameявляется относительным к контексту начальной загрузки по умолчанию. -
environment— возможно, null; среда, используемая при создании состояния объекта. -
inAttrs— возможно, null; атрибуты, привязываемые вместе с объектом. Фабрика не должна изменятьinAttrs. - Возвращает:
- Объект
Result, содержащий состояние объекта для привязки и соответствующие атрибуты; null, если для этого объекта не следует использовать данную фабрику. - Выбрасывает:
-
NamingException— если при попытке получить состояние объекта эта фабрика столкнулась с исключением и другие фабрики не должны вызываться. - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/spi/DirStateFactory.html