Spec-Zone.ru › OpenJDK 25

Интерфейс 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
См. также:
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)
  • DirObjectFactory

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static class  DirStateFactory.Result
Пара объекта и атрибутов для возврата результата вызова DirStateFactory.getStateToBind().

Краткое описание методов

Модификатор и тип Метод Описание
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
Получает состояние объекта для привязки, используя объект и атрибуты, которые необходимо преобразовать.

Методы, объявленные в интерфейсе 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 — если при попытке получить состояние объекта эта фабрика столкнулась с исключением и другие фабрики не должны вызываться.
См. также:
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API