From a4240d28643f5d6f7b435ce4512d240efc6db7b9 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Thu, 5 Jul 2012 15:53:49 -0400 Subject: [PATCH] Add defaultCharset field to StringHttpMessageConverter Before this change the StringHttpMessageConverter used a fixed charset "ISO-8859-1" if the requested content type did not specify one. This change adds a defaultCharset field and a constructor to configure it in StringHttpMessageConverter. Issue: SPR-9487 --- .../converter/StringHttpMessageConverter.java | 21 +++++++++++++++---- src/dist/changelog.txt | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java index b621d5ebfe8..0d71ab756f8 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,14 +41,27 @@ import org.springframework.util.FileCopyUtils; */ public class StringHttpMessageConverter extends AbstractHttpMessageConverter { - public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); + private final Charset defaultCharset; private final List availableCharsets; private boolean writeAcceptCharset = true; + /** + * A default constructor that uses {@code "ISO-8859-1"} as the default charset. + * @see #StringHttpMessageConverter(Charset) + */ public StringHttpMessageConverter() { - super(new MediaType("text", "plain", DEFAULT_CHARSET), MediaType.ALL); + this(Charset.forName("ISO-8859-1")); + } + + /** + * A constructor accepting a default charset to use if the requested content + * type does not specify one. + */ + public StringHttpMessageConverter(Charset defaultCharset) { + super(new MediaType("text", "plain", defaultCharset), MediaType.ALL); + this.defaultCharset = defaultCharset; this.availableCharsets = new ArrayList(Charset.availableCharsets().values()); } @@ -108,7 +121,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter