Package org.apache.tapestry5.internal.util

## Class NamedSet<T>

- java.lang.Object
- - org.apache.tapestry5.commons.internal.util.LockSupport
  - - org.apache.tapestry5.internal.util.NamedSet<T>

- Type Parameters:
    `T` - the type of value stored

      public class NamedSet<T>
      extends LockSupport

  Simple, thread-safe associative array that relates a name to a value. Names are case-insensitive. This is optimized to use less memory (than a `CaseInsensitiveMap` (it uses a singly-liked list), though the cost of a lookup is more expensive. However, this is a good match against many of the structures inside a page instance, where most lookups occur only during page constructions, and the number of values is often small. Each NameSet has its own `ReadWriteLock`.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `NamedSet()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <T> NamedSet<T>` | `create()` | Convenience method for creating a new, empty set.
    `void` | `eachValue​(Worker<T> worker)` | Iterates over the values, passing each in turn to the supplied worker.
    `T` | `get​(String name)` | Gets the value for the provided name.
    `static <T> T` | `get​(NamedSet<T> set, String name)` | Convenience method for getting a value from a set that may be null.
    `Set<String>` | `getNames()` | Returns a set of the names of all stored values.
    `static Set<String>` | `getNames​(NamedSet<?> set)` | Gets the names in the set, returning an empty set if the NamedSet is null.
    `Set<T>` | `getValues()` | Returns a set of all the values in the set.
    `static <T> Set<T>` | `getValues​(NamedSet<T> set)` | Returns the values in the set, returning an empty set if the NamedSet is null.
    `void` | `put​(String name, T newValue)` | Stores a new value into the set, replacing any previous value with the same name.
    `boolean` | `putIfNew​(String name, T newValue)` | Puts a new value, but only if it does not already exist.

    - ### Methods inherited from class org.apache.tapestry5.commons.internal.util.LockSupport

      `acquireReadLock, downgradeWriteLockToReadLock, releaseReadLock, releaseWriteLock, takeWriteLock, upgradeReadLockToWriteLock`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### NamedSet

          public NamedSet()

  - ### Method Detail

    - #### getNames

          public Set<String> getNames()

      Returns a set of the names of all stored values.

    - #### getValues

          public Set<T> getValues()

      Returns a set of all the values in the set.

    - #### get

          public T get​(String name)

      Gets the value for the provided name.
      Parameters:
        `name` - used to locate the value
      Returns:
        the value, or null if not found

    - #### put

          public void put​(String name,
                          T newValue)

      Stores a new value into the set, replacing any previous value with the same name. Name comparisons are case insensitive.
      Parameters:
        `name` - to store the value. May not be blank.
        `newValue` - non-null value to store

    - #### eachValue

          public void eachValue​(Worker<T> worker)

      Iterates over the values, passing each in turn to the supplied worker.
      Parameters:
        `worker` - performs an operation on, or using, the value

    - #### putIfNew

          public boolean putIfNew​(String name,
                                  T newValue)

      Puts a new value, but only if it does not already exist.
      Parameters:
        `name` - name to store (comparisons are case insensitive) may not be blank
        `newValue` - non-null value to store
      Returns:
        true if value stored, false if name already exists

    - #### create

          public static <T> NamedSet<T> create()

      Convenience method for creating a new, empty set.

    - #### get

          public static <T> T get​(NamedSet<T> set,
                                  String name)

      Convenience method for getting a value from a set that may be null.
      Type Parameters:
        `T` -
      Parameters:
        `set` - set to search, may be null
        `name` - name to lookup
      Returns:
        value from set, or null if not found, or if set is null

    - #### getNames

          public static Set<String> getNames​(NamedSet<?> set)

      Gets the names in the set, returning an empty set if the NamedSet is null.

    - #### getValues

          public static <T> Set<T> getValues​(NamedSet<T> set)

      Returns the values in the set, returning an empty set if the NamedSet is null.