Класс 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. Для методов, которые принимают или возвращают значение атрибута как Object, значение является либо строкой (в необработанном виде), либо массивом байтов.

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 не требует синхронизации.

Если не указано иное, поведение передачи null аргумента в конструктор или метод в этом классе вызовет NullPointerException.

С:
1.5
См. также:
Сериализованная форма

Конструкторы

Конструктор Описание
Rdn​(String rdnString)

Создаёт Rdn из заданной строки.

Rdn​(String type, Object value)

Создаёт Rdn из заданного типа и значения атрибута.

Rdn​(Attributes attrSet)

Создаёт Rdn из заданного набора атрибутов.

Rdn​(Rdn rdn)

Создаёт Rdn из заданного 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()

Извлекает представление Attributes сопоставлений тип/значение, содержащихся в этом Rdn.

String toString()

Возвращает этот Rdn как строку, представленную в формате, определённом RFC 2253 и описанном в описании класса для LdapName.

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.

Переопределяет:
toString в классе Object
Возвращает:
Строковое представление Rdn.

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 не является строкой или массивом байтов.

unescapeValue

public static Object unescapeValue(String val)

Принимая строку со значением атрибута, отформатированную согласно правилам RFC 2253, возвращает неформатированное значение. Экранирования и кавычки удаляются, а закодированные в шестнадцатеричном формате UTF-8 байты преобразуются в эквивалентные символы UTF-16. Строковое значение возвращается как строка, а двоичное - как массив байтов.

Законные и незаконные значения определены в RFC 2253. Этот метод достаточно лоялен к значениям и не перехватывает все незаконные значения. Поэтому передача незаконного значения может не обязательно вызвать IllegalArgumentException.

Параметры:
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.naming/javax/naming/ldap/Rdn.html

Spec-Zone .ru
спецификации, руководства, описания, API