Package org.apache.groovy.plugin

# Class GroovyRunnerRegistry

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

All Implemented Interfaces:
  `Iterable<GroovyRunner>`, `Map<String,GroovyRunner>`

public class GroovyRunnerRegistry extends Object implements Map<String,GroovyRunner>, 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

  `Map.Entry<K extends Object,V extends Object>`

- ## Method Summary

  Modifier and Type
  Method
  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(Object key)`
  Returns `true` if a runner was registered with the specified key.
  `boolean`
  `containsValue(Object runner)`
  Returns `true` if registry contains the given runner instance.
  `Set<Map.Entry<String,GroovyRunner>>`
  `entrySet()`
  Returns a set of entries for registered runners.
  `GroovyRunner`
  `get(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`.
  `Iterator<GroovyRunner>`
  `iterator()`
  Returns an iterator for all runners that are registered.
  `Set<String>`
  `keySet()`
  Set of all keys associated with registered runners.
  `void`
  `load(ClassLoader classLoader)`
  Loads `GroovyRunner` instances using the `ServiceLoader` facility.
  `GroovyRunner`
  `put(String key, GroovyRunner runner)`
  Registers a runner with the specified key.
  `void`
  `putAll(Map<? extends String,? extends GroovyRunner> m)`
  Adds all entries from the given Map to the registry.
  `GroovyRunner`
  `remove(Object key)`
  Removes a registered runner from the registry.
  `int`
  `size()`
  Returns the number of registered runners.
  `String`
  `toString()`
  `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.lang.Iterable

  `forEach, spliterator`

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

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

- ## Method Details

  - ### getInstance

    public static GroovyRunnerRegistry getInstance()
    Returns a reference to the one and only registry instance.
    Returns:
      registry instance

  - ### load

    public void load(ClassLoader classLoader)
    Loads `GroovyRunner` instances using the `ServiceLoader` facility.
    Parameters:
      `classLoader` - used to locate provider-configuration files and classes

  - ### iterator

    public 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 `Iterable<GroovyRunner>`
    Returns:
      iterator for all registered runners

  - ### size

    public int size()
    Returns the number of registered runners.
    Specified by:
      `size` in interface `Map<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 `Map<String,GroovyRunner>`
    Returns:
      `true` if no runners are registered

  - ### containsKey

    public boolean containsKey(Object key)
    Returns `true` if a runner was registered with the specified key.
    Specified by:
      `containsKey` in interface `Map<String,GroovyRunner>`
    Parameters:
      `key` - for the registered runner
    Returns:
      `true` if a runner was registered with given key

  - ### containsValue

    public boolean containsValue(Object runner)
    Returns `true` if registry contains the given runner instance.
    Specified by:
      `containsValue` in interface `Map<String,GroovyRunner>`
    Parameters:
      `runner` - instance of a GroovyRunner
    Returns:
      `true` if the given runner is registered

  - ### get

    public GroovyRunner get(Object key)
    Returns the registered runner for the specified key.
    Specified by:
      `get` in interface `Map<String,GroovyRunner>`
    Parameters:
      `key` - used to look up the runner
    Returns:
      the runner registered with the given key

  - ### put

    public GroovyRunner put(String key, GroovyRunner runner)
    Registers a runner with the specified key.
    Specified by:
      `put` in interface `Map<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(Object key)
    Removes a registered runner from the registry.
    Specified by:
      `remove` in interface `Map<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(Map<? extends 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 `Map<String,GroovyRunner>`
    Parameters:
      `m` - entries to add to the registry
    Throws:
      `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 `Map<String,GroovyRunner>`

  - ### keySet

    public Set<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 `Map<String,GroovyRunner>`
    Returns:
      an unmodifiable set of keys for registered runners

  - ### values

    public 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 `Map<String,GroovyRunner>`
    Returns:
      an unmodifiable collection of registered runner instances

  - ### entrySet

    public Set<Map.Entry<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 `Map<String,GroovyRunner>`
    Returns:
      an unmodifiable set of registered runner entries

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`