Interface Attributes

All Known Implementing Classes:
AggregateAttributes, MapAttributes

public interface Attributes

A collection of string attributes.

By default, this interface provides a default implementation for all methods that perform writes to the collection. The default implementation will always throw a UnsupportedOperationException, which means the collection is read-only by default.

If an implementation needs to also support writes it must override and implement all these default methods.

Author:
David M. Lloyd
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    The entry collection for a mapping.
    static interface 
    The entry collection for a mapping whose values are a distinct set.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Attributes
    Empty, read-only attribute collection.
  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    add(String key, int idx, String value)
    Add a mapping for the given key at the given position.
    default boolean
    addAll(String key, Collection<String> values)
    Add all the values from the given collection to the value collection for the given key.
    default boolean
    addAll(Map<String,? extends Collection<String>> map)
    Add all the values from the given map to this attributes collection.
    default void
    addFirst(String key, String value)
    Add a value before the first mapping for the given key.
    default void
    addLast(String key, String value)
    Add a value after the last mapping for the given key.
    default Attributes
    Returns a read-only instance of this instance.
    default void
    Clear this collection, resetting its size to zero.
    default boolean
    Determine if the given key has values in this collection.
    default boolean
    Determine if the given key has a mapping for the given value in this collection.
    default List<String>
    Remove all values for the given key from this collection, copying the values into a list which is returned.
    default List<String>
    Replace the mapping for the given key with the values copied from the given collection.
    Get the entry collection.
    get(String key)
    Get the collection of values for the given key.
    get(String key, int idx)
    Get the mapping for the given key at the given position.
    default String
    Get the first value mapped to the given key.
    default String
    Get the last value mapped to the given key.
    default int
    indexOf(String key, String value)
    Get the index of the first occurrence of the given value at the given key, if any.
    default boolean
    Determine if this collection is empty.
    default Set<String>
    Get a set comprised of all the keys in this collection.
    default int
    lastIndexOf(String key, String value)
    Get the index of the last occurrence of the given value at the given key, if any.
    default boolean
    Remove all values for the given key from this collection.
    default String
    remove(String key, int idx)
    Remove and return the mapping for the given key at the given position.
    default boolean
    remove(String key, int idx, String value)
    Remove the mapping for the given key at the given position if it matches the given existing value.
    default boolean
    removeAll(String key, String value)
    Remove the all occurrences of the given value under the given key, if any.
    default String
    Remove the first value mapped to the given key.
    default boolean
    removeFirst(String key, String value)
    Remove the first occurrence of the given value under the given key, if any.
    default String
    Remove the last value mapped to the given key.
    default boolean
    removeLast(String key, String value)
    Remove the last occurrence of the given value under the given key, if any.
    default void
    removeRange(String key, int from, int to)
    Remove all the values for the given key between the from index (inclusive) and the to index (exclusive).
    default String
    set(String key, int idx, String value)
    Modify the mapping for the given key at the given position.
    default boolean
    set(String key, int idx, String expect, String update)
    Conditionally set a specific value of a given key to a new value, if the existing value matches the expect parameter.
    int
    Get the number of keys in this attribute collection.
    int
    size(String key)
    Get the number of values mapped to the given key.
    Get all the values of all the keys in this collection.
  • Field Details

    • EMPTY

      static final Attributes EMPTY
      Empty, read-only attribute collection.
  • Method Details

    • entries

      Get the entry collection. Changes to the entry collection will modify this attribute collection, if it is writable. The returned entries will remain up to date with the state of this collection.
      Returns:
      the entry collection
    • size

      int size(String key)
      Get the number of values mapped to the given key.
      Parameters:
      key - the key
      Returns:
      the number of mapped values
    • get

      Get the collection of values for the given key. The result may implement Attributes.SetEntry if the values are distinct (for example, a role or group set).
      Parameters:
      key - the attribute name
      Returns:
      the (possibly empty) attribute value collection
    • get

      String get(String key, int idx)
      Get the mapping for the given key at the given position.
      Parameters:
      key - the key
      idx - the index
      Returns:
      the mapping value
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
    • size

      int size()
      Get the number of keys in this attribute collection.
      Returns:
      the number of keys
    • remove

      default boolean remove(String key)
      Remove all values for the given key from this collection.
      Parameters:
      key - the key
      Returns:
      true if the key was found, false otherwise
      Throws:
      UnsupportedOperationException - if this method is not implemented and the operation is not supported
    • add

      default void add(String key, int idx, String value)
      Add a mapping for the given key at the given position.
      Parameters:
      key - the key
      idx - the index
      value - the mapping value
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
      UnsupportedOperationException - if this method is not implemented and the operation is not supported
    • set

      default String set(String key, int idx, String value)
      Modify the mapping for the given key at the given position.
      Parameters:
      key - the key
      idx - the index
      value - the mapping value
      Returns:
      the previous mapping value
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
      UnsupportedOperationException - if this method is not implemented and the operation is not supported
    • remove

      default String remove(String key, int idx)
      Remove and return the mapping for the given key at the given position. All later entries for that key are shifted up to fill in the gap left by the removed element.
      Parameters:
      key - the key
      idx - the index
      Returns:
      the previous mapping value
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
      UnsupportedOperationException - if this method is not implemented and the operation is not supported
    • clear

      default void clear()
      Clear this collection, resetting its size to zero.
      Throws:
      UnsupportedOperationException - if this method is not implemented and the operation is not supported
    • copyAndRemove

      default List<String> copyAndRemove(String key)
      Remove all values for the given key from this collection, copying the values into a list which is returned.
      Parameters:
      key - the key
      Returns:
      the values as a list (not null)
    • values

      default Collection<String> values()
      Get all the values of all the keys in this collection. The returned collection can be used to modify this attributes collection.
      Returns:
      the collection of all values (not null)
    • keySet

      default Set<String> keySet()
      Get a set comprised of all the keys in this collection. The returned set can be used to modify this attributes collection.
      Returns:
      the set of all keys (not null)
    • set

      default boolean set(String key, int idx, String expect, String update)
      Conditionally set a specific value of a given key to a new value, if the existing value matches the expect parameter.
      Parameters:
      key - the key
      idx - the index
      expect - the expected value
      update - the value to set
      Returns:
      true if the actual value matched the expected value and was updated, false otherwise
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
    • indexOf

      default int indexOf(String key, String value)
      Get the index of the first occurrence of the given value at the given key, if any.
      Parameters:
      key - the key
      value - the value
      Returns:
      the index, or -1 if the value was not found at the given key
    • lastIndexOf

      default int lastIndexOf(String key, String value)
      Get the index of the last occurrence of the given value at the given key, if any.
      Parameters:
      key - the key
      value - the value
      Returns:
      the index, or -1 if the value was not found at the given key
    • removeRange

      default void removeRange(String key, int from, int to)
      Remove all the values for the given key between the from index (inclusive) and the to index (exclusive).
      Parameters:
      key - the key
      from - the start index (inclusive)
      to - the end index (exclusive)
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
    • getFirst

      default String getFirst(String key)
      Get the first value mapped to the given key.
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      IndexOutOfBoundsException - if there are no values for the given key
    • getLast

      default String getLast(String key)
      Get the last value mapped to the given key.
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      IndexOutOfBoundsException - if there are no values for the given key
    • addFirst

      default void addFirst(String key, String value)
      Add a value before the first mapping for the given key.
      Parameters:
      key - the key
      value - the value
    • addLast

      default void addLast(String key, String value)
      Add a value after the last mapping for the given key.
      Parameters:
      key - the key
      value - the value
    • removeFirst

      default String removeFirst(String key)
      Remove the first value mapped to the given key.
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      IndexOutOfBoundsException - if there are no values for the given key
    • removeLast

      default String removeLast(String key)
      Remove the last value mapped to the given key.
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      IndexOutOfBoundsException - if there are no values for the given key
    • remove

      default boolean remove(String key, int idx, String value)
      Remove the mapping for the given key at the given position if it matches the given existing value. All later entries for that key are shifted up to fill in the gap left by the removed element.
      Parameters:
      key - the key
      idx - the index
      value - the expected previous mapping value
      Returns:
      true if the value matched and was removed, false otherwise
      Throws:
      IndexOutOfBoundsException - if idx is less than 0 or greater than or equal to size(key)
    • removeFirst

      default boolean removeFirst(String key, String value)
      Remove the first occurrence of the given value under the given key, if any.
      Parameters:
      key - the key
      value - the value to remove
      Returns:
      true if the value was found and removed, false otherwise
    • removeLast

      default boolean removeLast(String key, String value)
      Remove the last occurrence of the given value under the given key, if any.
      Parameters:
      key - the key
      value - the value to remove
      Returns:
      true if the value was found and removed, false otherwise
    • removeAll

      default boolean removeAll(String key, String value)
      Remove the all occurrences of the given value under the given key, if any.
      Parameters:
      key - the key
      value - the value to remove
      Returns:
      true if the value was found and removed, false otherwise
    • addAll

      default boolean addAll(Map<String,? extends Collection<String>> map)
      Add all the values from the given map to this attributes collection.
      Parameters:
      map - the map to copy from
      Returns:
      true if elements were added, false otherwise
    • addAll

      default boolean addAll(String key, Collection<String> values)
      Add all the values from the given collection to the value collection for the given key.
      Parameters:
      key - the key
      values - the values to add
      Returns:
      true if elements were added, false otherwise
    • containsKey

      default boolean containsKey(String key)
      Determine if the given key has values in this collection.
      Parameters:
      key - the key
      Returns:
      true if the key has values, false otherwise
    • containsValue

      default boolean containsValue(String key, String value)
      Determine if the given key has a mapping for the given value in this collection.
      Parameters:
      key - the key
      value - the value
      Returns:
      true if the key has a mapping to the given value, false otherwise
    • copyAndReplace

      default List<String> copyAndReplace(String key, Collection<String> values)
      Replace the mapping for the given key with the values copied from the given collection.
      Parameters:
      key - the key
      values - the new values
      Returns:
      a list containing the previously mapped values
    • isEmpty

      default boolean isEmpty()
      Determine if this collection is empty.
      Returns:
      true if the collection is empty, false otherwise
    • asReadOnly

      default Attributes asReadOnly()
      Returns a read-only instance of this instance.
      Returns:
      a read-only instance of this instance.