org.springframework.web.method.annotation
Class RequestHeaderMethodArgumentResolver

java.lang.Object
  extended by org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
      extended by org.springframework.web.method.annotation.RequestHeaderMethodArgumentResolver
All Implemented Interfaces:
HandlerMethodArgumentResolver

public class RequestHeaderMethodArgumentResolver
extends AbstractNamedValueMethodArgumentResolver

Resolves method arguments annotated with @RequestHeader except for Map arguments. See RequestHeaderMapMethodArgumentResolver for details on Map arguments annotated with @RequestHeader.

An @RequestHeader is a named value resolved from a request header. It has a required flag and a default value to fall back on when the request header does not exist.

A WebDataBinder is invoked to apply type conversion to resolved request header values that don't yet match the method parameter type.

Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev

Nested Class Summary
 
Nested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
 
Constructor Summary
RequestHeaderMethodArgumentResolver(ConfigurableBeanFactory beanFactory)
           
 
Method Summary
protected  AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
          Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter.
protected  void handleMissingValue(String headerName, MethodParameter param)
          Invoked when a named value is required, but AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest) returned null and there is no default value.
protected  Object resolveName(String name, MethodParameter parameter, NativeWebRequest request)
          Resolves the given parameter type and value name into an argument value.
 boolean supportsParameter(MethodParameter parameter)
          Whether the given method parameter is supported by this resolver.
 
Methods inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
handleResolvedValue, resolveArgument
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RequestHeaderMethodArgumentResolver

public RequestHeaderMethodArgumentResolver(ConfigurableBeanFactory beanFactory)
Parameters:
beanFactory - a bean factory to use for resolving ${...} placeholder and #{...} SpEL expressions in default values; or null if default values are not expected to have expressions
Method Detail

supportsParameter

public boolean supportsParameter(MethodParameter parameter)
Description copied from interface: HandlerMethodArgumentResolver
Whether the given method parameter is supported by this resolver.

Parameters:
parameter - the method parameter to check
Returns:
true if this resolver supports the supplied parameter; false otherwise

createNamedValueInfo

protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Description copied from class: AbstractNamedValueMethodArgumentResolver
Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter. Implementations typically retrieve the method annotation by means of MethodParameter.getParameterAnnotation(Class).

Specified by:
createNamedValueInfo in class AbstractNamedValueMethodArgumentResolver
Parameters:
parameter - the method parameter
Returns:
the named value information

resolveName

protected Object resolveName(String name,
                             MethodParameter parameter,
                             NativeWebRequest request)
                      throws Exception
Description copied from class: AbstractNamedValueMethodArgumentResolver
Resolves the given parameter type and value name into an argument value.

Specified by:
resolveName in class AbstractNamedValueMethodArgumentResolver
Parameters:
name - the name of the value being resolved
parameter - the method parameter to resolve to an argument value
request - the current request
Returns:
the resolved argument. May be null
Throws:
Exception - in case of errors

handleMissingValue

protected void handleMissingValue(String headerName,
                                  MethodParameter param)
                           throws ServletRequestBindingException
Description copied from class: AbstractNamedValueMethodArgumentResolver
Invoked when a named value is required, but AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest) returned null and there is no default value. Subclasses typically throw an exception in this case.

Specified by:
handleMissingValue in class AbstractNamedValueMethodArgumentResolver
Parameters:
headerName - the name for the value
param - the method parameter
Throws:
ServletRequestBindingException