Class Dn

  • All Implemented Interfaces:
    Freezable

    public final class Dn
    extends AbstractFreezable
    Distinguished name containing zero or more relative distinguished names. RDNs are ordered from left to right such that the left-most RDN is considered the first. For the DN 'cn=Jane Doe,ou=People,dc=ldaptive,dc=org', the first RDN is 'cn=Jane Doe'. See RFC 4514 for more details on the string representations of DNs.
    • Field Detail

      • HASH_CODE_SEED

        private static final int HASH_CODE_SEED
        hash code seed.
        See Also:
        Constant Field Values
      • rdnComponents

        private final List<RDn> rdnComponents
        RDN components.
    • Constructor Detail

      • Dn

        public Dn()
        Default constructor.
      • Dn

        public Dn​(String dn)
        Creates a new DN with the supplied string. Uses a DefaultDnParser by default.
        Parameters:
        dn - to parse
      • Dn

        public Dn​(String dn,
                  DnParser parser)
        Creates a new DN with the supplied string.
        Parameters:
        dn - to parse
        parser - to parse dn
      • Dn

        public Dn​(RDn... rdn)
        Creates a new DN with the supplied RDNs.
        Parameters:
        rdn - to add
      • Dn

        public Dn​(List<RDn> rdns)
        Creates a new DN with the supplied RDNs.
        Parameters:
        rdns - to add
    • Method Detail

      • getRDn

        public RDn getRDn()
        Returns the first RDN in this DN.
        Returns:
        first RDN
      • getRDns

        public List<RDn> getRDns()
        Returns the RDNs in this DN.
        Returns:
        RDNs
      • add

        public void add​(Dn dn)
        Adds all the RDNs in the supplied DN to the end of this DN.
        Parameters:
        dn - to add to this DN
      • add

        public void add​(RDn rdn)
        Adds the supplied RDN to the end of this DN.
        Parameters:
        rdn - to add to this DN
      • add

        public void add​(int index,
                        RDn rdn)
        Adds the supplied RDN at the supplied index.
        Parameters:
        index - to add the RDN at
        rdn - to add to this DN
      • subDn

        public Dn subDn​(int index)
        Returns a new DN containing all the RDN components from the supplied index.
        Parameters:
        index - of RDNs to include
        Returns:
        DN with sub-components of this DN
      • subDn

        public Dn subDn​(int beginIndex,
                        int endIndex)
        Returns a new DN containing all the RDN components between the supplied indexes.
        Parameters:
        beginIndex - first RDN to include (inclusive)
        endIndex - last RDN to include (exclusive)
        Returns:
        DN with sub-components of this DN or null if beginIndex > endIndex
      • getParent

        public Dn getParent()
        Convenience method to retrieve the parent DN. Invokes subDn(int) with a parameter of 1.
        Returns:
        DN containing all sub-components of this DN except the first or null if this DN has no components
      • getNames

        public Collection<String> getNames()
        Returns all the RDN names.
        Returns:
        all RDN names
      • getValues

        public Collection<String> getValues​(String name)
        Returns the RDN values with the supplied name. If the RDN is multi-value the first value is used.
        Parameters:
        name - of the RDN
        Returns:
        RDN values for the supplied name
      • getValue

        public String getValue​(String name)
        Returns the first RDN value with the supplied name. If the RDN is multi-value the first value is used.
        Parameters:
        name - of the RDN
        Returns:
        RDN value
      • size

        public int size()
        Returns the number of RDNs in this DN.
        Returns:
        number of RDNs
      • isEmpty

        public boolean isEmpty()
        Returns whether this DN contains any RDN components.
        Returns:
        whether this DN contains any RDN components
      • isSame

        public boolean isSame​(Dn dn)
        Returns whether the normalized format of the supplied DN equals the normalized format of this DN. See DefaultRDnNormalizer.
        Parameters:
        dn - to compare
        Returns:
        whether the supplied DN is the same as this DN
      • isSame

        public boolean isSame​(Dn dn,
                              RDnNormalizer normalizer)
        Returns whether the normalized format of the supplied DN equals the normalized format of this DN.
        Parameters:
        normalizer - to use for comparison
        dn - to compare
        Returns:
        whether the supplied DN is the same as this DN
      • isAncestor

        public boolean isAncestor​(Dn dn)
        Returns whether the supplied DN is an ancestor. See isSame(Dn).
        Parameters:
        dn - to determine ancestry of
        Returns:
        whether the supplied DN is an ancestor
      • isAncestor

        public boolean isAncestor​(Dn dn,
                                  RDnNormalizer normalizer)
        Returns whether the supplied DN is an ancestor. See isSame(Dn, RDnNormalizer).
        Parameters:
        dn - to determine ancestry of
        normalizer - to format DN for comparison
        Returns:
        whether the supplied DN is an ancestor
      • isDescendant

        public boolean isDescendant​(Dn dn)
        Returns whether the supplied DN is a descendant. See isSame(Dn).
        Parameters:
        dn - to determine descendancy of
        Returns:
        whether the supplied DN is a descendant
      • isDescendant

        public boolean isDescendant​(Dn dn,
                                    RDnNormalizer normalizer)
        Returns whether the supplied DN is a descendant. See isSame(Dn, RDnNormalizer).
        Parameters:
        dn - to determine descendancy of
        normalizer - to format DN for comparison
        Returns:
        whether the supplied DN is a descendant
      • format

        public String format()
        Produces a string representation of this DN. Uses a DefaultRDnNormalizer by default.
        Returns:
        DN string
      • format

        public String format​(RDnNormalizer normalizer)
        Produces a string representation of this DN.
        Parameters:
        normalizer - to apply to the RDN components or null for no formatting
        Returns:
        DN string
      • format

        public String format​(RDnNormalizer normalizer,
                             char delimiter,
                             boolean reverse)
        Produces a string representation of this DN.
        Parameters:
        normalizer - to apply to the RDN components or null for no formatting
        delimiter - to separate each RDN component
        reverse - whether to reverse the order of RDN components for formatting. i.e. process components from right to left
        Returns:
        DN string
      • hashCode

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

        public static Dn copy​(Dn dn)
        Creates a mutable copy of the supplied DN.
        Parameters:
        dn - to copy
        Returns:
        new DN instance
      • builder

        public static Dn.Builder builder()
        Creates a builder for this class.
        Returns:
        new builder