Serializable
, Comparable<Object>
public class Rdn extends Object implements Serializable, Comparable<Object>
LdapName
. The Rdn class represents an RDN as attribute type/value mappings, which can be viewed using Attributes
. In addition, it contains convenience methods that allow easy retrieval of type and value when the Rdn consist of a single type/value pair, which is how it appears in a typical usage. It also contains helper methods that allow escaping of the unformatted attribute value and unescaping of the value formatted according to the escaping syntax defined in RFC2253. For methods that take or return attribute value as an Object, the value is either a String (in unescaped form) or a byte array.
Rdn
will properly parse all valid RDNs, but does not attempt to detect all possible violations when parsing invalid RDNs. It is "generous" in accepting invalid RDNs. The "validity" of a name is determined ultimately when it is supplied to an LDAP server, which may accept or reject the name based on factors such as its schema information and interoperability considerations.
The following code example shows how to construct an Rdn using the constructor that takes type and value as arguments:
Rdn rdn = new Rdn("cn", "Juicy, Fruit"); System.out.println(rdn.toString());The last line will print
cn=Juicy\, Fruit
. The unescapeValue()
method can be used to unescape the escaped comma resulting in the original value "Juicy, Fruit"
. The escapeValue()
method adds the escape back preceding the comma. This class can be instantiated by a string representation of the RDN defined in RFC 2253 as shown in the following code example:
Rdn rdn = new Rdn("cn=Juicy\\, Fruit"); System.out.println(rdn.toString());The last line will print
cn=Juicy\, Fruit
. Concurrent multithreaded read-only access of an instance of Rdn
need not be synchronized.
Unless otherwise noted, the behavior of passing a null argument to a constructor or method in this class will cause NullPointerException to be thrown.
Constructor | Description |
---|---|
Rdn |
Constructs an Rdn from the given string. |
Rdn |
Constructs an Rdn from the given attribute type and value. |
Rdn |
Constructs an Rdn from the given attribute set. |
Rdn |
Constructs an Rdn from the given rdn . |
Modifier and Type | Method | Description |
---|---|---|
int |
compareTo |
Compares this Rdn with the specified Object for order. |
boolean |
equals |
Compares the specified Object with this Rdn for equality. |
static String |
escapeValue |
Given the value of an attribute, returns a string escaped according to the rules specified in RFC 2253. |
String |
getType() |
Retrieves one of this Rdn's type. |
Object |
getValue() |
Retrieves one of this Rdn's value. |
int |
hashCode() |
Returns the hash code of this RDN. |
int |
size() |
Retrieves the number of attribute type/value pairs in this Rdn. |
Attributes |
toAttributes() |
Retrieves the Attributes view of the type/value mappings contained in this Rdn. |
String |
toString() |
|
static Object |
unescapeValue |
Given an attribute value string formatted according to the rules specified in RFC 2253, returns the unformatted value. |
public Rdn(Attributes attrSet) throws InvalidNameException
Attributes
. The string attribute values are not interpreted as RFC 2253 formatted RDN strings. That is, the values are used literally (not parsed) and assumed to be unescaped.
attrSet
- The non-null and non-empty attributes containing type/value mappings.InvalidNameException
- If contents of attrSet
cannot be used to construct a valid RDN.public Rdn(String rdnString) throws InvalidNameException
LdapName
.rdnString
- The non-null and non-empty RFC2253 formatted string.InvalidNameException
- If a syntax error occurs during parsing of the rdnString.public Rdn(Rdn rdn)
rdn
. The contents of the rdn
are simply copied into the newly created Rdn.rdn
- The non-null Rdn to be copied.public Rdn(String type, Object value) throws InvalidNameException
type
- The non-null and non-empty string attribute type.value
- The non-null and non-empty attribute value.InvalidNameException
- If type/value cannot be used to construct a valid RDN.public Object getValue()
For a multi-valued RDN, this method returns value corresponding to the type returned by getType()
method.
public String getType()
For a multi-valued RDN, the type/value pairs have no specific order defined on them. In that case, this method returns type of one of the type/value pairs. The getValue()
method returns the value corresponding to the type returned by this method.
public String toString()
public int compareTo(Object obj)
If obj is null or not an instance of Rdn, ClassCastException is thrown.
The attribute type and value pairs of the RDNs are lined up against each other and compared lexicographically. The order of components in multi-valued Rdns (such as "ou=Sales+cn=Bob") is not significant.
compareTo
in interface Comparable<Object>
obj
- The non-null object to compare against.ClassCastException
- if obj is null or not a Rdn.public boolean equals(Object obj)
Type and value equality matching is done as below:
If obj is null or not an instance of Rdn, false is returned.
public int hashCode()
public Attributes toAttributes()
Attributes
view of the type/value mappings contained in this Rdn.public int size()
public static String escapeValue(Object val)
For example, if the val is "Sue, Grabbit and Runn", the escaped value returned by this method is "Sue\, Grabbit and Runn".
A string value is represented as a String and binary value as a byte array.
val
- The non-null object to be escaped.ClassCastException
- if val is not a String or byte array.public static Object unescapeValue(String val)
Legal and illegal values are defined in RFC 2253. This method is generous in accepting the values and does not catch all illegal values. Therefore, passing in an illegal value might not necessarily trigger an IllegalArgumentException
.
val
- The non-null string to be unescaped.IllegalArgumentException
- When an Illegal value is provided.
© 1993, 2023, 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/21/docs/api/java.naming/javax/naming/ldap/Rdn.html