From 737927da26f21baf2af59e69945479de873371b7 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 11 Jan 2026 11:33:00 -0800 Subject: [PATCH] Refactor XLint options for better handling of null/empty lists. --- .../rife/bld/operations/JavacOptions.java | 20 ++++++++++++++++--- .../rife/bld/operations/TestJavacOptions.java | 19 ++++++++++++++---- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/rife/bld/operations/JavacOptions.java b/src/main/java/rife/bld/operations/JavacOptions.java index 8338fa2..b41f693 100644 --- a/src/main/java/rife/bld/operations/JavacOptions.java +++ b/src/main/java/rife/bld/operations/JavacOptions.java @@ -13,6 +13,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import static rife.bld.operations.CompileOperation.COMPILE_OPTION_MODULE_PATH; @@ -848,8 +849,7 @@ public class JavacOptions extends ArrayList { * @since 2.3.1 */ public JavacOptions xLint(List keys) { - add("-Xlint:" + StringUtils.join(keys, ",").replaceAll("_", "-").toLowerCase()); - return this; + return addXLintOption(keys, ""); } /** @@ -868,7 +868,21 @@ public class JavacOptions extends ArrayList { * @since 2.3.1 */ public JavacOptions xLintDisable(List keys) { - add("-Xlint:-" + StringUtils.join(keys, ",-").replaceAll("_", "-").toLowerCase()); + return addXLintOption(keys, "-"); + } + + + private JavacOptions addXLintOption(List keys, String prefix) { + if (keys == null || keys.isEmpty()) { + return this; + } + + var formattedKeys = keys.stream() + .map(key -> prefix + key.name().replace('_', '-').toLowerCase()) + .collect(Collectors.joining(",", "-Xlint:", "")); + + add(formattedKeys); return this; } + } \ No newline at end of file diff --git a/src/test/java/rife/bld/operations/TestJavacOptions.java b/src/test/java/rife/bld/operations/TestJavacOptions.java index 59fc0a7..b21aad1 100644 --- a/src/test/java/rife/bld/operations/TestJavacOptions.java +++ b/src/test/java/rife/bld/operations/TestJavacOptions.java @@ -781,8 +781,14 @@ class TestJavacOptions { List emptyList = List.of(); options.xLintDisable(emptyList); - assertEquals(1, options.size()); - assertEquals("-Xlint:-", options.get(0)); + assertEquals(0, options.size()); + } + + @Test + void testXLintDisableNullList() { + options.xLintDisable((List) null); + + assertEquals(0, options.size()); } @Test @@ -829,8 +835,7 @@ class TestJavacOptions { List emptyList = List.of(); options.xLint(emptyList); - assertEquals(1, options.size()); - assertEquals("-Xlint:", options.get(0)); + assertEquals(0, options.size()); } @Test @@ -852,6 +857,12 @@ class TestJavacOptions { assertTrue(options.contains("-Xlint:none")); } + @Test + void testXLintNullList() { + options.xLint((List) null); + assertEquals(0, options.size()); + } + @Test void testXLintReturnsThis() { var result = options.xLint();