org.springframework.http
Class HttpHeaders

java.lang.Object
  extended by org.springframework.http.HttpHeaders
All Implemented Interfaces:
java.util.Map<java.lang.String,java.util.List<java.lang.String>>, MultiValueMap<java.lang.String,java.lang.String>

public class HttpHeaders
extends java.lang.Object
implements MultiValueMap<java.lang.String,java.lang.String>

Represents HTTP request and response headers, mapping string header names to list of string values.

In addition to the normal methods defined by Map, this class offers the following convenience methods:

Inspired by Headers.

Since:
3.0
Author:
Arjen Poutsma

Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Field Summary
private static java.lang.String ACCEPT
           
private static java.lang.String ACCEPT_CHARSET
           
private static java.lang.String ALLOW
           
private static java.lang.String CACHE_CONTROL
           
private static java.lang.String CONTENT_DISPOSITION
           
private static java.lang.String CONTENT_LENGTH
           
private static java.lang.String CONTENT_TYPE
           
private static java.lang.String DATE
           
private static java.lang.String[] DATE_FORMATS
           
private static java.lang.String ETAG
           
private static java.lang.String EXPIRES
           
private static java.util.TimeZone GMT
           
private  java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers
           
private static java.lang.String IF_MODIFIED_SINCE
           
private static java.lang.String IF_NONE_MATCH
           
private static java.lang.String LAST_MODIFIED
           
private static java.lang.String LOCATION
           
private static java.lang.String PRAGMA
           
 
Constructor Summary
  HttpHeaders()
          Constructs a new, empty instance of the HttpHeaders object.
private HttpHeaders(java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers, boolean readOnly)
          Private constructor that can create read-only HttpHeader instances.
 
Method Summary
 void add(java.lang.String headerName, java.lang.String headerValue)
          Add the given, single header value under the given name.
 void clear()
           
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> entrySet()
           
 boolean equals(java.lang.Object other)
           
 java.util.List<java.lang.String> get(java.lang.Object key)
           
 java.util.List<MediaType> getAccept()
          Return the list of acceptable media types, as specified by the Accept header.
 java.util.List<java.nio.charset.Charset> getAcceptCharset()
          Return the list of acceptable charsets, as specified by the Accept-Charset header.
 java.util.Set<HttpMethod> getAllow()
          Return the set of allowed HTTP methods, as specified by the Allow header.
 java.lang.String getCacheControl()
          Returns the value of the Cache-Control header.
 long getContentLength()
          Return the length of the body in bytes, as specified by the Content-Length header.
 MediaType getContentType()
          Return the media type of the body, as specified by the Content-Type header.
 long getDate()
          Returns the date and time at which the message was created, as specified by the Date header.
 java.lang.String getETag()
          Returns the entity tag of the body, as specified by the ETag header.
 long getExpires()
          Returns the date and time at which the message is no longer valid, as specified by the Expires header.
 java.lang.String getFirst(java.lang.String headerName)
          Return the first header value for the given header name, if any.
private  long getFirstDate(java.lang.String headerName)
           
 java.util.List<java.lang.String> getIfNoneMatch()
          Returns the value of the If-None-Match header.
 long getIfNotModifiedSince()
          Returns the value of the IfModifiedSince header.
 long getLastModified()
          Returns the time the resource was last changed, as specified by the Last-Modified header.
 java.net.URI getLocation()
          Return the (new) location of a resource, as specified by the Location header.
 java.lang.String getPragma()
          Returns the value of the Pragma header.
 int hashCode()
           
 boolean isEmpty()
           
 java.util.Set<java.lang.String> keySet()
           
 java.util.List<java.lang.String> put(java.lang.String key, java.util.List<java.lang.String> value)
           
 void putAll(java.util.Map<? extends java.lang.String,? extends java.util.List<java.lang.String>> m)
           
static HttpHeaders readOnlyHttpHeaders(HttpHeaders headers)
          Returns HttpHeaders object that can only be read, not written to.
 java.util.List<java.lang.String> remove(java.lang.Object key)
           
 void set(java.lang.String headerName, java.lang.String headerValue)
          Set the given, single header value under the given name.
 void setAccept(java.util.List<MediaType> acceptableMediaTypes)
          Set the list of acceptable media types, as specified by the Accept header.
 void setAcceptCharset(java.util.List<java.nio.charset.Charset> acceptableCharsets)
          Set the list of acceptable charsets, as specified by the Accept-Charset header.
 void setAll(java.util.Map<java.lang.String,java.lang.String> values)
          Set the given values under.
 void setAllow(java.util.Set<HttpMethod> allowedMethods)
          Set the set of allowed HTTP methods, as specified by the Allow header.
 void setCacheControl(java.lang.String cacheControl)
          Sets the (new) value of the Cache-Control header.
 void setContentDispositionFormData(java.lang.String name, java.lang.String filename)
          Sets the (new) value of the Content-Disposition header for form-data.
 void setContentLength(long contentLength)
          Set the length of the body in bytes, as specified by the Content-Length header.
 void setContentType(MediaType mediaType)
          Set the media type of the body, as specified by the Content-Type header.
 void setDate(long date)
          Sets the date and time at which the message was created, as specified by the Date header.
private  void setDate(java.lang.String headerName, long date)
           
 void setETag(java.lang.String eTag)
          Sets the (new) entity tag of the body, as specified by the ETag header.
 void setExpires(long expires)
          Sets the date and time at which the message is no longer valid, as specified by the Expires header.
 void setIfModifiedSince(long ifModifiedSince)
          Sets the (new) value of the If-Modified-Since header.
 void setIfNoneMatch(java.util.List<java.lang.String> ifNoneMatchList)
          Sets the (new) values of the If-None-Match header.
 void setIfNoneMatch(java.lang.String ifNoneMatch)
          Sets the (new) value of the If-None-Match header.
 void setLastModified(long lastModified)
          Sets the time the resource was last changed, as specified by the Last-Modified header.
 void setLocation(java.net.URI location)
          Set the (new) location of a resource, as specified by the Location header.
 void setPragma(java.lang.String pragma)
          Sets the (new) value of the Pragma header.
 int size()
           
 java.util.Map<java.lang.String,java.lang.String> toSingleValueMap()
          Returns the first values contained in this MultiValueMap.
 java.lang.String toString()
           
 java.util.Collection<java.util.List<java.lang.String>> values()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ACCEPT

private static final java.lang.String ACCEPT
See Also:
Constant Field Values

ACCEPT_CHARSET

private static final java.lang.String ACCEPT_CHARSET
See Also:
Constant Field Values

ALLOW

private static final java.lang.String ALLOW
See Also:
Constant Field Values

CACHE_CONTROL

private static final java.lang.String CACHE_CONTROL
See Also:
Constant Field Values

CONTENT_DISPOSITION

private static final java.lang.String CONTENT_DISPOSITION
See Also:
Constant Field Values

CONTENT_LENGTH

private static final java.lang.String CONTENT_LENGTH
See Also:
Constant Field Values

CONTENT_TYPE

private static final java.lang.String CONTENT_TYPE
See Also:
Constant Field Values

DATE

private static final java.lang.String DATE
See Also:
Constant Field Values

ETAG

private static final java.lang.String ETAG
See Also:
Constant Field Values

EXPIRES

private static final java.lang.String EXPIRES
See Also:
Constant Field Values

IF_MODIFIED_SINCE

private static final java.lang.String IF_MODIFIED_SINCE
See Also:
Constant Field Values

IF_NONE_MATCH

private static final java.lang.String IF_NONE_MATCH
See Also:
Constant Field Values

LAST_MODIFIED

private static final java.lang.String LAST_MODIFIED
See Also:
Constant Field Values

LOCATION

private static final java.lang.String LOCATION
See Also:
Constant Field Values

PRAGMA

private static final java.lang.String PRAGMA
See Also:
Constant Field Values

DATE_FORMATS

private static final java.lang.String[] DATE_FORMATS

GMT

private static java.util.TimeZone GMT

headers

private final java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers
Constructor Detail

HttpHeaders

private HttpHeaders(java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers,
                    boolean readOnly)
Private constructor that can create read-only HttpHeader instances.


HttpHeaders

public HttpHeaders()
Constructs a new, empty instance of the HttpHeaders object.

Method Detail

readOnlyHttpHeaders

public static HttpHeaders readOnlyHttpHeaders(HttpHeaders headers)
Returns HttpHeaders object that can only be read, not written to.


setAccept

public void setAccept(java.util.List<MediaType> acceptableMediaTypes)
Set the list of acceptable media types, as specified by the Accept header.

Parameters:
acceptableMediaTypes - the acceptable media types

getAccept

public java.util.List<MediaType> getAccept()
Return the list of acceptable media types, as specified by the Accept header.

Returns an empty list when the acceptable media types are unspecified.

Returns:
the acceptable media types

setAcceptCharset

public void setAcceptCharset(java.util.List<java.nio.charset.Charset> acceptableCharsets)
Set the list of acceptable charsets, as specified by the Accept-Charset header.

Parameters:
acceptableCharsets - the acceptable charsets

getAcceptCharset

public java.util.List<java.nio.charset.Charset> getAcceptCharset()
Return the list of acceptable charsets, as specified by the Accept-Charset header.

Returns:
the acceptable charsets

setAllow

public void setAllow(java.util.Set<HttpMethod> allowedMethods)
Set the set of allowed HTTP methods, as specified by the Allow header.

Parameters:
allowedMethods - the allowed methods

getAllow

public java.util.Set<HttpMethod> getAllow()
Return the set of allowed HTTP methods, as specified by the Allow header.

Returns an empty set when the allowed methods are unspecified.

Returns:
the allowed methods

setCacheControl

public void setCacheControl(java.lang.String cacheControl)
Sets the (new) value of the Cache-Control header.

Parameters:
cacheControl - the value of the header

getCacheControl

public java.lang.String getCacheControl()
Returns the value of the Cache-Control header.

Returns:
the value of the header

setContentDispositionFormData

public void setContentDispositionFormData(java.lang.String name,
                                          java.lang.String filename)
Sets the (new) value of the Content-Disposition header for form-data.

Parameters:
name - the control name
filename - the filename, may be null

setContentLength

public void setContentLength(long contentLength)
Set the length of the body in bytes, as specified by the Content-Length header.

Parameters:
contentLength - the content length

getContentLength

public long getContentLength()
Return the length of the body in bytes, as specified by the Content-Length header.

Returns -1 when the content-length is unknown.

Returns:
the content length

setContentType

public void setContentType(MediaType mediaType)
Set the media type of the body, as specified by the Content-Type header.

Parameters:
mediaType - the media type

getContentType

public MediaType getContentType()
Return the media type of the body, as specified by the Content-Type header.

Returns null when the content-type is unknown.

Returns:
the content type

setDate

public void setDate(long date)
Sets the date and time at which the message was created, as specified by the Date header.

The date should be specified as the number of milliseconds since January 1, 1970 GMT.

Parameters:
date - the date

getDate

public long getDate()
Returns the date and time at which the message was created, as specified by the Date header.

The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

Returns:
the creation date/time
Throws:
java.lang.IllegalArgumentException - if the value can't be converted to a date

setETag

public void setETag(java.lang.String eTag)
Sets the (new) entity tag of the body, as specified by the ETag header.

Parameters:
eTag - the new entity tag

getETag

public java.lang.String getETag()
Returns the entity tag of the body, as specified by the ETag header.

Returns:
the entity tag

setExpires

public void setExpires(long expires)
Sets the date and time at which the message is no longer valid, as specified by the Expires header.

The date should be specified as the number of milliseconds since January 1, 1970 GMT.

Parameters:
expires - the new expires header value

getExpires

public long getExpires()
Returns the date and time at which the message is no longer valid, as specified by the Expires header.

The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

Returns:
the expires value

setIfModifiedSince

public void setIfModifiedSince(long ifModifiedSince)
Sets the (new) value of the If-Modified-Since header.

The date should be specified as the number of milliseconds since January 1, 1970 GMT.

Parameters:
ifModifiedSince - the new value of the header

getIfNotModifiedSince

public long getIfNotModifiedSince()
Returns the value of the IfModifiedSince header.

The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

Returns:
the header value

setIfNoneMatch

public void setIfNoneMatch(java.lang.String ifNoneMatch)
Sets the (new) value of the If-None-Match header.

Parameters:
ifNoneMatch - the new value of the header

setIfNoneMatch

public void setIfNoneMatch(java.util.List<java.lang.String> ifNoneMatchList)
Sets the (new) values of the If-None-Match header.

Parameters:
ifNoneMatchList - the new value of the header

getIfNoneMatch

public java.util.List<java.lang.String> getIfNoneMatch()
Returns the value of the If-None-Match header.

Returns:
the header value

setLastModified

public void setLastModified(long lastModified)
Sets the time the resource was last changed, as specified by the Last-Modified header.

The date should be specified as the number of milliseconds since January 1, 1970 GMT.

Parameters:
lastModified - the last modified date

getLastModified

public long getLastModified()
Returns the time the resource was last changed, as specified by the Last-Modified header.

The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown.

Returns:
the last modified date

setLocation

public void setLocation(java.net.URI location)
Set the (new) location of a resource, as specified by the Location header.

Parameters:
location - the location

getLocation

public java.net.URI getLocation()
Return the (new) location of a resource, as specified by the Location header.

Returns null when the location is unknown.

Returns:
the location

setPragma

public void setPragma(java.lang.String pragma)
Sets the (new) value of the Pragma header.

Parameters:
pragma - the value of the header

getPragma

public java.lang.String getPragma()
Returns the value of the Pragma header.

Returns:
the value of the header

getFirstDate

private long getFirstDate(java.lang.String headerName)

setDate

private void setDate(java.lang.String headerName,
                     long date)

getFirst

public java.lang.String getFirst(java.lang.String headerName)
Return the first header value for the given header name, if any.

Specified by:
getFirst in interface MultiValueMap<java.lang.String,java.lang.String>
Parameters:
headerName - the header name
Returns:
the first header value; or null

add

public void add(java.lang.String headerName,
                java.lang.String headerValue)
Add the given, single header value under the given name.

Specified by:
add in interface MultiValueMap<java.lang.String,java.lang.String>
Parameters:
headerName - the header name
headerValue - the header value
Throws:
java.lang.UnsupportedOperationException - if adding headers is not supported
See Also:
put(String, List), set(String, String)

set

public void set(java.lang.String headerName,
                java.lang.String headerValue)
Set the given, single header value under the given name.

Specified by:
set in interface MultiValueMap<java.lang.String,java.lang.String>
Parameters:
headerName - the header name
headerValue - the header value
Throws:
java.lang.UnsupportedOperationException - if adding headers is not supported
See Also:
put(String, List), add(String, String)

setAll

public void setAll(java.util.Map<java.lang.String,java.lang.String> values)
Description copied from interface: MultiValueMap
Set the given values under.

Specified by:
setAll in interface MultiValueMap<java.lang.String,java.lang.String>
Parameters:
values - the values.

toSingleValueMap

public java.util.Map<java.lang.String,java.lang.String> toSingleValueMap()
Description copied from interface: MultiValueMap
Returns the first values contained in this MultiValueMap.

Specified by:
toSingleValueMap in interface MultiValueMap<java.lang.String,java.lang.String>
Returns:
a single value representation of this map

size

public int size()
Specified by:
size in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

get

public java.util.List<java.lang.String> get(java.lang.Object key)
Specified by:
get in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

put

public java.util.List<java.lang.String> put(java.lang.String key,
                                            java.util.List<java.lang.String> value)
Specified by:
put in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

remove

public java.util.List<java.lang.String> remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

putAll

public void putAll(java.util.Map<? extends java.lang.String,? extends java.util.List<java.lang.String>> m)
Specified by:
putAll in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

clear

public void clear()
Specified by:
clear in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

keySet

public java.util.Set<java.lang.String> keySet()
Specified by:
keySet in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

values

public java.util.Collection<java.util.List<java.lang.String>> values()
Specified by:
values in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

entrySet

public java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> entrySet()
Specified by:
entrySet in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>

equals

public boolean equals(java.lang.Object other)
Specified by:
equals in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Specified by:
hashCode in interface java.util.Map<java.lang.String,java.util.List<java.lang.String>>
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object