From 518488c6334e3d11dde959dd2080f6b6ba2372eb Mon Sep 17 00:00:00 2001 From: Sagar Sumit Date: Sat, 8 Jan 2022 02:50:11 +0530 Subject: [PATCH] [HUDI-3185] HoodieConfig#getBoolean should return false when default not set (#4536) Remove unnecessary config --- .../hudi/common/config/HoodieConfig.java | 3 +++ .../common/config/TestConfigProperty.java | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/hudi-common/src/main/java/org/apache/hudi/common/config/HoodieConfig.java b/hudi-common/src/main/java/org/apache/hudi/common/config/HoodieConfig.java index 997f8a31e..c05116532 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/config/HoodieConfig.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/config/HoodieConfig.java @@ -146,6 +146,9 @@ public class HoodieConfig implements Serializable { } public Boolean getBoolean(ConfigProperty configProperty) { + if (configProperty.hasDefaultValue()) { + return getBooleanOrDefault(configProperty); + } Option rawValue = getRawValue(configProperty); return rawValue.map(v -> Boolean.parseBoolean(v.toString())).orElse(null); } diff --git a/hudi-common/src/test/java/org/apache/hudi/common/config/TestConfigProperty.java b/hudi-common/src/test/java/org/apache/hudi/common/config/TestConfigProperty.java index 5ca48f114..6cbb9bd48 100644 --- a/hudi-common/src/test/java/org/apache/hudi/common/config/TestConfigProperty.java +++ b/hudi-common/src/test/java/org/apache/hudi/common/config/TestConfigProperty.java @@ -40,6 +40,11 @@ public class TestConfigProperty extends HoodieConfig { .defaultValue("false") .withDocumentation("Fake config only for testing"); + public static ConfigProperty FAKE_BOOLEAN_CONFIG_NO_DEFAULT = ConfigProperty + .key("test.fake.boolean.config") + .noDefaultValue() + .withDocumentation("Fake config only for testing"); + public static ConfigProperty FAKE_INTEGER_CONFIG = ConfigProperty .key("test.fake.integer.config") .defaultValue(0) @@ -58,11 +63,23 @@ public class TestConfigProperty extends HoodieConfig { hoodieConfig.setValue(FAKE_STRING_CONFIG, "5"); assertEquals(5, hoodieConfig.getInt(FAKE_STRING_CONFIG)); - assertNull(hoodieConfig.getBoolean(FAKE_BOOLEAN_CONFIG)); + assertEquals(false, hoodieConfig.getBoolean(FAKE_BOOLEAN_CONFIG)); hoodieConfig.setValue(FAKE_BOOLEAN_CONFIG, "true"); assertEquals(true, hoodieConfig.getBoolean(FAKE_BOOLEAN_CONFIG)); } + @Test + public void testGetBooleanShouldReturnFalseWhenDefaultValueFalseButNotSet() { + HoodieConfig hoodieConfig = new HoodieConfig(); + assertEquals(false, hoodieConfig.getBoolean(FAKE_BOOLEAN_CONFIG)); + } + + @Test + public void testGetBooleanShouldReturnNullWhenNoDefaultValuePresent() { + HoodieConfig hoodieConfig = new HoodieConfig(); + assertNull(hoodieConfig.getBoolean(FAKE_BOOLEAN_CONFIG_NO_DEFAULT)); + } + @Test public void testGetOrDefault() { Properties props = new Properties();