Интерфейс DirStateFactory
- Все суперинтерфейсы:
StateFactory
public interface DirStateFactory extends StateFactory
Этот интерфейс представляет фабрику для получения состояния объекта и соответствующих атрибутов для привязки.
Фреймворк JNDI позволяет динамически загружать реализации объектов через object factories.
A 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() метода, где один отличается от другого аргументом attributes. DirectoryManager.getStateToBind() будет использовать только форму, принимающую аргумент attributes, в то время как NamingManager.getStateToBind() будет использовать только форму, которая не принимает аргумент attributes.
Любая форма метода getStateToBind() DirStateFactory может вызываться многократно, возможно, с разными параметрами. Реализация потокобезопасна.
- С:
- 1.3
- См. также:
-
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes),DirObjectFactory
Вложенные классы
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
DirStateFactory.Result |
Пара объект/атрибуты для возврата результата DirStateFactory.getStateToBind(). |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
DirStateFactory.Result |
getStateToBind(Object obj,
Name name,
Context nameCtx,
Hashtable<?,?> environment,
Attributes inAttrs) |
Возвращает состояние объекта для привязки, учитывая объект и атрибуты, подлежащие преобразованию. |
Методы, объявленные в интерфейсе javax.naming.spi.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(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)
© 1993, 2020, 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/11/docs/api/java.naming/javax/naming/spi/DirStateFactory.html