ModelMap (Gradle API 2.11)
Date: 2016-02-08

Package: org.gradle.model

## [Java] Interface ModelMap<T>

- Model backed map like structure allowing adding of items where instantiation is managed.

  Managed types may declare model map properties. Model maps can only contain managed types.

  Parameters:
    `` - the contract type for all items

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `void` | `afterEach(Action<? super T> configAction)` Applies the given action to each item in the collection, as each item is required.
    `void` | `afterEach(Class<S> type, Action<? super S> configAction)` Applies the given action to each item of the given type in the collection, as each item is required.
    `void` | `all(Action<? super T> configAction)` Applies the given action to each item in the collection, as each item is required.
    `void` | `beforeEach(Action<? super T> configAction)` Applies the given action to each item in this collection, as each item is required.
    `void` | `beforeEach(Class<S> type, Action<? super S> configAction)` Applies the given action to each item of the given type in this collection, as each item is required.
    `boolean` | `containsKey(Object name)` Returns true if this collection contains an item with the given name.
    `boolean` | `containsValue(Object item)` Returns true if this collection contains the given item.
    `void` | `create(String name)` Defines an item with the given name and type T.
    `void` | `create(String name, Action<? super T> configAction)` Defines an item with the given name and type T.
    `void` | `create(String name, Class<S> type)` Defines an item with the given name and type.
    `void` | `create(String name, Class<S> type, Action<? super S> configAction)` Defines an item with the given name and type.
    `T` | `get(Object name)` Returns the item with the given name, if any.
    `T` | `get(String name)` Returns the item with the given name, if any.
    `boolean` | `isEmpty()` Returns true if this collection contains no items.
    `Set<String>` | `keySet()` Returns the names of the items in this collection.
    `void` | `named(String name, Action<? super T> configAction)` Applies the given action to the given item, when the item is required.
    `void` | `named(String name, Class<? extends RuleSource> ruleSource)` Applies the given rule source class to the given item, when the item is required.
    `void` | `put(String name, T instance)` Adds an element to this `ModelMap`.
    `int` | `size()` Returns the number of items in this collection.
    `Collection<T>` | `values()` Returns the items in this collection.
    `ModelMap<S>` | `withType(Class<S> type)` Returns a collection containing the items from this collection which are of the specified type.
    `void` | `withType(Class<S> type, Action<? super S> configAction)` Applies the given action to each item of the given type in the collection, as each item is required.
    `void` | `withType(Class<S> type, Class<? extends RuleSource> rules)` Applies the given rules to all items of the collection of the given type.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `interface Iterable` | `iterator`
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Method Detail

    - #### public void afterEach(Action<? super T> configAction)

      Applies the given action to each item in the collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called after any actions provided to beforeEach(org.gradle.api.Action), create, and other mutation methods.

      Parameters:
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void afterEach(Class<S> type, Action<? super S> configAction)

      Applies the given action to each item of the given type in the collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called after any actions provided to beforeEach(org.gradle.api.Action), create, and other mutation methods.

      Parameters:
        `type` - The type of elements to apply the action to.
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void all(Action<? super T> configAction)

      Applies the given action to each item in the collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called after any actions provided to beforeEach(org.gradle.api.Action) and create.

      Parameters:
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void beforeEach(Action<? super T> configAction)

      Applies the given action to each item in this collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called before any actions provided to create(String, org.gradle.api.Action).

      Parameters:
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void beforeEach(Class<S> type, Action<? super S> configAction)

      Applies the given action to each item of the given type in this collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called before any actions provided to create(String, org.gradle.api.Action).

      Parameters:
        `type` - The type of elements to apply the action to.
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public boolean containsKey(Object name)

      Returns true if this collection contains an item with the given name.

      Parameters:
        `name` - The name of the item.
      Returns:
        true if this collection contains an item with the given name.

    - #### public boolean containsValue(Object item)

      Returns true if this collection contains the given item.

      Parameters:
        `item` - The item.
      Returns:
        true if this collection contains the given item.

    - #### public void create(String name)

      Defines an item with the given name and type T. The item is not created immediately, but is instead created as it is required.

      Parameters:
        `name` - The name.

    - #### public void create(String name, Action<? super T> configAction)

      Defines an item with the given name and type T. The item is not created immediately, but is instead created as it is required.

      The given action is invoked to configure the item when the item is required.

      Parameters:
        `name` - The name.
        `configAction` - An action that initialises the item. The action is executed when the item is required.

    - #### public void create(String name, Class<S> type)

      Defines an item with the given name and type. The item is not created immediately, but is instead created as it is required.

      Parameters:
        `name` - The name.

    - #### public void create(String name, Class<S> type, Action<? super S> configAction)

      Defines an item with the given name and type. The item is not created immediately, but is instead created as it is required.

      The given action is invoked to configure the item when the item is required.

      Parameters:
        `name` - The name.
        `configAction` - An action that initialises the item. The action is executed when the item is required.

    - #### @Nullable public T get(Object name)

      Returns the item with the given name, if any.

      Parameters:
        `name` - The name of the item.
      Returns:
        The item, or null if no such item.

    - #### @Nullable public T get(String name)

      Returns the item with the given name, if any.

      Parameters:
        `name` - The name of the item.
      Returns:
        The item, or null if no such item.

    - #### public boolean isEmpty()

      Returns true if this collection contains no items.

      Returns:
        true if this collection is empty.

    - #### public Set<String> keySet()

      Returns the names of the items in this collection.

      Returns:
        The names

    - #### public void named(String name, Action<? super T> configAction)

      Applies the given action to the given item, when the item is required.

      The given action is invoked to configure the item when the item is required. It is called after any actions provided to beforeEach(org.gradle.api.Action) and create.

      Parameters:
        `name` - The name.
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void named(String name, Class<? extends RuleSource> ruleSource)

      Applies the given rule source class to the given item, when the item is required.

      Rules are applied in the scope of the item therefore:

      - subject by-type and by-path bindings are of inner scope
      - subject can be bound by type to a child of the scope in which the rule is applied
      - input by-path bindings are of inner scope
      - input by-type bindings are of outer scope
      Parameters:
        `name` - The name.
        `ruleSource` - A rule source class.

    - #### public void put(String name, T instance)

      Adds an element to this `ModelMap`.

    - #### public int size()

      Returns the number of items in this collection.

      Returns:
        the size of this collection.

    - #### public Collection<T> values()

      Returns the items in this collection.

      Returns:
        The items.

    - #### public ModelMap<S> withType(Class<S> type)

      Returns a collection containing the items from this collection which are of the specified type.

      Parameters:
        `type` - The type.
        `` - The type.
      Returns:
        The collection.

    - #### public void withType(Class<S> type, Action<? super S> configAction)

      Applies the given action to each item of the given type in the collection, as each item is required.

      The given action is invoked to configure the item when the item is required. It is called after any actions provided to beforeEach(org.gradle.api.Action) and create.

      Parameters:
        `type` - The type of elements to apply the action to.
        `configAction` - An action that configures the item. The action is executed when the item is required.

    - #### public void withType(Class<S> type, Class<? extends RuleSource> rules)

      Applies the given rules to all items of the collection of the given type.

      Parameters:
        `type` - the type that the item must be/implement to have the rules applied
        `rules` - rules to apply