org.apache.groovy.plugin

## Class GroovyRunnerRegistry

- java.lang.Object
- - org.apache.groovy.plugin.GroovyRunnerRegistry

- All Implemented Interfaces:
    java.lang.Iterable<GroovyRunner>, java.util.Map<java.lang.String,GroovyRunner>

      public class GroovyRunnerRegistry
      extends java.lang.Object
      implements java.util.Map<java.lang.String,GroovyRunner>, java.lang.Iterable<GroovyRunner>

  Registry of services that implement the `GroovyRunner` interface.

  This registry makes use of the `ServiceLoader` facility. The preferred method for registering new `GroovyRunner` providers is to place them in a provider-configuration file in the resource directory `META-INF/services`. The preferred method for accessing the registered runners is by making use of the `Iterable` interface using an enhanced for-loop.

  For compatibility with previous versions, this registry implements the `Map` interface. All `null` keys and values will be ignored and no exception thrown, except where noted.

  By default the registry contains runners that are capable of running `JUnit 3` and `JUnit 4` test classes if those libraries are available to the class loader.

  Since:
    2.5.0

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface java.util.Map

      `java.util.Map.Entry<K,V>`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Clears all registered runners from the registry and resets the registry so that it contains only the default set of runners.
    `boolean` | `containsKey(java.lang.Object key)` Returns `true` if a runner was registered with the specified key.
    `boolean` | `containsValue(java.lang.Object runner)` Returns `true` if registry contains the given runner instance.
    `java.util.Set<java.util.Map.Entry<java.lang.String,GroovyRunner>>` | `entrySet()` Returns a set of entries for registered runners.
    `GroovyRunner` | `get(java.lang.Object key)` Returns the registered runner for the specified key.
    `static GroovyRunnerRegistry` | `getInstance()` Returns a reference to the one and only registry instance.
    `boolean` | `isEmpty()` Returns `true` if the registry contains no runners, else `false`.
    `java.util.Iterator<GroovyRunner>` | `iterator()` Returns an iterator for all runners that are registered.
    `java.util.Set<java.lang.String>` | `keySet()` Set of all keys associated with registered runners.
    `void` | `load(java.lang.ClassLoader classLoader)` Loads `GroovyRunner` instances using the `ServiceLoader` facility.
    `GroovyRunner` | `put(java.lang.String key, GroovyRunner runner)` Registers a runner with the specified key.
    `void` | `putAll(java.util.Map<? extends java.lang.String,? extends GroovyRunner> m)` Adds all entries from the given Map to the registry.
    `GroovyRunner` | `remove(java.lang.Object key)` Removes a registered runner from the registry.
    `int` | `size()` Returns the number of registered runners.
    `java.lang.String` | `toString()`
    `java.util.Collection<GroovyRunner>` | `values()` Returns a collection of all registered runners.

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

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

    - ### Methods inherited from interface java.util.Map

      `compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Method Detail

    - #### getInstance

          public static GroovyRunnerRegistry getInstance()

      Returns a reference to the one and only registry instance.
      Returns:
        registry instance

    - #### load

          public void load(java.lang.ClassLoader classLoader)

      Loads `GroovyRunner` instances using the `ServiceLoader` facility.
      Parameters:
        `classLoader` - used to locate provider-configuration files and classes

    - #### iterator

          public java.util.Iterator<GroovyRunner> iterator()

      Returns an iterator for all runners that are registered. The returned iterator is a snapshot of the registry at the time the iterator is created. This iterator does not support removal.
      Specified by:
        `iterator` in interface `java.lang.Iterable<GroovyRunner>`
      Returns:
        iterator for all registered runners

    - #### size

          public int size()

      Returns the number of registered runners.
      Specified by:
        `size` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Returns:
        number of registered runners

    - #### isEmpty

          public boolean isEmpty()

      Returns `true` if the registry contains no runners, else `false`.
      Specified by:
        `isEmpty` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Returns:
        `true` if no runners are registered

    - #### containsKey

          public boolean containsKey(java.lang.Object key)

      Returns `true` if a runner was registered with the specified key.
      Specified by:
        `containsKey` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `key` - for the registered runner
      Returns:
        `true` if a runner was registered with given key

    - #### containsValue

          public boolean containsValue(java.lang.Object runner)

      Returns `true` if registry contains the given runner instance.
      Specified by:
        `containsValue` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `runner` - instance of a GroovyRunner
      Returns:
        `true` if the given runner is registered

    - #### get

          public GroovyRunner get(java.lang.Object key)

      Returns the registered runner for the specified key.
      Specified by:
        `get` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `key` - used to lookup the runner
      Returns:
        the runner registered with the given key

    - #### put

          public GroovyRunner put(java.lang.String key,
                                  GroovyRunner runner)

      Registers a runner with the specified key.
      Specified by:
        `put` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `key` - to associate with the runner
        `runner` - the runner to register
      Returns:
        the previously registered runner for the given key, if no runner was previously registered for the key then `null`

    - #### remove

          public GroovyRunner remove(java.lang.Object key)

      Removes a registered runner from the registry.
      Specified by:
        `remove` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `key` - of the runner to remove
      Returns:
        the runner instance that was removed, if no runner instance was removed then `null`

    - #### putAll

          public void putAll(java.util.Map<? extends java.lang.String,? extends GroovyRunner> m)

      Adds all entries from the given Map to the registry. Any entries in the provided Map that contain a `null` key or value will be ignored.
      Specified by:
        `putAll` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Parameters:
        `m` - entries to add to the registry
      Throws:
        `java.lang.NullPointerException` - if the given Map is `null`

    - #### clear

          public void clear()

      Clears all registered runners from the registry and resets the registry so that it contains only the default set of runners.
      Specified by:
        `clear` in interface `java.util.Map<java.lang.String,GroovyRunner>`

    - #### keySet

          public java.util.Set<java.lang.String> keySet()

      Set of all keys associated with registered runners. This is a snapshot of the registry and any subsequent registry changes will not be reflected in the set.
      Specified by:
        `keySet` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Returns:
        an unmodifiable set of keys for registered runners

    - #### values

          public java.util.Collection<GroovyRunner> values()

      Returns a collection of all registered runners. This is a snapshot of the registry and any subsequent registry changes will not be reflected in the collection.
      Specified by:
        `values` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Returns:
        an unmodifiable collection of registered runner instances

    - #### entrySet

          public java.util.Set<java.util.Map.Entry<java.lang.String,GroovyRunner>> entrySet()

      Returns a set of entries for registered runners. This is a snapshot of the registry and any subsequent registry changes will not be reflected in the set.
      Specified by:
        `entrySet` in interface `java.util.Map<java.lang.String,GroovyRunner>`
      Returns:
        an unmodifiable set of registered runner entries

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`