Class Rdn

  • All Implemented Interfaces:
    Comparable<Rdn>, Iterable<Ava>

    public final class Rdn
    extends Object
    implements Iterable<Ava>, Comparable<Rdn>
    A relative distinguished name (RDN) as defined in RFC 4512 section 2.3 is the name of an entry relative to its immediate superior. An RDN is composed of an unordered set of one or more attribute value assertions (AVA) consisting of an attribute description with zero options and an attribute value. These AVAs are chosen to match attribute values (each a distinguished value) of the entry.

    An entry's relative distinguished name must be unique among all immediate subordinates of the entry's immediate superior (i.e. all siblings).

    The following are examples of string representations of RDNs:

     uid=12345
     ou=Engineering
     cn=Kurt Zeilenga+L=Redwood Shores
     
    The last is an example of a multi-valued RDN; that is, an RDN composed of multiple AVAs.
    See Also:
    RFC 4512 - Lightweight Directory Access Protocol (LDAP): Directory Information Models
    • Constructor Detail

      • Rdn

        public Rdn​(AttributeType attributeType,
                   Object attributeValue)
        Creates a new RDN using the provided attribute type and value.

        If attributeValue is not an instance of ByteString then it will be converted using the ByteString.valueOfObject(Object) method.

        Parameters:
        attributeType - The attribute type.
        attributeValue - The attribute value.
        Throws:
        NullPointerException - If attributeType or attributeValue was null.
      • Rdn

        public Rdn​(String attributeType,
                   Object attributeValue)
        Creates a new RDN using the provided attribute type and value decoded using the default schema.

        If attributeValue is not an instance of ByteString then it will be converted using the ByteString.valueOfObject(Object) method.

        Parameters:
        attributeType - The attribute type.
        attributeValue - The attribute value.
        Throws:
        UnknownSchemaElementException - If attributeType was not found in the default schema.
        NullPointerException - If attributeType or attributeValue was null.
      • Rdn

        public Rdn​(Ava... avas)
        Creates a new RDN using the provided AVAs.
        Parameters:
        avas - The attribute-value assertions used to build this RDN.
        Throws:
        NullPointerException - If avas is null or contains a null ava.
        IllegalArgumentException - If avas is empty.
    • Method Detail

      • minValue

        public static Rdn minValue()
        Returns a constant containing a special RDN which sorts before any RDN other than itself. This RDN may be used in order to perform range queries on DN keyed collections such as SortedSets and SortedMaps. For example, the following code can be used to construct a range whose contents is a sub-tree of entries, excluding the base entry:
         
         SortedMap<Dn, Entry> entries = ...;
         Dn baseDn = ...;
        
         // Returns a map containing the baseDN and all of its subordinates.
         SortedMap<Dn,Entry> subtree = entries.subMap(
             baseDn.child(Rdn.minValue()), baseDn.child(Rdn.maxValue()));
         
         
        Returns:
        A constant containing a special RDN which sorts before any RDN other than itself.
        See Also:
        maxValue()
      • maxValue

        public static Rdn maxValue()
        Returns a constant containing a special RDN which sorts after any RDN other than itself. This RDN may be used in order to perform range queries on DN keyed collections such as SortedSets and SortedMaps. For example, the following code can be used to construct a range whose contents is a sub-tree of entries:
         
         SortedMap<Dn, Entry> entries = ...;
         Dn baseDn = ...;
        
         // Returns a map containing the baseDN and all of its subordinates.
         SortedMap<Dn,Entry> subtree = entries.subMap(baseDn, baseDn.child(Rdn.maxValue()));
         
         
        Returns:
        A constant containing a special RDN which sorts after any RDN other than itself.
        See Also:
        minValue()
      • valueOf

        public static Rdn valueOf​(String rdn)
        Parses the provided LDAP string representation of an RDN using the default schema.
        Parameters:
        rdn - The LDAP string representation of a RDN.
        Returns:
        The parsed RDN.
        Throws:
        LocalizedIllegalArgumentException - If rdn is not a valid LDAP string representation of a RDN.
        NullPointerException - If rdn was null.
      • valueOf

        public static Rdn valueOf​(String rdn,
                                  Schema schema)
        Parses the provided LDAP string representation of a RDN using the provided schema.
        Parameters:
        rdn - The LDAP string representation of a RDN.
        schema - The schema to use when parsing the RDN.
        Returns:
        The parsed RDN.
        Throws:
        LocalizedIllegalArgumentException - If rdn is not a valid LDAP string representation of a RDN.
        NullPointerException - If rdn or schema was null.
      • getAttributeValue

        public ByteString getAttributeValue​(AttributeType attributeType)
        Returns the attribute value contained in this RDN which is associated with the provided attribute type, or null if this RDN does not include such an attribute value.
        Parameters:
        attributeType - The attribute type.
        Returns:
        The attribute value.
      • getFirstAva

        public Ava getFirstAva()
        Returns the first AVA contained in this RDN.
        Returns:
        The first AVA contained in this RDN.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • isMultiValued

        public boolean isMultiValued()
        Returns true if this RDN contains more than one AVA.
        Returns:
        true if this RDN contains more than one AVA, otherwise false.
      • hasAttributeType

        public boolean hasAttributeType​(AttributeType attributeType)
        Indicates whether this RDN includes the specified attribute type.
        Parameters:
        attributeType - The attribute type for which to make the determination.
        Returns:
        true if the RDN includes the specified attribute type, or false if not.
      • iterator

        public Iterator<Ava> iterator()
        Returns an iterator of the AVAs contained in this RDN. The AVAs will be returned in the user provided order.

        Attempts to remove AVAs using an iterator's remove() method are not permitted and will result in an UnsupportedOperationException being thrown.

        Specified by:
        iterator in interface Iterable<Ava>
        Returns:
        An iterator of the AVAs contained in this RDN.
      • size

        public int size()
        Returns the number of AVAs in this RDN.
        Returns:
        The number of AVAs in this RDN.