From 36da299f96e7be182ea956f3094d0cf1715da6c5 Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Thu, 15 Dec 2016 17:26:40 +0100 Subject: [PATCH] Add set/getContentLanguage() to HttpHeaders Issue: SPR-14536 --- .../org/springframework/http/HttpHeaders.java | 26 +++++++++++++++++++ .../http/HttpHeadersTests.java | 11 ++++++++ 2 files changed, 37 insertions(+) diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index 4a1b87e9675..d0c2c9fdea8 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -762,6 +762,32 @@ public class HttpHeaders implements MultiValueMap, Serializable return ContentDisposition.empty(); } + /** + * Set the {@link Locale} of the content language, + * as specified by the {@literal Content-Language} header. + *

Use {@code set(CONTENT_LANGUAGE, ...)} if you need + * to set multiple content languages.

+ */ + public void setContentLanguage(Locale locale) { + Assert.notNull(locale, "'locale' must not be null"); + set(CONTENT_LANGUAGE, locale.toLanguageTag()); + } + + /** + * Return the first {@link Locale} of the content languages, + * as specified by the {@literal Content-Language} header. + *

Returns {@code null} when the content language is unknown. + *

Use {@code getValuesAsList(CONTENT_LANGUAGE)} if you need + * to get multiple content languages.

+ */ + public Locale getContentLanguage() { + return getValuesAsList(CONTENT_LANGUAGE) + .stream() + .findFirst() + .map(Locale::forLanguageTag) + .orElse(null); + } + /** * Set the length of the body in bytes, as specified by the * {@code Content-Length} header. diff --git a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java index 84bdfc8c041..d164de2ca1c 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java @@ -439,4 +439,15 @@ public class HttpHeadersTests { assertArrayEquals(languageArray, languages.toArray()); } + @Test + public void contentLanguage() { + assertNull(headers.getContentLanguage()); + headers.setContentLanguage(Locale.FRANCE); + assertEquals(Locale.FRANCE, headers.getContentLanguage()); + assertEquals("fr-FR", headers.getFirst(HttpHeaders.CONTENT_LANGUAGE)); + headers.clear(); + headers.set(HttpHeaders.CONTENT_LANGUAGE, Locale.GERMAN.toLanguageTag() + ", " + Locale.CANADA); + assertEquals(Locale.GERMAN, headers.getContentLanguage()); + } + }