Class CompositeRequestCondition

All Implemented Interfaces:

public class CompositeRequestCondition extends AbstractRequestCondition<CompositeRequestCondition>
Implements the RequestCondition contract by delegating to multiple RequestCondition types and using a logical conjunction (' && ') to ensure all conditions match a given request.

When CompositeRequestCondition instances are combined or compared they are expected to (a) contain the same number of conditions and (b) that conditions in the respective index are of the same type. It is acceptable to provide null conditions or no conditions at all to the constructor.

Rossen Stoyanchev
  • Constructor Details

    • CompositeRequestCondition

      public CompositeRequestCondition(RequestCondition<?>... requestConditions)
      Create an instance with 0 or more RequestCondition types. It is important to create CompositeRequestCondition instances with the same number of conditions so they may be compared and combined. It is acceptable to provide null conditions.
  • Method Details

    • isEmpty

      public boolean isEmpty()
      Whether this instance contains 0 conditions or not.
      isEmpty in class AbstractRequestCondition<CompositeRequestCondition>
      true if empty; false otherwise
    • getConditions

      public List<RequestCondition<?>> getConditions()
      Return the underlying conditions, possibly empty but never null.
    • getContent

      protected Collection<?> getContent()
      Description copied from class: AbstractRequestCondition
      Return the discrete items a request condition is composed of.

      For example URL patterns, HTTP request methods, param expressions, etc.

      Specified by:
      getContent in class AbstractRequestCondition<CompositeRequestCondition>
      a collection of objects (never null)
    • getToStringInfix

      protected String getToStringInfix()
      Description copied from class: AbstractRequestCondition
      The notation to use when printing discrete items of content.

      For example " || " for URL patterns or " && " for param expressions.

      Specified by:
      getToStringInfix in class AbstractRequestCondition<CompositeRequestCondition>
    • combine

      If one instance is empty, return the other. If both instances have conditions, combine the individual conditions after ensuring they are of the same type and number.
      other - the condition to combine with.
      a request condition instance that is the result of combining the two condition instances.
    • getMatchingCondition

      public CompositeRequestCondition getMatchingCondition(ServerWebExchange exchange)
      Delegate to all contained conditions to match the request and return the resulting "matching" condition instances.

      An empty CompositeRequestCondition matches to all requests.

      a condition instance in case of a match or null otherwise.
    • compareTo

      public int compareTo(CompositeRequestCondition other, ServerWebExchange exchange)
      If one instance is empty, the other "wins". If both instances have conditions, compare them in the order in which they were provided.