This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-io.git
The following commit(s) were added to refs/heads/master by this push: new 7ad1704 Add caching for required charsets (#120) 7ad1704 is described below commit 7ad1704f25172754f1cdb3435189593c7d0d082c Author: Jerome Wolff <34198274+linuxcli...@users.noreply.github.com> AuthorDate: Thu Jun 11 14:40:40 2020 +0200 Add caching for required charsets (#120) * Add caching for required charsets --- src/main/java/org/apache/commons/io/Charsets.java | 23 +++++++++++++--------- .../org/apache/commons/io/CharsetsTestCase.java | 1 - 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/apache/commons/io/Charsets.java b/src/main/java/org/apache/commons/io/Charsets.java index 71f4e4e..5ca62ba 100644 --- a/src/main/java/org/apache/commons/io/Charsets.java +++ b/src/main/java/org/apache/commons/io/Charsets.java @@ -59,6 +59,19 @@ public class Charsets { // correctly and without delay on all Java platforms. // + private static final SortedMap<String, Charset> REQUIRED_CHARSETS; + + static { + SortedMap<String, Charset> requiredCharsets = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + requiredCharsets.put(StandardCharsets.ISO_8859_1.name(), StandardCharsets.ISO_8859_1); + requiredCharsets.put(StandardCharsets.US_ASCII.name(), StandardCharsets.US_ASCII); + requiredCharsets.put(StandardCharsets.UTF_16.name(), StandardCharsets.UTF_16); + requiredCharsets.put(StandardCharsets.UTF_16BE.name(), StandardCharsets.UTF_16BE); + requiredCharsets.put(StandardCharsets.UTF_16LE.name(), StandardCharsets.UTF_16LE); + requiredCharsets.put(StandardCharsets.UTF_8.name(), StandardCharsets.UTF_8); + REQUIRED_CHARSETS = Collections.unmodifiableSortedMap(requiredCharsets); + } + /** * Constructs a sorted map from canonical charset names to charset objects required of every implementation of the * Java platform. @@ -72,15 +85,7 @@ public class Charsets { * @since 2.5 */ public static SortedMap<String, Charset> requiredCharsets() { - // maybe cache? - final TreeMap<String, Charset> m = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - m.put(StandardCharsets.ISO_8859_1.name(), StandardCharsets.ISO_8859_1); - m.put(StandardCharsets.US_ASCII.name(), StandardCharsets.US_ASCII); - m.put(StandardCharsets.UTF_16.name(), StandardCharsets.UTF_16); - m.put(StandardCharsets.UTF_16BE.name(), StandardCharsets.UTF_16BE); - m.put(StandardCharsets.UTF_16LE.name(), StandardCharsets.UTF_16LE); - m.put(StandardCharsets.UTF_8.name(), StandardCharsets.UTF_8); - return Collections.unmodifiableSortedMap(m); + return REQUIRED_CHARSETS; } /** diff --git a/src/test/java/org/apache/commons/io/CharsetsTestCase.java b/src/test/java/org/apache/commons/io/CharsetsTestCase.java index c9687bd..d1b2251 100644 --- a/src/test/java/org/apache/commons/io/CharsetsTestCase.java +++ b/src/test/java/org/apache/commons/io/CharsetsTestCase.java @@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.charset.Charset; import java.util.SortedMap; - import org.junit.jupiter.api.Test; /**