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