Skip to content

Commit e866570

Browse files
committed
Internal refactoring
1 parent 60ffe13 commit e866570

1 file changed

Lines changed: 27 additions & 22 deletions

File tree

src/main/java/org/apache/commons/cli/TypeHandler.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,7 @@ public class TypeHandler {
4747
* The Class type parameter matches the Converter's first generic type.
4848
* </p>
4949
*/
50-
private static Map<Class<?>, Converter<?, ? extends Throwable>> converterMap = new HashMap<>();
51-
52-
static {
53-
resetConverters();
54-
}
50+
private static Map<Class<?>, Converter<?, ? extends Throwable>> converterMap = createDefaultMap();
5551

5652
/**
5753
* Unregisters all Converters.
@@ -86,6 +82,10 @@ public static Date createDate(final String string) {
8682
return createValueUnchecked(string, Date.class);
8783
}
8884

85+
private static Map<Class<?>, Converter<?, ? extends Throwable>> createDefaultMap() {
86+
return putDefaultMap(new HashMap<>());
87+
}
88+
8989
/**
9090
* Returns the File represented by {@code string}.
9191
*
@@ -225,6 +225,27 @@ public static FileInputStream openFile(final String string) throws ParseExceptio
225225
return createValue(string, FileInputStream.class);
226226
}
227227

228+
private static Map<Class<?>, Converter<?, ? extends Throwable>> putDefaultMap(final Map<Class<?>, Converter<?, ? extends Throwable>> map) {
229+
map.put(Object.class, Converter.OBJECT);
230+
map.put(Class.class, Converter.CLASS);
231+
map.put(Date.class, Converter.DATE);
232+
map.put(File.class, Converter.FILE);
233+
map.put(Path.class, Converter.PATH);
234+
map.put(Number.class, Converter.NUMBER);
235+
map.put(URL.class, Converter.URL);
236+
map.put(FileInputStream.class, FileInputStream::new);
237+
map.put(Long.class, Long::parseLong);
238+
map.put(Integer.class, Integer::parseInt);
239+
map.put(Short.class, Short::parseShort);
240+
map.put(Byte.class, Byte::parseByte);
241+
map.put(Character.class, s -> s.startsWith("\\u") ? Character.toChars(Integer.parseInt(s.substring(2), HEX_RADIX))[0] : s.charAt(0));
242+
map.put(Double.class, Double::parseDouble);
243+
map.put(Float.class, Float::parseFloat);
244+
map.put(BigInteger.class, BigInteger::new);
245+
map.put(BigDecimal.class, BigDecimal::new);
246+
return map;
247+
}
248+
228249
/**
229250
* 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.
230251
*
@@ -248,23 +269,7 @@ public static <T> void register(final Class<T> clazz, final Converter<T, ? exten
248269
*/
249270
public static void resetConverters() {
250271
converterMap.clear();
251-
converterMap.put(Object.class, Converter.OBJECT);
252-
converterMap.put(Class.class, Converter.CLASS);
253-
converterMap.put(Date.class, Converter.DATE);
254-
converterMap.put(File.class, Converter.FILE);
255-
converterMap.put(Path.class, Converter.PATH);
256-
converterMap.put(Number.class, Converter.NUMBER);
257-
converterMap.put(URL.class, Converter.URL);
258-
converterMap.put(FileInputStream.class, FileInputStream::new);
259-
converterMap.put(Long.class, Long::parseLong);
260-
converterMap.put(Integer.class, Integer::parseInt);
261-
converterMap.put(Short.class, Short::parseShort);
262-
converterMap.put(Byte.class, Byte::parseByte);
263-
converterMap.put(Character.class, s -> s.startsWith("\\u") ? Character.toChars(Integer.parseInt(s.substring(2), HEX_RADIX))[0] : s.charAt(0));
264-
converterMap.put(Double.class, Double::parseDouble);
265-
converterMap.put(Float.class, Float::parseFloat);
266-
converterMap.put(BigInteger.class, BigInteger::new);
267-
converterMap.put(BigDecimal.class, BigDecimal::new);
272+
putDefaultMap(converterMap);
268273
}
269274

270275
/**

0 commit comments

Comments
 (0)