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;
 
 /**

Reply via email to