Package org.gradle.api.attributes

## Interface AttributesSchema

-     public interface AttributesSchema

  An attributes schema stores information about `attributes` and how they can be matched together.
  Since:
    3.3

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T> AttributeMatchingStrategy<T>` | `attribute​(Attribute<T> attribute)` | Declares a new attribute in the schema and configures it with the default strategy.
    `<T> AttributeMatchingStrategy<T>` | `attribute​(Attribute<T> attribute, Action<? super AttributeMatchingStrategy<T>> configureAction)` | Configures the matching strategy for an attribute.
    `java.util.Set<Attribute<?>>` | `getAttributes()` | Returns the set of attributes known to this schema.
    `<T> AttributeMatchingStrategy<T>` | `getMatchingStrategy​(Attribute<T> attribute)` | Returns the matching strategy for a given attribute.
    `boolean` | `hasAttribute​(Attribute<?> key)` | Returns true when this schema contains the given attribute.

- - ### Method Detail

    - #### getMatchingStrategy

          <T> AttributeMatchingStrategy<T> getMatchingStrategy​(Attribute<T> attribute)
                                                        throws java.lang.IllegalArgumentException

      Returns the matching strategy for a given attribute.
      Type Parameters:
        `T` - the type of the attribute
      Parameters:
        `attribute` - the attribute
      Returns:
        the matching strategy for this attribute.
      Throws:
        `java.lang.IllegalArgumentException` - When no strategy is available for the given attribute.

    - #### attribute

          <T> AttributeMatchingStrategy<T> attribute​(Attribute<T> attribute)

      Declares a new attribute in the schema and configures it with the default strategy. If the attribute was already declared it will simply return the existing strategy.
      Type Parameters:
        `T` - the concrete type of the attribute
      Parameters:
        `attribute` - the attribute to declare in the schema
      Returns:
        the matching strategy for this attribute

    - #### attribute

          <T> AttributeMatchingStrategy<T> attribute​(Attribute<T> attribute,
                                                     Action<? super AttributeMatchingStrategy<T>> configureAction)

      Configures the matching strategy for an attribute. The first call to this method for a specific attribute will create a new matching strategy, whereas subsequent calls will configure the existing one.
      Type Parameters:
        `T` - the concrete type of the attribute
      Parameters:
        `attribute` - the attribute for which to configure the matching strategy
        `configureAction` - the strategy configuration
      Returns:
        the configured strategy

    - #### getAttributes

          java.util.Set<Attribute<?>> getAttributes()

      Returns the set of attributes known to this schema.

    - #### hasAttribute

          boolean hasAttribute​(Attribute<?> key)

      Returns true when this schema contains the given attribute.