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