Package org.springframework.web.servlet.mvc.condition

# Class ConsumesRequestCondition

java.lang.Object
org.springframework.web.servlet.mvc.condition.AbstractRequestCondition<ConsumesRequestCondition>
org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition

All Implemented Interfaces:
  `RequestCondition<ConsumesRequestCondition>`

public final class ConsumesRequestCondition extends AbstractRequestCondition<ConsumesRequestCondition>
A logical disjunction (' || ') request condition to match a request's 'Content-Type' header to a list of media type expressions. Two kinds of media type expressions are supported, which are described in `RequestMapping.consumes()` and `RequestMapping.headers()` where the header name is 'Content-Type'. Regardless of which syntax is used, the semantics are the same.

Since:
  3.1
Author:
  Arjen Poutsma, Rossen Stoyanchev

## Constructor Summary

Constructors
Constructor
Description
`ConsumesRequestCondition(String... consumes)`
Creates a new instance from 0 or more "consumes" expressions.
`ConsumesRequestCondition(String[] consumes, String[] headers)`
Creates a new instance with "consumes" and "header" expressions.

## Method Summary

Modifier and Type
Method
Description
`ConsumesRequestCondition`
`combine(ConsumesRequestCondition other)`
Returns the "other" instance if it has any expressions; returns "this" instance otherwise.
`int`
`compareTo(ConsumesRequestCondition other, HttpServletRequest request)`
Returns: 0 if the two conditions have the same number of expressions Less than 0 if "this" has more or more specific media type expressions Greater than 0 if "other" has more or more specific media type expressions
`Set<org.springframework.http.MediaType>`
`getConsumableMediaTypes()`
Returns the media types for this condition excluding negated expressions.
`protected Collection<org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition.ConsumeMediaTypeExpression>`
`getContent()`
Return the discrete items a request condition is composed of.
`Set<MediaTypeExpression>`
`getExpressions()`
Return the contained MediaType expressions.
`ConsumesRequestCondition`
`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.
`protected String`
`getToStringInfix()`
The notation to use when printing discrete items of content.
`boolean`
`isBodyRequired()`
Return the setting for `setBodyRequired(boolean)`.
`boolean`
`isEmpty()`
Whether the condition has any media type expressions.
`void`
`setBodyRequired(boolean bodyRequired)`
Whether this condition should expect requests to have a body.

### Methods inherited from class org.springframework.web.servlet.mvc.condition.AbstractRequestCondition

`equals, hashCode, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ConsumesRequestCondition

public ConsumesRequestCondition(String... consumes)
Creates a new instance from 0 or more "consumes" expressions.

Parameters:
  `consumes` - expressions with the syntax described in `RequestMapping.consumes()`; if 0 expressions are provided, the condition will match to every request

### ConsumesRequestCondition

public ConsumesRequestCondition(@Nullable String[] consumes, @Nullable String[] headers)
Creates a new instance with "consumes" and "header" expressions. "Header" expressions where the header name is not 'Content-Type' or have no header value defined are ignored. If 0 expressions are provided in total, the condition will match to every request

Parameters:
  `consumes` - as described in `RequestMapping.consumes()`
  `headers` - as described in `RequestMapping.headers()`

## Method Details

### getExpressions

public Set<MediaTypeExpression> getExpressions()
Return the contained MediaType expressions.

### getConsumableMediaTypes

public Set<org.springframework.http.MediaType> getConsumableMediaTypes()
Returns the media types for this condition excluding negated expressions.

### isEmpty

public boolean isEmpty()
Whether the condition has any media type expressions.

Overrides:
  `isEmpty` in class `AbstractRequestCondition<ConsumesRequestCondition>`
Returns:
  `true` if empty; `false` otherwise

### getContent

protected Collection<org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition.ConsumeMediaTypeExpression> 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<ConsumesRequestCondition>`
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<ConsumesRequestCondition>`

### setBodyRequired

public void setBodyRequired(boolean bodyRequired)
Whether this condition should expect requests to have a body.

By default this is set to `true` in which case it is assumed a request body is required and this condition matches to the "Content-Type" header or falls back on "Content-Type: application/octet-stream".

If set to `false`, and the request does not have a body, then this condition matches automatically, i.e. without checking expressions.

Parameters:
  `bodyRequired` - whether requests are expected to have a body
Since:
  5.2

### isBodyRequired

public boolean isBodyRequired()
Return the setting for `setBodyRequired(boolean)`.

Since:
  5.2

### combine

public ConsumesRequestCondition combine(ConsumesRequestCondition other)
Returns the "other" instance if it has any expressions; returns "this" instance otherwise. Practically that means a method-level "consumes" overrides a type-level "consumes" 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 ConsumesRequestCondition 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.includes(MediaType)`.

Parameters:
  `request` - the current request
Returns:
  the same instance if the condition contains no expressions; or a new condition with matching expressions only; or `null` if no expressions match

### compareTo

public int compareTo(ConsumesRequestCondition other, HttpServletRequest request)
Returns:

- 0 if the two conditions have the same number of expressions
- Less than 0 if "this" has more or more specific media type expressions
- Greater than 0 if "other" has more or more specific media type expressions

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