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