Класс ControlFactory
public abstract class ControlFactory extends Object
Когда поставщик службы получает элемент управления ответа, он использует фабрики элементов управления, чтобы вернуть конкретную или подходящую реализацию класса элемента управления.
- Начиная с:
- 1.3
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает новый экземпляр фабрики элементов управления. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Control |
getControlInstance |
Создает элемент управления с помощью этой фабрики элементов управления. |
static Control |
getControlInstance |
Создает элемент управления с помощью известных фабрик элементов управления. |
Подробное описание конструкторов
ControlFactory
protected ControlFactory()
Подробное описание методов
getControlInstance
public abstract Control getControlInstance(Control ctl) throws NamingException
Поставщик службы использует фабрику, чтобы возвращать элементы управления, считываемые им из протокола LDAP, в виде специализированных классов элементов управления. Без этого механизма поставщик возвращал бы элементы управления, содержащие данные только в формате BER.
Обычно ctl — это «базовый» элемент управления, содержащий данные в формате BER. Фабрика используется для создания специализированной реализации элемента управления, обычно путем декодирования данных BER, предоставляющей методы для доступа к этим данным в типобезопасном и удобном виде.
Например, фабрика может использовать данные BER из базового элемента управления и вернуть экземпляр VirtualListReplyControl.
Если эта фабрика не может создать элемент управления с использованием переданного аргумента, она должна вернуть null. Фабрика должна выбрасывать исключение, только если уверена, что она является единственной предназначенной для этого фабрикой и другие фабрики элементов управления не должны проверяться. Например, это может произойти, если данные BER в элементе управления не соответствуют ожидаемым данным элемента управления с указанным OID. Поскольку этот метод выбрасывает NamingException, любое другое внутренне сгенерированное исключение, которое необходимо передать вызывающему коду, должно быть заключено в NamingException.
- Параметры:
-
ctl— элемент управления, не равный null. - Возвращает:
- Возможно, null; иначе Control.
- Выбрасывает:
-
NamingException— еслиctlсодержит недопустимые данные, препятствующие его использованию для создания элемента управления. Фабрика должна выбрасывать исключение, только если она знает, как создать элемент управления (определяемый по OID), но не может сделать это, например, из-за недопустимых данных BER.
getControlInstance
public static Control getControlInstance(Control ctl, Context ctx, Hashtable<?,?> env) throws NamingException
Для создания элемента управления используется следующее правило:
- Используются фабрики элементов управления, указанные в свойстве
LdapContext.CONTROL_FACTORIESсреды и в файле ресурсов поставщика, связанном сctx, именно в таком порядке. Значение этого свойства — разделенный двоеточиями список имен классов фабрик, проверяемых по порядку; используется первая фабрика, которой удается создать элемент управления. Если ни одну из фабрик не удается загрузить, возвращаетсяctl. Если при создании элемента управления возникает исключение, оно передается вызывающему коду.
Обратите внимание, что фабрика элементов управления должна быть открытой и иметь открытый конструктор без аргументов. Если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.
- Параметры:
-
ctl— ненулевой объект элемента управления, содержащий OID и данные BER. -
ctx— возможно, null; контекст, в котором создается элемент управления. Если значение равно null, такая информация недоступна. -
env— возможно, null; среда контекста. Используется для получения значения свойстваLdapContext.CONTROL_FACTORIES. - Возвращает:
- Объект элемента управления, созданный с помощью
ctl; илиctl, если объект элемента управления не удалось создать с использованием описанного выше алгоритма. - Выбрасывает:
-
NamingException— если при попытке создать объект элемента управления возникло исключение именования. Если одна из использованных фабрик выбрасывает исключение, оно передается вызывающему коду. Если при загрузке и создании экземпляров классов фабрики и объекта возникла ошибка, исключение заключается в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/ldap/ControlFactory.html