default <T> T getOrDefault(Map<String, Object> map, BiFunction<String, Object, T> transform, Class<T> clazz, T defaultValue) { T val; return ((val = get(map, transform, clazz)) == null ? defaultValue : val); }
default <T> T getTransformedOrDefault(Map<String, Object> map, Class<T> clazz, T defaultValue) { T val; return ((val = getTransformed(map, clazz)) == null ? defaultValue : val); }
@Test public void gets_value_of_specified_type_with_transform() { ConfigOption option = newOption("foo"); Map<String, Object> config = new HashMap<>(); option.put(config, "25"); BiFunction<String, Object, Long> transform = (s, o) -> o == null ? null : new Long(o.toString()); assertThat(option.get(config, transform, Long.class), equalTo(25L)); assertThat(option.get(mapWith("foo", "25"), transform, Long.class), equalTo(25L)); }
/** * Returns true if the map contains the key for the defined config option */ default boolean containsOption(Map<String, Object> map) { return map.containsKey(getKey()); }
@Test public void gets_object_transformed_by_class_cast() { ConfigOption option = newOption("foo"); Map<String, Object> config = new HashMap<>(); option.put(config, (Object) 25L); assertThat(option.getTransformed(config, Long.class), equalTo(25L)); assertThat(option.getTransformed(mapWith("foo", (Object) 25L), Long.class), equalTo(25L)); }
@Test public void gets_default_value_of_specified_type_with_transform() { ConfigOption option = newOption("foo"); Map<String, Object> config = new HashMap<>(); option.put(config, null); BiFunction<String, Object, Long> transform = (s, o) -> o == null ? null : new Long(o.toString()); assertThat(option.getOrDefault(config, transform, Long.class, 25L), equalTo(25L)); assertThat(option.getOrDefault(mapWith("foo", null), transform, Long.class, 25L), equalTo(25L)); }
@Test public void gets_default_null_with_cast_when_null() { ConfigOption option = newOption("foo"); Map<String, Object> config = new HashMap<>(); option.put(config, null); assertThat(option.getTransformedOrDefault(config, Long.class, 25L), equalTo(25L)); assertThat(option.getTransformedOrDefault(mapWith("foo", null), Long.class, 25L), equalTo(25L)); }
default void put(Map<String, Object> map, Object value) { map.put(getKey(), value); }
@Test public void gets_default_when_null_value() { ConfigOption option = newOption("foo"); Map<String, Object> config = new HashMap<>(); option.put(config, null); assertThat(option.getOrDefault(config, Long.class, 0L), equalTo(0L)); assertThat(option.getOrDefault(mapWith("foo", null), Long.class, 0L), equalTo(0L)); }
default <T> T getOrDefault(Map<String, Object> map, Class<T> clazz, T defaultValue) { T val; return ((val = get(map, clazz)) == null ? defaultValue : val); }
default <T> T get(Map<String, Object> map, Class<T> clazz) { Object obj = map.get(getKey()); if (clazz.isInstance(obj)) { return clazz.cast(obj); } else { return ConversionUtils.convert(obj, clazz); } }