From ea6e5c64c10e77baad11e1eeb225f07ef7343cfd Mon Sep 17 00:00:00 2001 From: Jeremy Custenborder Date: Mon, 22 Feb 2016 15:43:34 -0800 Subject: [PATCH] KAFKA-3260 - Per Feedback from @granthenke. Moved NO_DEFAULT_VALUE to public and added check for hasDefault(). Original tests work and new test testNullDefaultWithValidator() does as well. --- .../org/apache/kafka/common/config/ConfigDef.java | 4 ++-- .../apache/kafka/common/config/ConfigDefTest.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java index fe7bcce59f95a..703eb7c4b9bd0 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java +++ b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java @@ -48,7 +48,7 @@ */ public class ConfigDef { - private static final Object NO_DEFAULT_VALUE = new String(""); + public static final Object NO_DEFAULT_VALUE = new String(""); private final Map configKeys = new HashMap(); @@ -360,7 +360,7 @@ public ConfigKey(String name, Type type, Object defaultValue, Validator validato this.defaultValue = defaultValue; this.validator = validator; this.importance = importance; - if (this.validator != null) + if (this.validator != null && this.hasDefault()) this.validator.ensureValid(name, defaultValue); this.documentation = documentation; } diff --git a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java index cb6de24e966dd..fa0370b9bee81 100644 --- a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java +++ b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java @@ -151,6 +151,19 @@ public void testSslPasswords() { assertEquals(Password.HIDDEN, vals.get(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG).toString()); } + @Test + public void testNullDefaultWithValidator() { + final String key = "enum_test"; + + ConfigDef def = new ConfigDef(); + def.define(key, Type.STRING, ConfigDef.NO_DEFAULT_VALUE, ValidString.in("ONE", "TWO", "THREE"), Importance.HIGH, "docs"); + + Properties props = new Properties(); + props.put(key, "ONE"); + Map vals = def.parse(props); + assertEquals("ONE", vals.get(key)); + } + private void testValidators(Type type, Validator validator, Object defaultVal, Object[] okValues, Object[] badValues) { ConfigDef def = new ConfigDef().define("name", type, defaultVal, validator, Importance.HIGH, "docs");