diff --git a/cdc-service/src/main/java/com/xtrmetl/cdc/util/EnvUtils.java b/cdc-service/src/main/java/com/xtrmetl/cdc/util/EnvUtils.java index e82b281d..697f6208 100644 --- a/cdc-service/src/main/java/com/xtrmetl/cdc/util/EnvUtils.java +++ b/cdc-service/src/main/java/com/xtrmetl/cdc/util/EnvUtils.java @@ -2,10 +2,24 @@ import java.util.Map; +/** + * Reads process environment variables for CDC deployment configuration. + * + *

Optional lookups use caller-provided defaults for missing or blank values. Required + * lookups fail closed when a value is missing or blank. Returned configured values are not + * transformed by this utility.

+ */ public final class EnvUtils { private EnvUtils() {} + /** + * Reads an optional environment variable and returns the supplied default when the variable is missing or blank. + * + * @param key environment variable name + * @param defaultValue value returned when the variable is missing or blank + * @return configured value when present and non-blank, otherwise {@code defaultValue} + */ public static String getEnv(String key, String defaultValue) { return getEnv(System.getenv(), key, defaultValue); } @@ -18,6 +32,13 @@ static String getEnv(Map env, String key, String defaultValue) { return value; } + /** + * Reads a required environment variable. + * + * @param key environment variable name + * @return configured non-blank value + * @throws IllegalStateException when the variable is missing or blank + */ public static String requireEnv(String key) { return requireEnv(System.getenv(), key); } diff --git a/cdc-service/src/test/java/com/xtrmetl/cdc/util/EnvUtilsTest.java b/cdc-service/src/test/java/com/xtrmetl/cdc/util/EnvUtilsTest.java index c57bca75..2db10691 100644 --- a/cdc-service/src/test/java/com/xtrmetl/cdc/util/EnvUtilsTest.java +++ b/cdc-service/src/test/java/com/xtrmetl/cdc/util/EnvUtilsTest.java @@ -2,12 +2,17 @@ import org.junit.jupiter.api.Test; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.HashMap; import java.util.Map; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; class EnvUtilsTest { @@ -54,4 +59,19 @@ void publicMethodsWorkForMissingEnv() { assertEquals("default", EnvUtils.getEnv(key, "default")); assertThrows(IllegalStateException.class, () -> EnvUtils.requireEnv(key)); } + + @Test + void publicEnvironmentApiHasBeginnerReadableJavadoc() throws IOException { + String source = Files.readString( + Path.of("src/main/java/com/xtrmetl/cdc/util/EnvUtils.java"), + StandardCharsets.UTF_8 + ); + + assertTrue(source.contains("Reads an optional environment variable")); + assertTrue(source.contains("returns the supplied default when the variable is missing or blank")); + assertTrue(source.contains("@param key environment variable name")); + assertTrue(source.contains("@param defaultValue value returned when the variable is missing or blank")); + assertTrue(source.contains("Reads a required environment variable")); + assertTrue(source.contains("@throws IllegalStateException when the variable is missing or blank")); + } }