Класс Rdn
- Все реализуемые интерфейсы:
Serializable, Comparable<Object>
public class Rdn extends Object implements Serializable, Comparable<Object>
LdapName. Класс Rdn представляет RDN в виде сопоставлений типов и значений атрибутов, которые можно просматривать с помощью Attributes. Кроме того, он содержит удобные методы, позволяющие легко получать тип и значение, когда RDN состоит из одной пары «тип/значение», как это обычно бывает при использовании. Также класс содержит вспомогательные методы для экранирования неформатированного значения атрибута и снятия экранирования со значения, отформатированного в соответствии с синтаксисом экранирования, определённым в RFC2253. Для методов, принимающих или возвращающих значение атрибута как Object, значение представляет собой либо String (в неэкранированном виде), либо массив байтов.
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 |
Создаёт Rdn из указанной строки. |
Rdn |
Создаёт Rdn из указанного типа и значения атрибута. |
Rdn |
Создаёт Rdn из указанного набора атрибутов. |
Rdn |
Создаёт Rdn из указанного rdn. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
compareTo |
Сравнивает этот Rdn с указанным объектом, определяя порядок. |
boolean |
equals |
Сравнивает указанный объект с этим Rdn на равенство. |
static String |
escapeValue |
Принимает значение атрибута и возвращает строку, экранированную согласно правилам, указанным в RFC 2253. |
String |
getType() |
Получает один из типов этого Rdn. |
Object |
getValue() |
Получает одно из значений этого Rdn. |
int |
hashCode() |
Возвращает хеш-код этого RDN. |
int |
size() |
Получает количество пар «тип/значение» атрибутов в этом Rdn. |
Attributes |
toAttributes() |
Получает представление Attributes сопоставлений типов и значений, содержащихся в этом Rdn. |
String |
toString() |
|
static Object |
unescapeValue |
Принимает строку значения атрибута, отформатированную согласно правилам, указанным в RFC 2253, и возвращает неформатированное значение. |
Подробное описание конструкторов
Rdn
public Rdn(Attributes attrSet) throws InvalidNameException
Attributes. Строковые значения атрибутов не интерпретируются как строки RDN в формате RFC 2253. Иными словами, значения используются буквально (не разбираются) и считаются неэкранированными.
- Параметры:
-
attrSet— непустые и отличные от null атрибуты, содержащие сопоставления типов и значений. - Исключения:
-
InvalidNameException— если содержимоеattrSetнельзя использовать для создания допустимого RDN.
Rdn
public Rdn(String rdnString) throws InvalidNameException
LdapName.- Параметры:
-
rdnString— непустая строка в формате RFC2253, отличная от null. - Исключения:
-
InvalidNameException— если при разборе rdnString возникает синтаксическая ошибка.
Rdn
public Rdn(Rdn rdn)
rdn. Содержимое rdn просто копируется в созданный Rdn.- Параметры:
-
rdn— отличный от null Rdn, который необходимо скопировать.
Rdn
public Rdn(String type, Object value) throws InvalidNameException
- Параметры:
-
type— непустой строковый тип атрибута, отличный от null. -
value— непустое значение атрибута, отличное от null. - Исключения:
-
InvalidNameException— если пару «тип/значение» нельзя использовать для создания допустимого RDN. - См. также:
Подробное описание методов
getValue
public Object getValue()
Для RDN с несколькими значениями этот метод возвращает значение, соответствующее типу, возвращаемому методом getType().
- Возвращает:
- Значение атрибута, отличное от null.
getType
public String getType()
Для RDN с несколькими значениями порядок пар «тип/значение» не определён. В этом случае метод возвращает тип одной из пар «тип/значение». Метод getValue() возвращает значение, соответствующее типу, возвращаемому этим методом.
- Возвращает:
- Тип атрибута, отличный от null.
toString
compareTo
public int compareTo(Object obj)
Если obj равен null или не является экземпляром Rdn, выбрасывается ClassCastException.
Пары типов и значений атрибутов RDN сопоставляются друг с другом и сравниваются лексикографически. Порядок компонентов в RDN с несколькими значениями (например, "ou=Sales+cn=Bob") не имеет значения.
- Определено в:
-
compareToв интерфейсеComparable<Object> - Параметры:
-
obj— отличный от null объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число в зависимости от того, меньше ли этот Rdn указанного объекта, равен ему или больше него.
- Исключения:
-
ClassCastException— если obj равен null или не является Rdn.
equals
public boolean equals(Object obj)
Сопоставление типов и значений на равенство выполняется следующим образом:
- Типы сравниваются на равенство без учёта регистра.
- Строковые значения с различными, но эквивалентными вариантами использования кавычек, экранирования или шестнадцатеричного кодирования UTF8 считаются равными. При сравнении регистр значений не учитывается.
Если obj равен null или не является экземпляром Rdn, возвращается false.
hashCode
toAttributes
public Attributes toAttributes()
Attributes сопоставлений типов и значений, содержащихся в этом Rdn.- Возвращает:
- Атрибуты, отличные от null, содержащие сопоставления типов и значений этого Rdn.
size
public int size()
- Возвращает:
- Неотрицательное количество пар «тип/значение» в этом Rdn.
escapeValue
public static String escapeValue(Object val)
Например, если val равно "Sue, Grabbit and Runn", экранированное значение, возвращаемое этим методом, будет "Sue\, Grabbit and Runn".
Строковое значение представляется как String, а двоичное значение — как массив байтов.
- Параметры:
-
val— отличный от null объект, который необходимо экранировать. - Возвращает:
- Экранированное строковое значение.
- Исключения:
-
ClassCastException— если val не является String или массивом байтов.
unescapeValue
public static Object unescapeValue(String val)
Допустимые и недопустимые значения определены в RFC 2253. Этот метод снисходительно принимает значения и не обнаруживает все недопустимые значения. Поэтому передача недопустимого значения не обязательно приведёт к IllegalArgumentException.
- Параметры:
-
val— отличная от null строка, с которой необходимо снять экранирование. - Возвращает:
- Значение без экранирования.
- Исключения:
-
IllegalArgumentException— если передано недопустимое значение.
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/ldap/Rdn.html