Класс ControlFactory
public abstract class ControlFactory extends Object
Когда поставщик службы получает элемент управления в ответе, он использует фабрики элементов управления для возврата реализации соответствующего класса элемента управления.
- Начиная с:
- 1.3
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает новый экземпляр фабрики элементов управления. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Control |
getControlInstance |
Создает элемент управления с помощью этой фабрики элементов управления. |
static Control |
getControlInstance |
Создает элемент управления с помощью известных фабрик элементов управления. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание конструкторов
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, объект 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.