Класс LdapName
- java.lang.Object
-
- javax.naming.ldap.LdapName
- Все реализованные интерфейсы:
- Serializable, Cloneable, Comparable<Object>, Name
public class LdapName extends Object implements Name
Этот класс представляет собой имя, определенное в RFC 2253. Имя, или DN (Distinguished Name), состоит из упорядоченного списка компонентов, называемых относительными именами, или RDN (Relative Distinguished Name). Подробности синтаксиса DN описаны в RFC 2253.
Этот класс разрешает некоторые неоднозначности, встречающиеся в RFC 2253 следующим образом:
- RFC 2253 не определяет термин "пробел". Вместо него используется символ ASCII пробела 0x20 (" ").
- Пробелы допускаются с обеих сторон символов ',', ';', '=', и '+'. Такие пробелы принимаются, но не генерируются данным кодом и игнорируются при сравнении имён.
- Строковые значения атрибутов, содержащие '=' или символ '#' не в начале строки (неэкранированные), принимаются.
Строковые имена, передаваемые в LdapName или возвращаемые им, используют полный набор символов Юникода. Они также могут содержать символы, закодированные в 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(List<Rdn> rdns) Конструирует имя LDAP, используя заданные компоненты RDN. |
LdapName(String name) Конструирует имя LDAP из заданного имени. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Name |
add(int posn,
Rdn comp) Добавляет один RDN в указанную позицию в данном имени LDAP. |
Name |
add(int posn,
String comp) Добавляет один компонент в указанную позицию в данном имени LDAP. |
Name |
add(Rdn comp) Добавляет один RDN в конец данного имени LDAP. |
Name |
add(String comp) Добавляет один компонент в конец данного имени LDAP. |
Name |
addAll(int posn,
List<Rdn> suffixRdns) Добавляет RDN из заданного имени в указанную позицию данного имени. |
Name |
addAll(int posn,
Name suffix) Добавляет компоненты из заданного имени в указанную позицию данного имени. |
Name |
addAll(List<Rdn> suffixRdns) Добавляет RDN из заданного имени в конец данного имени. |
Name |
addAll(Name suffix) Добавляет компоненты из заданного имени в конец данного имени. |
Object |
clone() Создаёт новую копию данного имени. |
int |
compareTo(Object obj) Сравнивает это имя LdapName с указанным объектом для определения порядка. |
boolean |
endsWith(List<Rdn> rdns) Определяет, образует ли заданная последовательность RDN суффикс этого имени LDAP. |
boolean |
endsWith(Name n) Определяет, заканчивается ли это имя LDAP указанным суффиксом имени LDAP. |
boolean |
equals(Object obj) Определяет, равны ли два имени LDAP. |
String |
get(int posn) Возвращает компонент этого имени LDAP в виде строки. |
Enumeration<String> |
getAll() Возвращает компоненты имени в виде перечисления строк. |
Name |
getPrefix(int posn) Создаёт имя, компоненты которого составляют префикс компонентов этого имени LDAP. |
Rdn |
getRdn(int posn) Возвращает RDN данного имени LDAP как Rdn. |
List<Rdn> |
getRdns() Возвращает список относительных имён. |
Name |
getSuffix(int posn) Создаёт имя, компоненты которого составляют суффикс компонентов данного имени LDAP. |
int |
hashCode() Вычисляет хеш-код данного имени LDAP. |
boolean |
isEmpty() Определяет, пусто ли данное имя LDAP. |
Object |
remove(int posn) Удаляет компонент из данного имени LDAP. |
int |
size() Возвращает количество компонентов в данном имени LDAP. |
boolean |
startsWith(List<Rdn> rdns) Определяет, образует ли заданная последовательность RDN префикс данного имени LDAP. |
boolean |
startsWith(Name n) Определяет, начинается ли это имя LDAP с указанного префикса имени LDAP. |
String |
toString() Возвращает строковое представление данного имени LDAP в формате, определённом в RFC 2253 и описанном в описании класса. |
Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
LdapName
public LdapName(String name)
throws InvalidNameException Создаёт имя LDAP из заданного отличительного имени.
- Параметры:
-
name- Это непустое отличительное имя, отформатированное в соответствии с правилами, определёнными в RFC 2253. - Исключения:
-
InvalidNameException- если обнаружено нарушение синтаксиса. - См. также:
Rdn.escapeValue(Object value)
LdapName
public LdapName(List<Rdn> rdns)
Создаёт имя LDAP, используя его разложенные компоненты RDN.
Индексация RDN в списке следует порядковому номеру RDN, описанному в описании класса.
- Параметры:
-
rdns- СписокRdn(не пустой), образующий это имя LDAP.
Методы
size
public int size()
Возвращает количество компонентов в этом имени LDAP.
- Определено в:
-
sizeв интерфейсеName - Возвращает:
- Неотрицательное количество компонентов в этом имени LDAP.
isEmpty
public boolean isEmpty()
Определяет, пусто ли это имя LDAP. Пустым именем является имя с нулевым количеством компонентов.
getAll
public Enumeration<String> getAll()
Возвращает компоненты этого имени в виде перечисления строк. Влияние обновлений этого имени на это перечисление не определено. Если имя имеет ноль компонентов, возвращается пустое (не null) перечисление. Порядок компонентов, возвращаемых перечислением, соответствует порядку, в котором компоненты пронумерованы, как описано в описании класса.
- Определено в:
-
getAllв интерфейсеName - Возвращает:
- Непустое перечисление компонентов этого имени LDAP. Каждый элемент перечисления является строкой типа String.
get
public String get(int posn)
Возвращает компонент этого имени LDAP в виде строки.
- Определено в:
-
getв интерфейсеName - Параметры:
-
posn- Индекс компонента для извлечения (с нуля). Должен быть в диапазоне [0,size()). - Возвращает:
- Непустой компонент по индексу posn.
- Исключения:
-
IndexOutOfBoundsException- если posn выходит за заданный диапазон.
getRdn
public Rdn getRdn(int posn)
Возвращает RDN этого имени LDAP в виде объекта Rdn.
- Параметры:
-
posn- Индекс RDN для извлечения (с нуля). Должен быть в диапазоне [0,size()). - Возвращает:
- Непустой RDN по индексу posn.
- Исключения:
-
IndexOutOfBoundsException- если posn выходит за заданный диапазон.
getPrefix
public Name getPrefix(int posn)
Создаёт имя, компоненты которого представляют собой префикс компонентов этого имени LDAP. Последующие изменения в этом имени не повлияют на возвращаемое имя, и наоборот.
- Определено в:
-
getPrefixв интерфейсеName - Параметры:
-
posn- Индекс компонента, на котором следует остановиться (с нуля). Должен быть в диапазоне [0,size()]. - Возвращает:
- Экземпляр
LdapName, состоящий из компонентов в диапазоне [0,posn). Если posn равен нулю, возвращается пустое имя LDAP. - Исключения:
-
IndexOutOfBoundsException- если posn выходит за заданный диапазон.
getSuffix
public Name getSuffix(int posn)
Создаёт имя, компоненты которого представляют собой суффикс компонентов в этом имени LDAP. Последующие изменения в этом имени не повлияют на возвращаемое имя, и наоборот.
- Определено в:
-
getSuffixв интерфейсеName - Параметры:
-
posn- Индекс компонента, с которого следует начать (с нуля). Должен быть в диапазоне [0,size()]. - Возвращает:
- Экземпляр
LdapName, состоящий из компонентов в диапазоне [posn,size()). Если posn равен size(), возвращается пустое имя LDAP. - Исключения:
-
IndexOutOfBoundsException- если posn выходит за заданный диапазон.
startsWith
public boolean startsWith(Name n)
Определяет, начинается ли это имя LDAP с указанного префикса имени LDAP. Имя n является префиксом, если оно равно getPrefix(n.size()) — другими словами, это имя LDAP начинается с 'n'. Если n равно null или не является именем, отформатированным в соответствии с RFC2253, как описано в описании класса, возвращается false.
- Определено в:
-
startsWithв интерфейсеName - Параметры:
-
n- Имя LDAP для проверки. - Возвращает:
- true, если
nявляется префиксом этого имени LDAP, иначе false. - См. также:
getPrefix(int posn)
startsWith
public boolean startsWith(List<Rdn> rdns)
Определяет, формирует ли заданная последовательность RDN префикс этого имени LDAP. Возвращает true, если это имя LdapName не короче rdns и для каждой позиции p в диапазоне [0, rdns.size()) компонент getRdn(p) совпадает с rdns.get(p). В противном случае возвращает false. Если rdns равно null, возвращается false.
- Параметры:
-
rdns- ПоследовательностьRdnдля проверки. - Возвращает:
- true, если
rdnsформируют префикс этого имени LDAP, иначе false.
endsWith
public boolean endsWith(Name n)
Определяет, заканчивается ли это имя LDAP указанным суффиксом имени LDAP. Имя n является суффиксом, если оно равно getSuffix(size()-n.size()) — другими словами, это имя LDAP заканчивается на 'n'. Если n равно null или не является именем, отформатированным в соответствии с RFC2253, как описано в описании класса, возвращается false.
- Определено в:
-
endsWithв интерфейсеName - Параметры:
-
n- Имя LDAP для проверки. - Возвращает:
- true, если
nявляется суффиксом этого имени, иначе false. - См. также:
getSuffix(int posn)
endsWith
public boolean endsWith(List<Rdn> rdns)
Определяет, формирует ли заданная последовательность RDN суффикс этого имени LDAP. Возвращает true, если это имя LdapName не короче rdns, и для каждой позиции p в диапазоне [size() - rdns.size(), size()) компонент getRdn(p) совпадает с rdns.get(p). В противном случае возвращает false. Если rdns равно null, возвращается false.
- Параметры:
-
rdns- ПоследовательностьRdnдля проверки. - Возвращает:
- true, если
rdnsформируют суффикс этого имени LDAP, иначе false.
addAll
public Name addAll(Name suffix)
throws InvalidNameException Добавляет компоненты имени — в порядке следования — в конец этого имени.
- Определено в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Компоненты для добавления (не пустой). - Возвращает:
- Обновлённое имя (не новый экземпляр).
- Исключения:
-
InvalidNameException- еслиsuffixне является корректным именем LDAP, или если добавление компонентов нарушит правила синтаксиса этого имени LDAP.
addAll
public Name addAll(List<Rdn> suffixRdns)
Добавляет RDNы имени — в порядке следования — в конец этого имени.
- Параметры:
-
suffixRdns- Добавляемый суффиксRdn. - Возвращает:
- Обновлённое имя (не новый экземпляр).
addAll
public Name addAll(int posn,
Name suffix)
throws InvalidNameException Добавляет компоненты имени — в порядке следования — в указанную позицию внутри этого имени. Компоненты этого имени LDAP в позиции или после (если есть) первой новой компоненты смещаются вверх (от индекса 0) для размещения новых компонентов.
- Определено в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Компоненты для добавления (не пустой). -
posn- Индекс, в который добавляется новый компонент. Должен быть в диапазоне [0,size()]. - Возвращает:
- Обновлённое имя (не новый экземпляр).
- Исключения:
-
InvalidNameException- еслиsuffixне является корректным именем LDAP, или если добавление компонентов нарушит правила синтаксиса этого имени LDAP. -
IndexOutOfBoundsException- Если posn выходит за указанный диапазон.
addAll
public Name addAll(int posn,
List<Rdn> suffixRdns) Добавляет RDNы имени — в порядке следования — в указанную позицию внутри этого имени. RDNы этого имени LDAP в позиции или после (если есть) первой новой RDN смещаются вверх (от индекса 0) для размещения новых RDN.
- Параметры:
-
suffixRdns- Добавляемый суффиксRdn. -
posn- Индекс, в который добавляются RDN суффикса. Должен быть в диапазоне [0,size()]. - Возвращает:
- Обновлённое имя (не новый экземпляр).
- Исключения:
-
IndexOutOfBoundsException- Если posn выходит за указанный диапазон.
add
public Name add(String comp)
throws InvalidNameException Добавляет одиночный компонент в конец этого имени LDAP.
- Определено в:
-
addв интерфейсеName - Параметры:
-
comp- Компонент для добавления (не пустой). - Возвращает:
- Обновлённое имя LdapName (не новый экземпляр). Не может быть null.
- Исключения:
-
InvalidNameException- Если добавление comp в конец имени нарушит синтаксис имени.
add
public Name add(Rdn comp)
Добавляет одиночный RDN в конец этого имени LDAP.
- Параметры:
-
comp- RDN для добавления (не пустой). - Возвращает:
- Обновлённое имя LdapName (не новый экземпляр). Не может быть null.
add
public Name add(int posn,
String comp)
throws InvalidNameException Добавляет одиночный компонент в указанную позицию внутри этого имени LDAP. Компоненты этого имени LDAP в позиции или после (если есть) нового компонента смещаются вверх на один (от индекса 0) для размещения нового компонента.
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Добавляемый компонент, не может быть null. -
posn- Индекс, в который нужно добавить новый компонент. Должно быть в диапазоне [0,size()]. - Возвращает:
- Обновленный LdapName, не новый экземпляр. Не может быть null.
- Исключение:
-
IndexOutOfBoundsException- Если posn находится за пределами указанного диапазона. -
InvalidNameException- Если добавление comp в указанную позицию нарушит синтаксис имени.
add
public Name add(int posn,
Rdn comp) Добавляет один RDN в указанную позицию в этом имени LDAP. RDNы этого имени LDAP, начиная с индекса (если есть) нового RDN, сдвигаются вверх на один (в сторону от индекса 0), чтобы вместить новый RDN.
- Параметры:
-
comp- Добавляемый RDN, не может быть null. -
posn- Индекс, в который нужно добавить новый RDN. Должно быть в диапазоне [0,size()]. - Возвращает:
- Обновленный LdapName, не новый экземпляр. Не может быть null.
- Исключение:
-
IndexOutOfBoundsException- Если posn находится за пределами указанного диапазона.
remove
public Object remove(int posn)
throws InvalidNameException Удаляет компонент из этого имени LDAP. Компонент этого имени в указанной позиции удаляется. Компоненты с индексами, большими чем эта позиция (если есть), сдвигаются вниз (к индексу 0) на один.
- Указано в:
-
removeв интерфейсеName - Параметры:
-
posn- Индекс компонента для удаления. Должно быть в диапазоне [0,size()). - Возвращает:
- Удаленный компонент (строка).
- Исключение:
-
IndexOutOfBoundsException- если posn находится за пределами указанного диапазона. -
InvalidNameException- если удаление компонента нарушит синтаксические правила имени.
getRdns
public List<Rdn> getRdns()
Возвращает список относительных отличительных имён. Содержимое списка неизменяемо. Нумерация RDN в возвращаемом списке соответствует нумерации RDN, описанной в описании класса. Если имя имеет ноль компонентов, возвращается пустой список.
- Возвращает:
- Имя в виде списка RDN, являющихся экземплярами класса
Rdn.
clone
public Object clone()
Создаёт новую копию этого имени. Последующие изменения компонентов этого имени не повлияют на новую копию, и наоборот.
- Указано в:
-
cloneв интерфейсеName - Переопределяет:
-
cloneв классеObject - Возвращает:
- Копию этого имени LDAP.
- См. также:
Cloneable
toString
public String toString()
Возвращает строковое представление этого имени LDAP в формате, определённом в RFC 2253 и описанном в описании класса. Если имя имеет ноль компонентов, возвращается пустая строка.
equals
public boolean equals(Object obj)
Определяет, равны ли два имени LDAP. Если obj равно null или не является именем LDAP, возвращается false.
Два имени LDAP равны, если каждый RDN в одном равен соответствующему RDN в другом. Это подразумевает, что оба имеют одинаковое количество RDN и каждый RDN при проверке equals() со соответствующим RDN в другом имени возвращает true. См. Rdn.equals(Object obj) для определения равенства RDN.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- Возможно null объект для сравнения. - Возвращает:
- true, если obj равен этому имени LDAP, иначе false.
- См. также:
hashCode()
compareTo
public int compareTo(Object obj)
Сравнивает это имя LdapName с заданным объектом для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равно или больше это имя, чем заданный объект.
Если obj равно null или не является экземпляром LdapName, выбрасывается ClassCastException.
Порядок имен LDAP соответствует лексикографическим правилам сравнения строк, с расширением, что это относится ко всем RDN в имени LDAP. Все RDN выстраиваются в заданном порядке и сравниваются лексикографически. См. Rdn.compareTo(Object obj) для правил сравнения RDN.
Если это имя LDAP лексикографически меньше obj, возвращается отрицательное число. Если это имя LDAP лексикографически больше obj, возвращается положительное число.
- Указано в:
-
compareToв интерфейсеComparable<Object> - Указано в:
-
compareToв интерфейсеName - Параметры:
-
obj- Экземпляр LdapName для сравнения, не может быть null. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, как это имя меньше, равно или больше заданного obj.
- Исключение:
-
ClassCastException- если obj равно null или не является LdapName. - См. также:
Comparable.compareTo(Object)
hashCode
public int hashCode()
Вычисляет хэш-код этого имени LDAP. Хэш-код — сумма хэш-кодов отдельных RDN этого имени.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Целое число, представляющее хэш-код этого имени.
- См. также:
equals(java.lang.Object)
© 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.