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-cli.git

commit e86657008ad98c68e6e9f6dd0a2242712c031f33
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Apr 7 13:31:47 2024 -0400

    Internal refactoring
---
 .../java/org/apache/commons/cli/TypeHandler.java   | 49 ++++++++++++----------
 1 file changed, 27 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/apache/commons/cli/TypeHandler.java 
b/src/main/java/org/apache/commons/cli/TypeHandler.java
index c4a3a07..f663229 100644
--- a/src/main/java/org/apache/commons/cli/TypeHandler.java
+++ b/src/main/java/org/apache/commons/cli/TypeHandler.java
@@ -47,11 +47,7 @@ public class TypeHandler {
      * The Class type parameter matches the Converter's first generic type.
      * </p>
      */
-    private static Map<Class<?>, Converter<?, ? extends Throwable>> 
converterMap = new HashMap<>();
-
-    static {
-        resetConverters();
-    }
+    private static Map<Class<?>, Converter<?, ? extends Throwable>> 
converterMap = createDefaultMap();
 
     /**
      * Unregisters all Converters.
@@ -86,6 +82,10 @@ public class TypeHandler {
         return createValueUnchecked(string, Date.class);
     }
 
+    private static Map<Class<?>, Converter<?, ? extends Throwable>> 
createDefaultMap() {
+        return putDefaultMap(new HashMap<>());
+    }
+
     /**
      * Returns the File represented by {@code string}.
      *
@@ -225,6 +225,27 @@ public class TypeHandler {
         return createValue(string, FileInputStream.class);
     }
 
+    private static Map<Class<?>, Converter<?, ? extends Throwable>> 
putDefaultMap(final Map<Class<?>, Converter<?, ? extends Throwable>> map) {
+        map.put(Object.class, Converter.OBJECT);
+        map.put(Class.class, Converter.CLASS);
+        map.put(Date.class, Converter.DATE);
+        map.put(File.class, Converter.FILE);
+        map.put(Path.class, Converter.PATH);
+        map.put(Number.class, Converter.NUMBER);
+        map.put(URL.class, Converter.URL);
+        map.put(FileInputStream.class, FileInputStream::new);
+        map.put(Long.class, Long::parseLong);
+        map.put(Integer.class, Integer::parseInt);
+        map.put(Short.class, Short::parseShort);
+        map.put(Byte.class, Byte::parseByte);
+        map.put(Character.class, s -> s.startsWith("\\u") ? 
Character.toChars(Integer.parseInt(s.substring(2), HEX_RADIX))[0] : 
s.charAt(0));
+        map.put(Double.class, Double::parseDouble);
+        map.put(Float.class, Float::parseFloat);
+        map.put(BigInteger.class, BigInteger::new);
+        map.put(BigDecimal.class, BigDecimal::new);
+        return map;
+    }
+
     /**
      * Registers a Converter for a Class. If {@code converter} is null 
registration is cleared for {@code clazz}, and no converter will be used in 
processing.
      *
@@ -248,23 +269,7 @@ public class TypeHandler {
      */
     public static void resetConverters() {
         converterMap.clear();
-        converterMap.put(Object.class, Converter.OBJECT);
-        converterMap.put(Class.class, Converter.CLASS);
-        converterMap.put(Date.class, Converter.DATE);
-        converterMap.put(File.class, Converter.FILE);
-        converterMap.put(Path.class, Converter.PATH);
-        converterMap.put(Number.class, Converter.NUMBER);
-        converterMap.put(URL.class, Converter.URL);
-        converterMap.put(FileInputStream.class, FileInputStream::new);
-        converterMap.put(Long.class, Long::parseLong);
-        converterMap.put(Integer.class, Integer::parseInt);
-        converterMap.put(Short.class, Short::parseShort);
-        converterMap.put(Byte.class, Byte::parseByte);
-        converterMap.put(Character.class, s -> s.startsWith("\\u") ? 
Character.toChars(Integer.parseInt(s.substring(2), HEX_RADIX))[0] : 
s.charAt(0));
-        converterMap.put(Double.class, Double::parseDouble);
-        converterMap.put(Float.class, Float::parseFloat);
-        converterMap.put(BigInteger.class, BigInteger::new);
-        converterMap.put(BigDecimal.class, BigDecimal::new);
+        putDefaultMap(converterMap);
     }
 
     /**

Reply via email to