Spec-Zone .ru
спецификации, руководства, описания, API
|
class javax.naming.ldap.Rdn представляет Относительное Отличительное имя (RDN) как определено в
Rdn class обеспечивает методы, чтобы получить доступ к паре (ам) имя/значение RDN, получить его строковое представление, получить представление
Rdn class является неизменным.
Rdn может быть создан с указанным именем и парой значения, если это - единственное имя/значение соединенный RDN. Для многозначного RDN следует создать набор атрибута, состоящий из всех пар имя/значение, и использовать конструктора, который берет Attributes в качестве параметра. Можно также создать Rdn из его строкового представления, определенного в example
это создает RDNs использование различных типов конструкторов.
Rdn rdn1 = new Rdn("ou= Juicy\\, Fruit"); System.out.println("rdn1:" + rdn1.toString()); Rdn rdn2 = new Rdn(rdn1); System.out.println("rdn2:" + rdn2.toString()); Attributes attrs = new BasicAttributes(); attrs.put("ou", "Juicy, Fruit"); attrs.put("cn", "Mango"); Rdn rdn3 = new Rdn(attrs); System.out.println("rdn3:" + rdn3.toString()); Rdn rdn4 = new Rdn("ou", "Juicy, Fruit"); System.out.println("rdn4:" + rdn4.toString());
Тип/значения и RDN могут быть получены, используя методы ниже:
getType()
Для RDN, составленный из единственной пары типа/значения, метод example
ниже печатных изданий пары типа/значения RDNs.
Attributes attrs = new BasicAttributes(); attrs.put("o", "Yellow"); attrs.put("cn", "Mango"); // create a binary value for the RDN byte[] mangoJuice = new byte[6]; for (int i = 0; i < mangoJuice.length; i++) { mangoJuice[i] = (byte) i; } attrs.put("ou", mangoJuice); Rdn rdn = new Rdn(attrs); System.out.println(); System.out.println("size:" + rdn.size()); System.out.println("getType(): " + rdn.getType()); System.out.println("getValue(): " + rdn.getValue()); // test toAttributes System.out.println(); System.out.println("toAttributes(): " + rdn.toAttributes());
Чтобы получить строковое представление RDN, отформатированного согласно синтаксису, определенному в RFC 2253, можно использовать:
Когда Вы используете конструктора Rdn, который берет параметр String, Вы предоставляете строковое представление RDN, и возвращаете экземпляр Rdn. Чтобы сделать реверс, то есть, получить строковое представление экземпляра Rdn, Вы используете toString (). Результат toString () может быть возвращен конструктору Rdn, чтобы произвести экземпляр Rdn, который равен исходному экземпляру Rdn.
Вот example
:
Rdn rdn = new Rdn("cn=Juicy\\,Fruit"); String str = rdn.toString(); System.out.println(str); Rdn rdn2 = new Rdn(str); System.out.println(rdn.equals(rdn2)); // true
Методы ниже включают сравнению RDNs:
equals(Object Rdn)
Можно использовать compareTo (), чтобы сортировать список экземпляров Rdn. равняется (), позволяет Вам определять, равны ли два Rdns синтаксически. Два Rdns равны, если у них обоих есть то же самое (точный случаем соответствующий) пары типа/значения. Порядок компонентов в многозначном RDNs не является существенным.
Вот example
:
Rdn one = new Rdn("ou=Sales+cn=Bob"); Rdn two = new Rdn("cn=Bob+ou=Sales"); Rdn three = new Rdn("ou=Sales+cn=Bob+c=US"); Rdn four = new Rdn("cn=lowercase"); Rdn five = new Rdn("cn=LowerCASE"); System.out.println(one.equals(two)); // true System.out.println(two.equals(three)); // false System.out.println(one.equals(three)); // false System.out.println(four.equals(five)); // true
Одно из лучшего использования class Rdn - то, когда нужно иметь дело с DNs, состоящим из специальных символов. Это автоматически заботится о выходе и невыходе из специальных символов. Символы такой имеют '\' (наклонная черта влево), ',' (запятая), + (плюс) и т.д. имеют определенное семантическое согласно RFC 2253. Можно найти список всех специальных символов в RFC2253. Когда эти символы используются в качестве литералов в DN, их нужно оставить с '\' (blackslash).
Например, рассмотрите RDN: cn=Juicy, Fruit
Символ, (запятая), появляющаяся между Сочным и Фруктами, является специальным символом, которого нужно оставить '\' (blackslash). Получающееся синтаксически отформатировало взгляды RDN как указано ниже: cn=Juicy\, Fruit
Однако, '\' символ самой (наклонной черты влево) является специальным символом согласно Строковому синтаксису Языка Java, и это нуждается к оставленному с '\' (наклонная черта влево) снова. Строковый формат Языка Java и cn=Juicy\\, Fruit
Отметьте, что, вышеупомянутые правила форматирования применяются только к компоненту значения Rdn. Rdn class обеспечивает два метода static, чтобы обработать автоматический выход и невыход значений RDN:
example
ниже шоу, как получить строковое представление DN, не имея необходимость иметь дело с синтаксисом для того, чтобы обработать специальные символы, определенные в RFC 2253
// DN with ',' (comma) String unformatted = "Juicy, Fruit"; String formatted = Rdn.escapeValue(unformatted); LdapName dn = new LdapName("cn=" + formatted); System.out.println("dn:" + dn); unformatted = "true+false"; formatted = Rdn.escapeValue(unformatted); dn = new LdapName("cn=" + formatted); System.out.println("dn:" + dn); // DN with a binary value as one one of its attribute value byte[] bytes = new byte[] {1, 2, 3, 4}; formatted = Rdn.escapeValue(bytes); System.out.println("Orig val: " + bytes + "Escaped val: " + formatted);
Так же использование статического метода unescapeValue() можно получить исходную строку из отформатированного значения. Here
пример для того, чтобы получить исходное значение.
// DN with ',' (comma) String unformatted = "Juicy, Fruit"; String formatted = Rdn.escapeValue(unformatted); System.out.println("Formatted:" + formatted); Object original = Rdn.unescapeValue(formatted); System.out.println("Original:" + original); // DN with a '+' (plus) unformatted = "true+false"; formatted = Rdn.escapeValue(unformatted); System.out.println("Formatted:" + formatted); original = Rdn.unescapeValue(formatted); System.out.println("Original:" + original); // DN with a binary value as one one of its attribute value byte[] bytes = new byte[] {1, 2, 3, 4}; formatted = Rdn.escapeValue(bytes); System.out.println("Formatted:" + formatted); original = Rdn.unescapeValue(formatted); System.out.println("Original:" + original);