diff --git a/common/src/main/java/com/datastrato/gravitino/config/ConfigEntry.java b/common/src/main/java/com/datastrato/gravitino/config/ConfigEntry.java index ee9e9a5c767..7a3b6c4c553 100644 --- a/common/src/main/java/com/datastrato/gravitino/config/ConfigEntry.java +++ b/common/src/main/java/com/datastrato/gravitino/config/ConfigEntry.java @@ -37,6 +37,7 @@ public class ConfigEntry { @Getter private boolean isDeprecated; private boolean isOptional; + private boolean isNoDefault; /** * Creates a new ConfigEntry instance. @@ -101,6 +102,11 @@ void setOptional() { this.isOptional = true; } + /** Marks this configuration as no default value. */ + void setNoDefault() { + this.isNoDefault = true; + } + /** * Creates a new ConfigEntry instance based on this configuration entry with a default value. * @@ -134,6 +140,20 @@ public ConfigEntry> createWithOptional() { return conf; } + /** + * Creates a new ConfigEntry instance based on this configuration entry with no default value. + * + * @return A new ConfigEntry instance with no default value. + */ + public ConfigEntry createWithNoDefault() { + ConfigEntry conf = + new ConfigEntry<>(key, version, doc, alternatives, isPublic, isDeprecated); + conf.setValueConverter(valueConverter); + conf.setStringConverter(stringConverter); + conf.setNoDefault(); + return conf; + } + /** * Reads the configuration value. * @@ -155,6 +175,8 @@ public T readFrom(Map properties) throws NoSuchElementException if (value == null) { if (defaultValue != null) { return defaultValue; + } else if (isNoDefault) { + return null; } else if (!isOptional) { throw new NoSuchElementException("No configuration found for key " + key); } diff --git a/server-common/src/main/java/com/datastrato/gravitino/server/auth/OAuthConfig.java b/server-common/src/main/java/com/datastrato/gravitino/server/auth/OAuthConfig.java index 73b9fba1c31..b8eb5f6ed0b 100644 --- a/server-common/src/main/java/com/datastrato/gravitino/server/auth/OAuthConfig.java +++ b/server-common/src/main/java/com/datastrato/gravitino/server/auth/OAuthConfig.java @@ -33,7 +33,7 @@ public interface OAuthConfig extends Configs { .doc("The signing key of JWT when Gravitino uses OAuth as the authenticator") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); ConfigEntry SIGNATURE_ALGORITHM_TYPE = new ConfigBuilder(OAUTH_CONFIG_PREFIX + "signAlgorithmType") @@ -47,12 +47,12 @@ public interface OAuthConfig extends Configs { .doc("The uri of the default OAuth server") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); ConfigEntry DEFAULT_TOKEN_PATH = new ConfigBuilder(OAUTH_CONFIG_PREFIX + "tokenPath") .doc("The path for token of the default OAuth server") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); } diff --git a/server-common/src/main/java/com/datastrato/gravitino/server/web/JettyServerConfig.java b/server-common/src/main/java/com/datastrato/gravitino/server/web/JettyServerConfig.java index 90c68b234e1..f6630cae971 100644 --- a/server-common/src/main/java/com/datastrato/gravitino/server/web/JettyServerConfig.java +++ b/server-common/src/main/java/com/datastrato/gravitino/server/web/JettyServerConfig.java @@ -107,21 +107,21 @@ public final class JettyServerConfig { .doc("Path to the key store file") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); public static final ConfigEntry SSL_KEYSTORE_PASSWORD = new ConfigBuilder("keyStorePassword") .doc("Password to the key store") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); public static final ConfigEntry SSL_MANAGER_PASSWORD = new ConfigBuilder("managerPassword") .doc("Manager password to the key store") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); public static final ConfigEntry SSL_KEYSTORE_TYPE = new ConfigBuilder("keyStoreType") @@ -155,14 +155,14 @@ public final class JettyServerConfig { .doc("Path to the trust store file") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); public static final ConfigEntry SSL_TRUST_STORE_PASSWORD = new ConfigBuilder("trustStorePassword") .doc("Password to the trust store") .version("0.3.0") .stringConf() - .createWithDefault(""); + .createWithNoDefault(); public static final ConfigEntry SSL_TRUST_STORE_TYPE = new ConfigBuilder("trustStoreType")