From 98b281ea45aeee2f7ea8fcf941d7cac1f671c419 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 6 Jul 2012 18:28:51 +0200 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 | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/org.springframework.web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java b/org.springframework.web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java index b621d5ebfe..3e59116b03 100644 --- a/org.springframework.web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java +++ b/org.springframework.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. @@ -32,9 +32,9 @@ import org.springframework.util.FileCopyUtils; /** * Implementation of {@link HttpMessageConverter} that can read and write strings. * - *

By default, this converter supports all media types (*/*), and writes with a {@code - * Content-Type} of {@code text/plain}. This can be overridden by setting the {@link - * #setSupportedMediaTypes(java.util.List) supportedMediaTypes} property. + *

By default, this converter supports all media types (*/*), + * and writes with a {@code Content-Type} of {@code text/plain}. This can be overridden + * by setting the {@link #setSupportedMediaTypes supportedMediaTypes} property. * * @author Arjen Poutsma * @since 3.0 @@ -43,12 +43,28 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter 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(DEFAULT_CHARSET); + } + + /** + * 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()); } @@ -60,6 +76,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter clazz) { return String.class.equals(clazz); @@ -79,13 +96,13 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverterBy default, returns {@link Charset#availableCharsets()}. Can be overridden in subclasses. - * * @return the list of accepted charsets */ protected List getAcceptedCharsets() { @@ -108,7 +123,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter