Класс Rdn
- java.lang.Object
-
- javax.naming.ldap.Rdn
- Все реализованные интерфейсы:
- Serializable, Comparable<Object>
public class Rdn extends Object implements Serializable, Comparable<Object>
Этот класс представляет собой относительное имя с отличительными характеристиками (RDN), которое является компонентом имени с отличительными характеристиками, как определено в RFC 2253. Пример RDN: "OU=Sales+CN=J.Smith". В этом примере RDN состоит из нескольких пар типа/значения атрибута. RDN анализируется так, как описано в описании класса .LdapName
Класс Rdn представляет RDN как соответствия типов и значений атрибутов, которые можно просмотреть с помощью Attributes. Кроме того, он содержит вспомогательные методы, которые позволяют легко извлекать тип и значение, когда RDN состоит из одной пары тип/значение, что характерно для типичного использования. Он также содержит вспомогательные методы, которые позволяют экранировать неформатированное значение атрибута и убрать экранирование значения, отформатированного в соответствии со синтаксисом экранирования, определенным в RFC2253. Для методов, которые принимают или возвращают значение атрибута как объект, значение является либо строкой (в неэкранированной форме), либо массивом байтов.
Rdn правильно проанализирует все допустимые RDN, но не пытается обнаружить все возможные нарушения при анализе недопустимых RDN. Он «сговорчив» в приеме недопустимых RDN. «Допустимость» имени в конечном итоге определяется, когда оно предоставляется серверу LDAP, который может принять или отклонить имя на основе таких факторов, как информация его схемы и соображения по совместимости.
Следующий пример кода демонстрирует, как создать Rdn, используя конструктор, который принимает тип и значение в качестве аргументов:
Rdn rdn = new Rdn("cn", "Juicy, Fruit");
System.out.println(rdn.toString()); Последняя строка выведет cn=Juicy\, Fruit. Метод unescapeValue() можно использовать для снятия экранирования экранированной запятой, что приведет к исходному значению "Juicy, Fruit". Метод escapeValue() добавляет обратно экранирование перед запятой. Этот класс можно создать, используя строковое представление RDN, определенное в RFC 2253, как показано в следующем примере кода:
Rdn rdn = new Rdn("cn=Juicy\\, Fruit");
System.out.println(rdn.toString()); Последняя строка выведет cn=Juicy\, Fruit. Конкурентный многопоточный доступ для чтения к экземпляру Rdn не требует синхронизации.
Если не указано иное, передача в конструктор или метод в этом классе нулевого аргумента приведет к выбросу NullPointerException.
- С:
- 1.5
- См. также:
- Сериализованная форма
Конструкторы
| Конструктор и описание |
|---|
Rdn(Attributes attrSet) Создает Rdn из заданного набора атрибутов. |
Rdn(Rdn rdn) Создает Rdn из заданного |
Rdn(String rdnString) Создает Rdn из заданной строки. |
Rdn(String type,
Object value) Создает Rdn из заданного типа и значения атрибута. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
int |
compareTo(Object obj) Сравнивает этот Rdn с указанным объектом для определения порядка. |
boolean |
equals(Object obj) Сравнивает указанный объект с этим Rdn на равенство. |
static String |
escapeValue(Object val) Учитывая значение атрибута, возвращает строку, экранированную в соответствии с правилами, указанными в RFC 2253. |
String |
getType() Извлекает один из типов этого Rdn. |
Object |
getValue() Извлекает одно из значений этого Rdn. |
int |
hashCode() Возвращает хэш-код этого RDN. |
int |
size() Извлекает количество пар тип/значение атрибута в этом Rdn. |
Attributes |
toAttributes() Извлекает представление |
String |
toString() Возвращает этот Rdn в виде строки, представленной в формате, определенном в RFC 2253, и описанном в описании класса |
static Object |
unescapeValue(String val) Учитывая строку значения атрибута, отформатированную в соответствии с правилами, указанными в RFC 2253, возвращает неформатированное значение. |
Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
Rdn
public Rdn(Attributes attrSet)
throws InvalidNameException Создаёт Rdn на основе заданного набора атрибутов. См. Attributes.
Строковые значения атрибутов не интерпретируются как строки RDN, отформатированные согласно RFC 2253. То есть, значения используются буквально (не анализируются) и предполагаются неэкранированными.
- Параметры:
-
attrSet- Непустой и не нулевой набор атрибутов, содержащий сопоставления типа/значения. - Исключения:
-
InvalidNameException- Если содержимоеattrSetне может быть использовано для построения корректного RDN.
Rdn
public Rdn(String rdnString)
throws InvalidNameException Создаёт Rdn на основе заданной строки. Этот конструктор принимает строку, отформатированную в соответствии с правилами, определёнными в RFC 2253, и описанными в описании класса для LdapName.
- Параметры:
-
rdnString- Непустая и не нулевая строка, отформатированная согласно RFC2253. - Исключения:
-
InvalidNameException- Если при парсинге строки rdnString произошла синтаксическая ошибка.
Rdn
public Rdn(Rdn rdn)
Создаёт Rdn на основе заданного rdn. Содержимое rdn просто копируется в вновь созданный Rdn.
- Параметры:
-
rdn- Не нулевой Rdn, который нужно скопировать.
Rdn
public Rdn(String type,
Object value)
throws InvalidNameException Создаёт Rdn на основе заданного типа и значения атрибута. Строковые значения атрибутов не интерпретируются как строки RDN, отформатированные согласно RFC 2253. То есть, значения используются буквально (не анализируются) и предполагаются неэкранированными.
- Параметры:
-
type- Непустой и не нулевой строковый тип атрибута. -
value- Непустое и не нулевое значение атрибута. - Исключения:
-
InvalidNameException- Если тип/значение не могут быть использованы для построения корректного RDN. - См. также:
toString()
Методы
getValue
public Object getValue()
Возвращает одно из значений этого Rdn. Это метод удобства для получения значения, когда RDN содержит одно сопоставление типа и значения, что является общим случаем использования RDN.
Для многозначных RDN этот метод возвращает значение, соответствующее типу, возвращённому методом getType().
- Возвращает:
- Не нулевое значение атрибута.
getType
public String getType()
Возвращает один из типов этого Rdn. Это метод удобства для получения типа, когда RDN содержит одно сопоставление типа и значения, что является общим случаем использования RDN.
Для многозначных RDN пары тип/значение не имеют определённого порядка. В этом случае этот метод возвращает тип одной из пар тип/значение. Метод getValue() возвращает значение, соответствующее типу, возвращённому этим методом.
- Возвращает:
- Не нулевой тип атрибута.
toString
public String toString()
Возвращает этот Rdn в виде строки, представленной в формате, определённом в RFC 2253, и описанном в описании класса LdapName.
compareTo
public int compareTo(Object obj)
Сравнивает этот Rdn с заданным объектом для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равен или больше этот Rdn, чем заданный объект.
Если obj равен null или не является экземпляром Rdn, генерируется исключение ClassCastException.
Типы и значения атрибутов RDN сопоставляются и сравниваются лексикографически. Порядок компонентов в многозначных Rdn (например, "ou=Sales+cn=Bob") не имеет значения.
- Определено в:
-
compareToв интерфейсеComparable<Object> - Параметры:
-
obj- Не нулевой объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равен или больше этот Rdn, чем заданный объект.
- Исключения:
-
ClassCastException- если obj равен null или не является Rdn.
equals
public boolean equals(Object obj)
Сравнивает указанный объект с этим Rdn на равенство. Возвращает true, если заданный объект также является Rdn и оба Rdn представляют одни и те же сопоставления типов и значений атрибутов. Порядок компонентов в многозначных Rdn (например, "ou=Sales+cn=Bob") не имеет значения.
Сопоставление типов и значений на равенство выполняется следующим образом:
- Типы сравниваются на равенство, игнорируя регистр.
- Строковые значения с различным, но эквивалентным использованием кавычек, экранирования или UTF8-шестнадцатеричного кодирования считаются равными. Регистр значений игнорируется при сравнении.
Если obj равен null или не является экземпляром Rdn, возвращается false.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- Объект для сравнения на равенство с этим Rdn. - Возвращает:
- true, если указанный объект равен этому Rdn.
- См. также:
hashCode()
hashCode
public int hashCode()
Возвращает хэш-код этого RDN. Два RDN, которые равны (согласно методу equals), имеют одинаковый хэш-код.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Целое число, представляющее хэш-код этого Rdn.
- См. также:
equals(java.lang.Object)
toAttributes
public Attributes toAttributes()
Возвращает представление Attributes сопоставлений тип/значение, содержащихся в этом Rdn.
- Возвращает:
- Не нулевой набор атрибутов, содержащий сопоставления тип/значение этого Rdn.
size
public int size()
Возвращает количество пар тип/значение атрибутов в этом Rdn.
- Возвращает:
- Неотрицательное количество пар тип/значение в этом Rdn.
escapeValue
public static String escapeValue(Object val)
Для данного значения атрибута возвращает строку, экранированную в соответствии с правилами, указанными в RFC 2253.
Например, если val равно "Sue, Grabbit and Runn", экранированное значение, возвращаемое этим методом, равно "Sue\, Grabbit and Runn".
Строковое значение представляется как String, а двоичное значение - как массив байтов.
- Параметры:
-
val- Не нулевой объект, который нужно экранировать. - Возвращает:
- Экранированное строковое значение.
- Исключения:
-
ClassCastException- если val не является String или массивом байтов.
unescapeValue
public static Object unescapeValue(String val)
Для данной строковой значения атрибута, отформатированного в соответствии с правилами, указанными в RFC 2253, возвращает неформатированное значение. Экранирования и кавычки удаляются, а кодированные в шестнадцатеричном формате UTF-8 байты преобразуются в соответствующие UTF-16 символы. Возвращает строковое значение как String и двоичное значение как массив байтов.
Законные и незаконные значения определены в RFC 2253. Этот метод допускает широкое значение вводных данных и не обрабатывает все незаконные значения. Поэтому передача незаконного значения необязательно вызовет исключение %%%CODE_BLOCK_90%%.
- Параметры:
-
val- Не нулевая строка, которую нужно раэкранировать. - Возвращает:
- Разэкранированное значение.
- Исключения:
-
IllegalArgumentException- Когда предоставлено незаконное значение.
© 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.