From 6fd137ba7b8e2609f5a1aac2c17d58d5878688cf Mon Sep 17 00:00:00 2001 From: Harsh Mehta Date: Thu, 28 May 2026 19:30:23 +0530 Subject: [PATCH] build(deps): replace fusesource.jansi with jline.jansi for ANSI support Signed-off-by: Harsh Mehta --- pom.xml | 5 ++--- .../utils/logging/AnsiMessageBuilder.java | 2 +- .../shared/utils/logging/MessageUtils.java | 8 ++++---- .../maven/shared/utils/logging/Style.java | 4 ++-- .../utils/logging/MessageUtilsTest.java | 20 +++++++++++-------- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 0dac028c..c1938f1a 100644 --- a/pom.xml +++ b/pom.xml @@ -74,10 +74,9 @@ - org.fusesource.jansi + org.jline jansi - 2.4.3 - true + 3.25.1 org.jspecify diff --git a/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java b/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java index ddb9ab79..dca564d6 100644 --- a/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java +++ b/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java @@ -18,7 +18,7 @@ */ package org.apache.maven.shared.utils.logging; -import org.fusesource.jansi.Ansi; +import org.jline.jansi.Ansi; /** * Message builder implementation that supports ANSI colors through diff --git a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java index 7c32cac6..19cc4147 100644 --- a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java +++ b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java @@ -18,9 +18,9 @@ */ package org.apache.maven.shared.utils.logging; -import org.fusesource.jansi.Ansi; -import org.fusesource.jansi.AnsiConsole; -import org.fusesource.jansi.AnsiMode; +import org.jline.jansi.Ansi; +import org.jline.jansi.AnsiConsole; +import org.jline.jansi.AnsiMode; /** * Colored message utils, to manage colors consistently across plugins (only if Maven version is at least 3.5.0). @@ -44,7 +44,7 @@ public class MessageUtils { boolean jansi = true; try { // Jansi is provided by Maven core since 3.5.0 - Class.forName("org.fusesource.jansi.Ansi"); + Class.forName("org.jline.jansi.Ansi"); } catch (ClassNotFoundException cnfe) { jansi = false; } diff --git a/src/main/java/org/apache/maven/shared/utils/logging/Style.java b/src/main/java/org/apache/maven/shared/utils/logging/Style.java index 536c482a..3d7c11db 100644 --- a/src/main/java/org/apache/maven/shared/utils/logging/Style.java +++ b/src/main/java/org/apache/maven/shared/utils/logging/Style.java @@ -20,8 +20,8 @@ import java.util.Locale; -import org.fusesource.jansi.Ansi; -import org.fusesource.jansi.Ansi.Color; +import org.jline.jansi.Ansi; +import org.jline.jansi.Ansi.Color; /** * Configurable message styles. diff --git a/src/test/java/org/apache/maven/shared/utils/logging/MessageUtilsTest.java b/src/test/java/org/apache/maven/shared/utils/logging/MessageUtilsTest.java index 3eb6e832..56002a27 100644 --- a/src/test/java/org/apache/maven/shared/utils/logging/MessageUtilsTest.java +++ b/src/test/java/org/apache/maven/shared/utils/logging/MessageUtilsTest.java @@ -20,14 +20,15 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; -import org.fusesource.jansi.AnsiColors; -import org.fusesource.jansi.AnsiConsole; -import org.fusesource.jansi.AnsiMode; -import org.fusesource.jansi.AnsiPrintStream; -import org.fusesource.jansi.AnsiType; -import org.fusesource.jansi.io.AnsiOutputStream; +import org.jline.jansi.AnsiColors; +import org.jline.jansi.AnsiConsole; +import org.jline.jansi.AnsiMode; +import org.jline.jansi.AnsiPrintStream; +import org.jline.jansi.AnsiType; +import org.jline.jansi.io.AnsiOutputStream; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -72,9 +73,12 @@ public void testTerminalWidth() { false); try { AnsiConsole.systemInstall(); - AnsiConsole.out = new AnsiPrintStream(aos, true); + // jline jansi made AnsiConsole.out private; set via reflection to inject test stream + Field outField = AnsiConsole.class.getDeclaredField("out"); + outField.setAccessible(true); + outField.set(null, new AnsiPrintStream(aos, true)); assertEquals(33, MessageUtils.getTerminalWidth()); - } catch (LinkageError e) { + } catch (LinkageError | ReflectiveOperationException e) { // assumeNoException("JAnsi not supported for this platform", e); } finally { try {