# Interface AttributeMatchingStrategy<T>

Type Parameters:
  `T` - the type of the attribute

public interface AttributeMatchingStrategy<T>
An attribute matching strategy is responsible for providing information about how an `Attribute` is matched during dependency resolution. In particular, it will tell if a value, provided by a consumer, is compatible with a value provided by a candidate.

Since:
  3.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `CompatibilityRuleChain<T>`
  `getCompatibilityRules()`
  Returns the compatibility rules.
  `DisambiguationRuleChain<T>`
  `getDisambiguationRules()`
  Returns the disambiguation rules.
  `void`
  `ordered(boolean pickLast, Comparator<T> comparator)`
  A short-hand way to define both a compatibility rule and a disambiguation rule based on an order defined by the provided `Comparator`.
  `void`
  `ordered(Comparator<T> comparator)`
  A short-hand way to define both a compatibility rule and a disambiguation rule based on an order defined by the provided `Comparator`.

- ## Method Details

  - ### getCompatibilityRules

    CompatibilityRuleChain<T> getCompatibilityRules()
    Returns the compatibility rules.
    Since:
      3.3

  - ### getDisambiguationRules

    DisambiguationRuleChain<T> getDisambiguationRules()
    Returns the disambiguation rules.
    Since:
      3.3

  - ### ordered

    void ordered(Comparator<T> comparator)

    A short-hand way to define both a compatibility rule and a disambiguation rule based on an order defined by the provided `Comparator`.

    All provider values which are lower than or equal the consumer value are compatible. When disambiguating, it will pick the highest compatible value.

    Parameters:
      `comparator` - the comparator to use for compatibility and disambiguation
    Since:
      3.3

  - ### ordered

    void ordered(boolean pickLast, Comparator<T> comparator)

    A short-hand way to define both a compatibility rule and a disambiguation rule based on an order defined by the provided `Comparator`.

    All provider values which are lower than or equal the consumer value are compatible.

    Parameters:
      `pickLast` - tells if, for disambiguation, we should pick the last value in order instead of the first one
      `comparator` - the comparator to use for compatibility and disambiguation
    Since:
      3.3