Package org.ldaptive

Class LdapAttribute

java.lang.Object
org.ldaptive.LdapAttribute
Direct Known Subclasses:
UnicodePwdAttribute

public class LdapAttribute extends Object
LDAP attribute defined as:
   Attribute ::= PartialAttribute(WITH COMPONENTS {
     ...,
     vals (SIZE(1..MAX))})
 
  • Field Details

    • HASH_CODE_SEED

      private static final int HASH_CODE_SEED
      hash code seed.
      See Also:
    • DEFAULT_BINARY_ATTRIBUTES

      private static final String[] DEFAULT_BINARY_ATTRIBUTES
      List of attribute names known to use binary syntax.
    • BINARY_ATTRIBUTES

      private static final String[] BINARY_ATTRIBUTES
      List of custom binary attribute names.
    • attributeName

      private String attributeName
      Attribute name.
    • attributeValues

      private Set<ByteBuffer> attributeValues
      Attribute values.
    • binary

      private boolean binary
      Whether this attribute is binary and string representations should be base64 encoded.
  • Constructor Details

    • LdapAttribute

      public LdapAttribute()
      Default constructor.
    • LdapAttribute

      public LdapAttribute(String type)
      Creates a new attribute.
      Parameters:
      type - attribute description
    • LdapAttribute

      public LdapAttribute(String type, byte[]... value)
      Creates a new attribute.
      Parameters:
      type - attribute description
      value - attribute values
    • LdapAttribute

      public LdapAttribute(String type, String... value)
      Creates a new attribute.
      Parameters:
      type - attribute description
      value - attribute values
  • Method Details

    • setName

      public void setName(String type)
      Sets the name. This method has the side effect of setting this attribute as binary if the name has an option of 'binary' or the name matches one of BINARY_ATTRIBUTES.
      Parameters:
      type - attribute name
    • isBinary

      public boolean isBinary()
      Returns whether this ldap attribute is binary.
      Returns:
      whether this ldap attribute is binary
    • setBinary

      public void setBinary(boolean b)
      Sets whether this ldap attribute is binary.
      Parameters:
      b - whether this ldap attribute is binary
    • configureBinary

      public void configureBinary(String... attrNames)
      Checks whether attrNames matches the name of this attribute. If a match is found this attribute is set as binary.
      Parameters:
      attrNames - custom binary attribute names
    • getName

      public String getName()
      Returns the attribute description with options.
      Returns:
      attribute description
    • getName

      public String getName(boolean withOptions)
      Returns the attribute description with or without options.
      Parameters:
      withOptions - whether the attribute description should include options
      Returns:
      attribute description
    • getOptions

      public List<String> getOptions()
      Returns any options that may exist on the attribute description.
      Returns:
      attribute description options
    • getBinaryValue

      public byte[] getBinaryValue()
      Returns a single byte array value of this attribute.
      Returns:
      single byte array attribute value or null if this attribute is empty
    • getBinaryValues

      public Collection<byte[]> getBinaryValues()
      Returns the values of this attribute as byte arrays. The return collection cannot be modified.
      Returns:
      collection of string attribute values
    • getStringValue

      public String getStringValue()
      Returns a single string value of this attribute.
      Returns:
      single string attribute value or null if this attribute is empty
    • getStringValues

      public Collection<String> getStringValues()
      Returns the values of this attribute as strings. Binary data is base64 encoded. The return collection cannot be modified.
      Returns:
      collection of string attribute values
    • getValue

      public <T> T getValue(Function<byte[],T> func)
      Returns a single decoded value of this attribute.
      Type Parameters:
      T - type of decoded attribute
      Parameters:
      func - to decode attribute value with
      Returns:
      single decoded attribute value or null if this attribute is empty
    • getValues

      public <T> Collection<T> getValues(Function<byte[],T> func)
      Returns the values of this attribute decoded by the supplied function.
      Type Parameters:
      T - type of decoded attributes
      Parameters:
      func - to decode attribute values with
      Returns:
      collection of decoded attribute values, null values are discarded
    • addBinaryValues

      public void addBinaryValues(byte[]... value)
      Adds the supplied byte array as a value for this attribute.
      Parameters:
      value - to add, null values are discarded
    • addBinaryValues

      public void addBinaryValues(Collection<byte[]> values)
      Adds all the byte arrays in the supplied collection as values for this attribute.
      Parameters:
      values - to add, null values are discarded
    • addStringValues

      public void addStringValues(String... value)
      Adds the supplied string as a value for this attribute.
      Parameters:
      value - to add, null values are discarded
    • addStringValues

      public void addStringValues(Collection<String> values)
      Adds all the strings in the supplied collection as values for this attribute.
      Parameters:
      values - to add, null values are discarded
    • addBufferValues

      public void addBufferValues(ByteBuffer... values)
      Adds all the buffers in the supplied collection as values for this attribute.
      Parameters:
      values - to add, null values are discarded
    • addBufferValues

      public void addBufferValues(Collection<ByteBuffer> values)
      Adds all the buffers in the supplied collection as values for this attribute.
      Parameters:
      values - to add, null values are discarded
    • addValues

      public <T> void addValues(Function<T,byte[]> func, T... value)
      Adds the supplied values for this attribute by encoding them with the supplied function.
      Type Parameters:
      T - type attribute to encode
      Parameters:
      func - to encode value with
      value - to encode and add, null values are discarded
    • addValues

      public <T> void addValues(Function<T,byte[]> func, Collection<T> values)
      Adds all the values in the supplied collection for this attribute by encoding them with the supplied function. See addValues(Function, Object...).
      Type Parameters:
      T - type attribute to encode
      Parameters:
      func - to encode value with
      values - to encode and add, null values are discarded
    • removeBinaryValues

      public void removeBinaryValues(byte[]... value)
      Removes the supplied byte array as a value from this attribute.
      Parameters:
      value - to remove, null values are discarded
    • removeBinaryValues

      public void removeBinaryValues(Collection<byte[]> values)
      Removes all the byte arrays in the supplied collection as values from this attribute.
      Parameters:
      values - to remove, null values are discarded
    • removeStringValues

      public void removeStringValues(String... value)
      Removes the supplied string as a value from this attribute.
      Parameters:
      value - to remove, null values are discarded
    • removeStringValues

      public void removeStringValues(Collection<String> values)
      Removes all the strings in the supplied collection as values from this attribute.
      Parameters:
      values - to remove, null values are discarded
    • removeBufferValues

      public void removeBufferValues(ByteBuffer... values)
      Removes all the buffers in the supplied collection as values from this attribute.
      Parameters:
      values - to remove, null values are discarded
    • removeBufferValues

      public void removeBufferValues(Collection<ByteBuffer> values)
      Removes all the buffers in the supplied collection as values from this attribute.
      Parameters:
      values - to remove, null values are discarded
    • size

      public int size()
      Returns the number of values in this ldap attribute.
      Returns:
      number of values in this ldap attribute
    • clear

      public void clear()
      Removes all the values in this ldap attribute.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

      public String toString()
      Overrides:
      toString in class Object
    • sort

      public static LdapAttribute sort(LdapAttribute la)
      Returns a new attribute whose values are sorted. String values are sorted naturally. Binary values are sorted using ByteBuffer.compareTo(ByteBuffer).
      Parameters:
      la - attribute to sort
      Returns:
      sorted attribute
    • escapeValue

      @Deprecated public static String escapeValue(String value)
      Escapes the supplied string value per RFC 4514 section 2.4.
      Parameters:
      value - to escape
      Returns:
      escaped value
    • builder

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