Class ProducesRequestCondition

java.lang.Object
org.springframework.web.servlet.mvc.condition.AbstractRequestCondition<ProducesRequestCondition>
org.springframework.web.servlet.mvc.condition.ProducesRequestCondition
All Implemented Interfaces:
RequestCondition<ProducesRequestCondition>

public final class ProducesRequestCondition extends AbstractRequestCondition<ProducesRequestCondition>
A logical disjunction (' || ') request condition to match a request's 'Accept' header to a list of media type expressions. Two kinds of media type expressions are supported, which are described in RequestMapping.produces() and RequestMapping.headers() where the header name is 'Accept'. Regardless of which syntax is used, the semantics are the same.
Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev
  • Constructor Details

  • Method Details

    • getExpressions

      public Set<MediaTypeExpression> getExpressions()
      Return the contained "produces" expressions.
    • getProducibleMediaTypes

      public Set<MediaType> getProducibleMediaTypes()
      Return the contained producible media types excluding negated expressions.
    • isEmpty

      public boolean isEmpty()
      Whether the condition has any media type expressions.
      Overrides:
      isEmpty in class AbstractRequestCondition<ProducesRequestCondition>
      Returns:
      true if empty; false otherwise
    • getContent

      protected List<org.springframework.web.servlet.mvc.condition.ProducesRequestCondition.ProduceMediaTypeExpression> 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<ProducesRequestCondition>
      Returns:
      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<ProducesRequestCondition>
    • combine

      Returns the "other" instance if it has any expressions; returns "this" instance otherwise. Practically that means a method-level "produces" overrides a type-level "produces" condition.
      Parameters:
      other - the condition to combine with.
      Returns:
      a request condition instance that is the result of combining the two condition instances.
    • getMatchingCondition

      @Nullable public ProducesRequestCondition getMatchingCondition(HttpServletRequest request)
      Checks if any of the contained media type expressions match the given request 'Content-Type' header and returns an instance that is guaranteed to contain matching expressions only. The match is performed via MediaType.isCompatibleWith(MediaType).
      Parameters:
      request - the current request
      Returns:
      the same instance if there are no expressions; or a new condition with matching expressions; or null if no expressions match.
    • compareTo

      public int compareTo(ProducesRequestCondition other, HttpServletRequest request)
      Compares this and another "produces" condition as follows:
      1. Sort 'Accept' header media types by quality value via MimeTypeUtils.sortBySpecificity(List) and iterate the list.
      2. Get the first index of matching media types in each "produces" condition first matching with MimeType.equals(Object) and then with MediaType.includes(MediaType).
      3. If a lower index is found, the condition at that index wins.
      4. If both indexes are equal, the media types at the index are compared further with MediaType.isMoreSpecific(MimeType).

      It is assumed that both instances have been obtained via getMatchingCondition(HttpServletRequest) and each instance contains the matching producible media type expression only or is otherwise empty.

    • clearMediaTypesAttribute

      public static void clearMediaTypesAttribute(HttpServletRequest request)
      Use this to clear MEDIA_TYPES_ATTRIBUTE that contains the parsed, requested media types.
      Parameters:
      request - the current request
      Since:
      5.2