From 8615e1b16d0443691ee3f820fb9981e1d5bf4b83 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 10:07:10 -0400 Subject: [PATCH 1/2] StringUtils leftPad/rightPad: handle empty delimiter without ArithmeticException --- .../org/apache/maven/shared/utils/StringUtils.java | 6 ++++++ .../org/apache/maven/shared/utils/StringUtilsTest.java | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/org/apache/maven/shared/utils/StringUtils.java b/src/main/java/org/apache/maven/shared/utils/StringUtils.java index 36f874b2..8d215701 100644 --- a/src/main/java/org/apache/maven/shared/utils/StringUtils.java +++ b/src/main/java/org/apache/maven/shared/utils/StringUtils.java @@ -1113,6 +1113,9 @@ public static String rightPad(@NonNull String str, int size) { */ @NonNull public static String rightPad(@NonNull String str, int size, @NonNull String delim) { + if (delim.isEmpty()) { + return str; + } size = (size - str.length()) / delim.length(); if (size > 0) { str += repeat(delim, size); @@ -1147,6 +1150,9 @@ public static String leftPad(@NonNull String str, int size) { */ @NonNull public static String leftPad(@NonNull String str, int size, @NonNull String delim) { + if (delim.isEmpty()) { + return str; + } size = (size - str.length()) / delim.length(); if (size > 0) { str = repeat(delim, size) + str; diff --git a/src/test/java/org/apache/maven/shared/utils/StringUtilsTest.java b/src/test/java/org/apache/maven/shared/utils/StringUtilsTest.java index 506af23a..3eede059 100644 --- a/src/test/java/org/apache/maven/shared/utils/StringUtilsTest.java +++ b/src/test/java/org/apache/maven/shared/utils/StringUtilsTest.java @@ -854,6 +854,11 @@ public void testLeftPad2() { assertEquals("*****dings", StringUtils.leftPad("dings", 10, "*")); } + @Test + public void testLeftPadEmptyDelim() { + assertEquals("dings", StringUtils.leftPad("dings", 10, "")); + } + @SuppressWarnings("ConstantValue") @Test public void testLowerCase() { @@ -1268,6 +1273,11 @@ public void testRightPad2() { assertEquals("dings+++++", StringUtils.rightPad("dings", 10, "+")); } + @Test + public void testRightPadEmptyDelim() { + assertEquals("dings", StringUtils.rightPad("dings", 10, "")); + } + @Test public void testSplit1NPE() { assertThrows(NullPointerException.class, () -> StringUtils.split(null)); From fb6040527e1841727c091b8e02ae77e73fbfe0bb Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 10:14:11 -0400 Subject: [PATCH 2/2] remove @throws ArithmeticException from leftPad/rightPad javadoc --- src/main/java/org/apache/maven/shared/utils/StringUtils.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/apache/maven/shared/utils/StringUtils.java b/src/main/java/org/apache/maven/shared/utils/StringUtils.java index 8d215701..4d113503 100644 --- a/src/main/java/org/apache/maven/shared/utils/StringUtils.java +++ b/src/main/java/org/apache/maven/shared/utils/StringUtils.java @@ -1108,7 +1108,6 @@ public static String rightPad(@NonNull String str, int size) { * @param size size to pad to * @param delim string to pad with * @return right padded String - * @throws ArithmeticException if delim is the empty String * @throws NullPointerException if str or delim is null */ @NonNull @@ -1145,7 +1144,6 @@ public static String leftPad(@NonNull String str, int size) { * @param size size to pad to * @param delim string to pad with * @return left padded String - * @throws ArithmeticException if delim is the empty string * @throws NullPointerException if str or delim is null */ @NonNull