Класс LdapName
- Все реализуемые интерфейсы:
-
Serializable,Cloneable,Comparable<Object>,Name
public class LdapName extends Object implements Name
Этот класс разрешает несколько неоднозначностей, встречающихся в RFC 2253 следующим образом:
- RFC 2253 оставляет термин «пробелы» неопределенным. Вместо него используется символ ASCII-пробела 0x20 (« »).
- Пробелы допускаются с обеих сторон символов ',', ';', '=', и '+'. Такие пробелы принимаются, но не генерируются этим кодом и игнорируются при сравнении имен.
- Строки значений атрибутов, содержащие '=' или нелидирующие '#' символы (неэкранированные), принимаются.
Строковые имена, переданные в LdapName или возвращенные им, используют полный набор символов Unicode. Они также могут содержать символы, закодированные в UTF-8, где каждый байт представлен подстрокой из трех символов, такой как «\B4». Однако они не могут содержать символы, закодированные в UTF-8, где каждый байт представлен одним символом в строке: это привело бы к неоднозначности.
LdapName правильно проанализирует все допустимые имена, но не пытается обнаружить все возможные нарушения при анализе недопустимых имен. Он «щедр» в приеме недопустимых имен. «Допустимость» имени в конечном итоге определяется, когда оно предоставляется серверу LDAP, который может принять или отклонить имя на основе таких факторов, как информация о его схеме и соображения по межсетевому взаимодействию.
При проверке имен на равенство типы атрибутов, как двоичные, так и строковые значения, не учитывают регистр. Строковые значения с разными, но эквивалентными способами использования кавычек, экранирования или UTF8-шестнадцатеричного кодирования считаются равными. Порядок компонентов в многозначных RDN (например, "ou=Sales+cn=Bob") не существенен.
Компоненты имени LDAP, то есть RDN, пронумерованы. Индексы имени LDAP с n RDN находятся в диапазоне от 0 до n-1. Этот диапазон можно записать как [0,n). Самый правый RDN находится в индексе 0, а самый левый – в индексе n-1. Например, имя по умолчанию: "CN=Steve Kille, O=Isode Limited, C=GB" пронумеровано в следующем порядке, от 0 до 2: {C=GB, O=Isode Limited, CN=Steve Kille}. Пустое имя LDAP представлено пустым списком RDN.
Одновременный многопоточный доступ для чтения только для экземпляра LdapName не требует синхронизации.
Если не указано иное, передача null-аргумента в конструктор или метод в этом классе приведет к выбрасыванию NullPointerException.
- С:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
LdapName |
Конструирует имя LDAP из заданного имени по умолчанию. |
LdapName |
Конструирует имя LDAP, используя проанализированные компоненты RDN. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Name |
add |
Добавляет один компонент в указанную позицию в этом имени LDAP. |
Name |
add |
Добавляет один RDN в указанную позицию в этом имени LDAP. |
Name |
add |
Добавляет один компонент в конец этого имени LDAP. |
Name |
add |
Добавляет один RDN в конец этого имени LDAP. |
Name |
addAll |
Добавляет RDN из имени – в порядке – в указанную позицию в этом имени. |
Name |
addAll |
Добавляет компоненты имени – в порядке – в указанную позицию в этом имени. |
Name |
addAll |
Добавляет RDN из имени – в порядке – в конец этого имени. |
Name |
addAll |
Добавляет компоненты имени – в порядке – в конец этого имени. |
Object |
clone() |
Создаёт новую копию этого имени. |
int |
compareTo |
Сравнивает это LdapName с указанным объектом для упорядочивания. |
boolean |
endsWith |
Определяет, формирует ли указанная последовательность RDN суффикс этого имени LDAP. |
boolean |
endsWith |
Определяет, заканчивается ли это имя LDAP указанным именем LDAP-суффикса. |
boolean |
equals |
Определяет, равны ли два имени LDAP. |
String |
get |
Возвращает компонент этого имени LDAP как строку. |
Enumeration |
getAll() |
Возвращает компоненты этого имени в виде перечисления строк. |
Name |
getPrefix |
Создаёт имя, компоненты которого состоят из префикса компонентов этого имени LDAP. |
Rdn |
getRdn |
Возвращает RDN этого имени LDAP в виде Rdn. |
List |
getRdns() |
Возвращает список относительных имен по умолчанию. |
Name |
getSuffix |
Создаёт имя, компоненты которого состоят из суффикса компонентов в этом имени LDAP. |
int |
hashCode() |
Вычисляет хэш-код этого имени LDAP. |
boolean |
isEmpty() |
Определяет, пусто ли это имя LDAP. |
Object |
remove |
Удаляет компонент из этого имени LDAP. |
int |
size() |
Возвращает количество компонентов в этом имени LDAP. |
boolean |
startsWith |
Определяет, формирует ли указанная последовательность RDN префикс этого имени LDAP. |
boolean |
startsWith |
Определяет, начинается ли это имя LDAP с указанного префикса имени LDAP. |
String |
toString() |
Возвращает строковое представление этого имени LDAP в формате, определенном в RFC 2253 и описанном в описании класса. |
Подробное описание конструкторов
LdapName
public LdapName(String name) throws InvalidNameException
- Параметры:
-
name- Это полное имя, не равное null, отформатированное в соответствии с правилами, определёнными в RFC 2253. - Исключения:
-
InvalidNameException- если обнаружено нарушение синтаксиса. - См. также:
LdapName
public LdapName(List<Rdn> rdns)
Индексация RDN в списке следует порядку, описанному в описании класса.
- Параметры:
-
rdns- Список компонентов RDN, формирующих имя LDAP. Список не может быть null.
Подробное описание методов
size
isEmpty
getAll
public Enumeration<String> getAll()
get
public String get(int posn)
- Определено в:
-
getв интерфейсеName - Параметры:
-
posn- Индекс компонента для извлечения (от 0). Должен находиться в диапазоне [0, size()). - Возвращает:
- Не null компонент по индексу posn.
- Исключения:
-
IndexOutOfBoundsException- если posn выходит за указанный диапазон.
getRdn
public Rdn getRdn(int posn)
- Параметры:
-
posn- Индекс RDN для извлечения (от 0). Должен находиться в диапазоне [0, size()). - Возвращает:
- Не null RDN по индексу posn.
- Исключения:
-
IndexOutOfBoundsException- если posn выходит за указанный диапазон.
getPrefix
public Name getPrefix(int posn)
- Определено в:
-
getPrefixв интерфейсеName - Параметры:
-
posn- Индекс компонента, до которого нужно брать префикс (от 0). Должен находиться в диапазоне [0, size()]. - Возвращает:
- Экземпляр
LdapName, содержащий компоненты с индексами в диапазоне [0, posn). Если posn равно нулю, возвращается пустое имя LDAP. - Исключения:
-
IndexOutOfBoundsException- Если posn выходит за указанный диапазон.
getSuffix
public Name getSuffix(int posn)
- Определено в:
-
getSuffixв интерфейсеName - Параметры:
-
posn- Индекс компонента, с которого нужно начинать брать суффикс (от 0). Должен находиться в диапазоне [0, size()]. - Возвращает:
- Экземпляр
LdapName, содержащий компоненты с индексами в диапазоне [posn, size()). Если posn равно size(), возвращается пустое имя LDAP. - Исключения:
-
IndexOutOfBoundsException- Если posn выходит за указанный диапазон.
startsWith
public boolean startsWith(Name n)
n является префиксом, если оно равно getPrefix(n.size()) - другими словами, это имя LDAP начинается с 'n'. Если n равно null или не является именем в формате RFC2253, как описано в описании класса, возвращается false.- Определено в:
-
startsWithв интерфейсеName - Параметры:
-
n- Имя LDAP для проверки. - Возвращает:
- true, если
nявляется префиксом этого имени LDAP, иначе false. - См. также:
startsWith
public boolean startsWith(List<Rdn> rdns)
- Параметры:
-
rdns- Последовательность RDN для проверки. - Возвращает:
- true, если
Rdnобразуют префикс этого имени LDAP, иначе false.
endsWith
public boolean endsWith(Name n)
n является суффиксом, если оно равно getSuffix(size()-n.size()) - другими словами, это имя LDAP заканчивается на 'n'. Если n равно null или не является именем в формате RFC2253, как описано в описании класса, возвращается false.endsWith
public boolean endsWith(List<Rdn> rdns)
- Параметры:
-
rdns- Последовательность RDN для проверки. - Возвращает:
- true, если
Rdnобразуют суффикс этого имени LDAP, иначе false.
addAll
public Name addAll(Name suffix) throws InvalidNameException
- Определено в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Компоненты для добавления (не null). - Возвращает:
- Обновлённое имя (не новый экземпляр).
- Исключения:
-
InvalidNameException- еслиsuffixне является допустимым именем LDAP или если добавление компонентов нарушит синтаксические правила этого имени LDAP.
addAll
public Name addAll(List<Rdn> suffixRdns)
- Параметры:
-
suffixRdns- СуффиксRdnдля добавления (не null). - Возвращает:
- Обновлённое имя (не новый экземпляр).
addAll
public Name addAll(int posn, Name suffix) throws InvalidNameException
- Определено в:
-
addAllв интерфейсеName - Параметры:
-
posn- Индекс, на который нужно добавить новый компонент. Должен находиться в диапазоне [0, size()]. -
suffix- Компоненты для добавления (не null). - Возвращает:
- Обновлённое имя (не новый экземпляр).
- Исключения:
-
InvalidNameException- еслиsuffixне является допустимым именем LDAP или если добавление компонентов нарушит синтаксические правила этого имени LDAP. -
IndexOutOfBoundsException- Если posn выходит за указанный диапазон.
addAll
public Name addAll(int posn, List<Rdn> suffixRdns)
- Parameters:
-
posn- Индекс, в который добавить суффиксные RDNы. Должен находиться в диапазоне [0,size()]. -
suffixRdns- Непустой суффиксныеRdnы для добавления. - Returns:
- Обновлённое имя (не новый экземпляр).
- Throws:
-
IndexOutOfBoundsException- Если posn находится вне указанного диапазона.
add
public Name add(String comp) throws InvalidNameException
- Specified by:
-
addв интерфейсеName - Parameters:
-
comp- Непустой компонент для добавления. - Returns:
- Обновлённое имя LdapName, не новый экземпляр. Не может быть null.
- Throws:
-
InvalidNameException- Если добавление comp в конец имени нарушит синтаксис имени.
add
public Name add(Rdn comp)
- Parameters:
-
comp- Непустой RDN для добавления. - Returns:
- Обновлённое имя LdapName, не новый экземпляр. Не может быть null.
add
public Name add(int posn, String comp) throws InvalidNameException
- Specified by:
-
addв интерфейсеName - Parameters:
-
posn- Индекс, в который добавить новый компонент. Должен находиться в диапазоне [0,size()]. -
comp- Непустой компонент для добавления. - Returns:
- Обновлённое имя LdapName, не новый экземпляр. Не может быть null.
- Throws:
-
IndexOutOfBoundsException- Если posn находится вне указанного диапазона. -
InvalidNameException- Если добавление comp в указанную позицию нарушит синтаксис имени.
add
public Name add(int posn, Rdn comp)
- Parameters:
-
posn- Индекс, в который добавить новый RDN. Должен находиться в диапазоне [0,size()]. -
comp- Непустой RDN для добавления. - Returns:
- Обновлённое имя LdapName, не новый экземпляр. Не может быть null.
- Throws:
-
IndexOutOfBoundsException- Если posn находится вне указанного диапазона.
remove
public Object remove(int posn) throws InvalidNameException
- Specified by:
-
removeв интерфейсеName - Parameters:
-
posn- Индекс компонента для удаления. Должен находиться в диапазоне [0,size()). - Returns:
- Удаленный компонент (строка).
- Throws:
-
IndexOutOfBoundsException- если posn находится вне указанного диапазона. -
InvalidNameException- если удаление компонента нарушит правила синтаксиса имени.
getRdns
public List<Rdn> getRdns()
- Returns:
- Имя в виде списка RDN, которые являются экземплярами класса
Rdn.
clone
toString
equals
public boolean equals(Object obj)
Два имени LDAP равны, если каждый RDN в одном равен соответствующему RDN в другом. Это подразумевает, что оба имеют одинаковое количество RDN и каждый тест equals() RDN против соответствующего RDN в другом имени возвращает true. См. Rdn.equals(Object obj) для определения равенства RDN.
compareTo
public int compareTo(Object obj)
Если obj равно null или не является экземпляром LdapName, выбрасывается ClassCastException.
Порядок имён LDAP следует лексикографическим правилам сравнения строк, с расширением, что это относится ко всем RDN в имени LDAP. Все RDN выстраиваются в соответствии с их порядком и сравниваются лексикографически. См. Rdn.compareTo(Object obj) для правил сравнения RDN.
Если это имя LDAP лексикографически меньше obj, возвращается отрицательное число. Если это имя LDAP лексикографически больше obj, возвращается положительное число.
- Specified by:
-
compareToв интерфейсеComparable<Object> - Specified by:
-
compareToв интерфейсеName - Parameters:
-
obj- Экземпляр LdapName для сравнения (не null). - Returns:
- Отрицательное целое число, ноль или положительное целое число, если это имя меньше, равно или больше, чем заданный объект.
- Throws:
-
ClassCastException- если obj равно null или не является LdapName. - See Also:
hashCode
© 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://download.java.net/java/early_access/jdk24/docs/api/java.naming/javax/naming/ldap/LdapName.html