From 63d989b4590134a1aad8a2b285ab698d3060be4c Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Fri, 4 Sep 2026 00:14:02 +0200 Subject: [PATCH] Replace the deprecated plexus-utils APIs in provider code StringOutputStream and IOUtil are deprecated, and plexus-utils Base64 is superseded by java.util.Base64 now the line requires Java 8. The Basic credentials keep using String.getBytes() with the platform default charset -- that is WAGON-627 territory and deliberately not changed here. --- .../providers/http/LightweightHttpWagon.java | 4 ++-- .../knownhost/StreamKnownHostsProvider.java | 20 +++++++++---------- .../providers/ssh/jsch/AbstractJschWagon.java | 16 ++++++++++++--- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java b/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java index 8e524a087..8481c70c2 100644 --- a/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java +++ b/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java @@ -34,6 +34,7 @@ import java.net.SocketAddress; import java.net.URL; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import java.util.Properties; import java.util.regex.Matcher; @@ -53,7 +54,6 @@ import org.apache.maven.wagon.proxy.ProxyInfo; import org.apache.maven.wagon.resource.Resource; import org.apache.maven.wagon.shared.http.EncodingUtil; -import org.codehaus.plexus.util.Base64; import static java.lang.Integer.parseInt; import static org.apache.maven.wagon.shared.http.HttpMessageUtils.UNKNOWN_STATUS_CODE; @@ -201,7 +201,7 @@ private void addHeaders(HttpURLConnection urlConnection) { private void setAuthorization(HttpURLConnection urlConnection) { if (preemptiveAuthentication && authenticationInfo != null && authenticationInfo.getUserName() != null) { String credentials = authenticationInfo.getUserName() + ":" + authenticationInfo.getPassword(); - String encoded = new String(Base64.encodeBase64(credentials.getBytes())); + String encoded = Base64.getEncoder().encodeToString(credentials.getBytes()); urlConnection.setRequestProperty("Authorization", "Basic " + encoded); } } diff --git a/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/knownhost/StreamKnownHostsProvider.java b/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/knownhost/StreamKnownHostsProvider.java index 4706c4546..70c1c28bf 100644 --- a/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/knownhost/StreamKnownHostsProvider.java +++ b/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/knownhost/StreamKnownHostsProvider.java @@ -19,14 +19,13 @@ package org.apache.maven.wagon.providers.ssh.knownhost; import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.HashSet; import java.util.Set; -import org.codehaus.plexus.util.IOUtil; -import org.codehaus.plexus.util.StringOutputStream; import org.codehaus.plexus.util.StringUtils; /** @@ -38,18 +37,17 @@ public class StreamKnownHostsProvider extends AbstractKnownHostsProvider { public StreamKnownHostsProvider(InputStream stream) throws IOException { - try { - StringOutputStream stringOutputStream = new StringOutputStream(); - IOUtil.copy(stream, stringOutputStream); - - stream.close(); - stream = null; + try (InputStream in = stream) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + byte[] chunk = new byte[4096]; + int read; + while ((read = in.read(chunk)) != -1) { + buffer.write(chunk, 0, read); + } - this.contents = stringOutputStream.toString(); + this.contents = buffer.toString(); this.knownHosts = this.loadKnownHosts(this.contents); - } finally { - IOUtil.close(stream); } } diff --git a/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java b/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java index 4f9c525ce..5f45e30ea 100644 --- a/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java +++ b/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java @@ -23,6 +23,7 @@ import java.io.BufferedReader; import java.io.ByteArrayInputStream; +import java.io.Closeable; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -73,7 +74,6 @@ import org.apache.maven.wagon.providers.ssh.knownhost.UnknownHostException; import org.apache.maven.wagon.proxy.ProxyInfo; import org.apache.maven.wagon.resource.Resource; -import org.codehaus.plexus.util.IOUtil; /** * AbstractJschWagon @@ -371,14 +371,24 @@ public Streams executeCommand(String command, boolean ignoreStdErr, boolean igno fireSessionDebug("Stderr results:" + streams.getErr()); } - IOUtil.close(stdoutReader); - IOUtil.close(stderrReader); + closeQuietly(stdoutReader); + closeQuietly(stderrReader); if (channel != null) { channel.disconnect(); } } } + private static void closeQuietly(Closeable closeable) { + if (closeable != null) { + try { + closeable.close(); + } catch (IOException e) { + // ignored, as IOUtil.close did before + } + } + } + protected void handleGetException(Resource resource, Exception e) throws TransferFailedException { fireTransferError(resource, e, TransferEvent.REQUEST_GET);