This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit bcc91d979bd0f2a6347595c8a2d6c6182b9b0727
Author: Matt Sicker <[email protected]>
AuthorDate: Sun Oct 15 19:43:09 2023 -0500

    Replace NullOutputStream with OutputStream::nullOutputStream
    
    Signed-off-by: Matt Sicker <[email protected]>
---
 .../SecureSocketAppenderSocketOptionsTest.java     |  4 +-
 .../appender/SocketAppenderSocketOptionsTest.java  |  9 ++-
 .../core/appender/RandomAccessFileManagerTest.java | 12 +--
 .../RollingRandomAccessFileManagerTest.java        |  7 +-
 .../core/appender/MemoryMappedFileManager.java     |  3 +-
 .../log4j/core/appender/OutputStreamAppender.java  |  3 +-
 .../core/appender/RandomAccessFileManager.java     |  3 +-
 .../rolling/RollingRandomAccessFileManager.java    |  3 +-
 .../logging/log4j/core/net/TcpSocketManager.java   |  9 +--
 .../logging/log4j/core/util/NullOutputStream.java  | 86 ----------------------
 10 files changed, 25 insertions(+), 114 deletions(-)

diff --git 
a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SecureSocketAppenderSocketOptionsTest.java
 
b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SecureSocketAppenderSocketOptionsTest.java
index bf584bb94a..3196e0738b 100644
--- 
a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SecureSocketAppenderSocketOptionsTest.java
+++ 
b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SecureSocketAppenderSocketOptionsTest.java
@@ -33,7 +33,6 @@ import 
org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration;
 import org.apache.logging.log4j.core.test.AvailablePortFinder;
 import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
 import org.apache.logging.log4j.core.test.net.ssl.TestConstants;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Assume;
@@ -101,7 +100,8 @@ public class SecureSocketAppenderSocketOptionsTest {
         final TcpSocketManager manager = (TcpSocketManager) 
appender.getManager();
         Assert.assertNotNull(manager);
         final OutputStream outputStream = manager.getOutputStream();
-        Assert.assertFalse(outputStream instanceof NullOutputStream);
+        final OutputStream nullOutputStream = OutputStream.nullOutputStream();
+        Assert.assertFalse(outputStream.getClass() == 
nullOutputStream.getClass());
         final SocketOptions socketOptions = manager.getSocketOptions();
         Assert.assertNotNull(socketOptions);
         final Socket socket = manager.getSocket();
diff --git 
a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderSocketOptionsTest.java
 
b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderSocketOptionsTest.java
index 365d8ad89c..b7c0f48ac9 100644
--- 
a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderSocketOptionsTest.java
+++ 
b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderSocketOptionsTest.java
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j.core.appender;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.net.Socket;
 
 import 
org.apache.logging.log4j.core.appender.SocketAppenderTest.TcpSocketTestServer;
@@ -26,14 +27,15 @@ import org.apache.logging.log4j.core.net.SocketOptions;
 import org.apache.logging.log4j.core.net.TcpSocketManager;
 import org.apache.logging.log4j.core.test.junit.AllocatePorts;
 import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.apache.logging.log4j.plugins.Named;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 @AllocatePorts("SocketAppenderSocketOptionsTest.port")
 public class SocketAppenderSocketOptionsTest {
@@ -63,9 +65,10 @@ public class SocketAppenderSocketOptionsTest {
                 .isNotNull()
                 .isInstanceOf(TcpSocketManager.class);
         final TcpSocketManager manager = (TcpSocketManager) 
abstractSocketManager;
+        final Class<? extends OutputStream> nullOutputStreamType = 
OutputStream.nullOutputStream().getClass();
         assertThat(manager.getOutputStream())
                 .isNotNull()
-                .isInstanceOf(NullOutputStream.class);
+                .isInstanceOf(nullOutputStreamType);
         final SocketOptions socketOptions = manager.getSocketOptions();
         assertNotNull(socketOptions);
         final Socket socket = manager.getSocket();
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
index 55069fae37..b0e848f2a6 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
@@ -22,11 +22,11 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.RandomAccessFile;
 
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
 /**
  * Tests the RandomAccessFileManager class.
@@ -44,7 +44,7 @@ public class RandomAccessFileManagerTest {
     public void testWrite_multiplesOfBufferSize() throws IOException {
         final File file = new File(tempDir, 
"testWrite_multiplesOfBufferSize.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             try (final RandomAccessFileManager manager = new 
RandomAccessFileManager(
                     null, raf, file.getName(), os,
                     RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, 
true)) {
@@ -66,7 +66,7 @@ public class RandomAccessFileManagerTest {
     public void testWrite_dataExceedingBufferSize() throws IOException {
         final File file = new File(tempDir, 
"testWrite_dataExceedingBufferSize.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final int size = RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3 + 
1;
             try (final RandomAccessFileManager manager = new 
RandomAccessFileManager(
                     null, raf, file.getName(), os,
@@ -84,7 +84,7 @@ public class RandomAccessFileManagerTest {
     public void testConfigurableBufferSize() throws IOException {
         final File file = new File(tempDir, "testConfigurableBufferSize.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final int bufferSize = 4 * 1024;
             assertNotEquals(bufferSize, 
RandomAccessFileManager.DEFAULT_BUFFER_SIZE);
             try (final RandomAccessFileManager manager = new 
RandomAccessFileManager(
@@ -99,7 +99,7 @@ public class RandomAccessFileManagerTest {
     public void testWrite_dataExceedingMinBufferSize() throws IOException {
         final File file = new File(tempDir, 
"testWrite_dataExceedingMinBufferSize.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final int bufferSize = 1;
             final int size = bufferSize * 3 + 1;
             try (final RandomAccessFileManager manager = new 
RandomAccessFileManager(
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
index 775f23146b..6baeda0f1d 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
@@ -32,7 +32,6 @@ import java.util.concurrent.locks.LockSupport;
 import org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.apache.logging.log4j.util.Strings;
 import org.junit.Test;
 
@@ -62,7 +61,7 @@ public class RollingRandomAccessFileManagerTest {
         final File file = File.createTempFile("log4j2", "test");
         file.deleteOnExit();
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final boolean append = false;
             final boolean flushNow = false;
             final long triggerSize = Long.MAX_VALUE;
@@ -92,7 +91,7 @@ public class RollingRandomAccessFileManagerTest {
         final File file = File.createTempFile("log4j2", "test");
         file.deleteOnExit();
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final boolean append = false;
             final boolean flushNow = false;
             final long triggerSize = 0;
@@ -119,7 +118,7 @@ public class RollingRandomAccessFileManagerTest {
         final File file = File.createTempFile("log4j2", "test");
         file.deleteOnExit();
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final boolean append = false;
             final boolean flushNow = false;
             final long triggerSize = 0;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
index 246aba78ce..592cd7f387 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
@@ -35,7 +35,6 @@ import java.util.Objects;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.apache.logging.log4j.util.ReflectionUtil;
 
 //Lines too long...
@@ -365,7 +364,7 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
             }
 
             final boolean writeHeader = !data.append || !file.exists();
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             RandomAccessFile raf = null;
             try {
                 FileUtils.makeParentDirs(file);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
index d4e3f84e88..9396adafad 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
@@ -24,7 +24,6 @@ import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.util.CloseShieldOutputStream;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 import org.apache.logging.log4j.plugins.Configurable;
 import org.apache.logging.log4j.plugins.Plugin;
 import org.apache.logging.log4j.plugins.PluginFactory;
@@ -152,7 +151,7 @@ public final class OutputStreamAppender extends 
AbstractOutputStreamAppender<Out
 
     private static OutputStreamManager getManager(final OutputStream target, 
final boolean follow,
             final Layout layout) {
-        final OutputStream os = target == null ? 
NullOutputStream.getInstance() : new CloseShieldOutputStream(target);
+        final OutputStream os = target == null ? 
OutputStream.nullOutputStream() : new CloseShieldOutputStream(target);
         final OutputStream targetRef = target == null ? os : target;
         final String managerName = targetRef.getClass().getName() + "@" + 
Integer.toHexString(targetRef.hashCode())
                 + '.' + follow;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
index 7768e20554..92444eda52 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
@@ -28,7 +28,6 @@ import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 
 /**
  * Extends OutputStreamManager but instead of using a buffered output stream,
@@ -208,7 +207,7 @@ public class RandomAccessFileManager extends 
OutputStreamManager {
             }
 
             final boolean writeHeader = !data.append || !file.exists();
-            final OutputStream os = NullOutputStream.getInstance();
+            final OutputStream os = OutputStream.nullOutputStream();
             final RandomAccessFile raf;
             try {
                 FileUtils.makeParentDirs(file);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
index 416effd5fd..f0d719e050 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
@@ -30,7 +30,6 @@ import 
org.apache.logging.log4j.core.appender.ConfigurationFactoryData;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.core.util.NullOutputStream;
 
 /**
  * Extends RollingFileManager but instead of using a buffered output stream, 
this class uses a {@code ByteBuffer} and a
@@ -256,7 +255,7 @@ public class RollingRandomAccessFileManager extends 
RollingFileManager {
             final boolean writeHeader = !data.append || file == null || 
!file.exists();
 
             final RollingRandomAccessFileManager rrm = new 
RollingRandomAccessFileManager(data.getLoggerContext(), raf, name, data.pattern,
-                    NullOutputStream.getInstance(), data.append, 
data.immediateFlush, data.bufferSize, size, initialTime, data.policy,
+                    OutputStream.nullOutputStream(), data.append, 
data.immediateFlush, data.bufferSize, size, initialTime, data.policy,
                     data.strategy, data.advertiseURI, data.layout, 
data.filePermissions, data.fileOwner, data.fileGroup, writeHeader);
             if (rrm.isAttributeViewEnabled()) {
                 rrm.defineAttributeView(file.toPath());
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index 232cfed598..3750c14771 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -35,7 +35,7 @@ import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.OutputStreamManager;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.Log4jThread;
-import org.apache.logging.log4j.core.util.NullOutputStream;
+import org.apache.logging.log4j.util.Cast;
 import org.apache.logging.log4j.util.Strings;
 
 /**
@@ -425,7 +425,7 @@ public class TcpSocketManager extends AbstractSocketManager 
{
                 return createManager(name, os, socket, inetAddress, data);
             } catch (final IOException ex) {
                 LOGGER.error("TcpSocketManager ({}) caught exception and will 
continue:", name, ex);
-                os = NullOutputStream.getInstance();
+                os = OutputStream.nullOutputStream();
             }
             if (data.reconnectDelayMillis == 0) {
                 Closer.closeSilently(socket);
@@ -434,11 +434,10 @@ public class TcpSocketManager extends 
AbstractSocketManager {
             return createManager(name, os, null, inetAddress, data);
         }
 
-        @SuppressWarnings("unchecked")
         M createManager(final String name, final OutputStream os, final Socket 
socket, final InetAddress inetAddress, final T data) {
-            return (M) new TcpSocketManager(name, os, socket, inetAddress, 
data.host, data.port,
+            return Cast.cast(new TcpSocketManager(name, os, socket, 
inetAddress, data.host, data.port,
                     data.connectTimeoutMillis, data.reconnectDelayMillis, 
data.immediateFail, data.layout,
-                    data.bufferSize, data.socketOptions);
+                    data.bufferSize, data.socketOptions));
         }
 
         Socket createSocket(final T data) throws IOException {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
deleted file mode 100644
index eb9be9f191..0000000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Writes all data to the famous <b>/dev/null</b>.
- * <p>
- * This output stream has no destination (file/socket etc.) and all bytes 
written to it are ignored and lost.
- * </p>
- * Originally from Apache Commons IO.
- *
- * @since 2.3
- */
-public final class NullOutputStream extends OutputStream {
-
-    private static final NullOutputStream INSTANCE = new NullOutputStream();
-
-    /**
-     * Gets the singleton instance.
-     *
-     * @return the singleton instance.
-     */
-    public static NullOutputStream getInstance() {
-        return INSTANCE;
-    }
-
-    private NullOutputStream() {
-        // do nothing
-    }
-
-    /**
-     * Does nothing - output to <code>/dev/null</code>.
-     *
-     * @param b
-     *        The bytes to write
-     * @param off
-     *        The start offset
-     * @param len
-     *        The number of bytes to write
-     */
-    @Override
-    public void write(final byte[] b, final int off, final int len) {
-        // to /dev/null
-    }
-
-    /**
-     * Does nothing - output to <code>/dev/null</code>.
-     *
-     * @param b
-     *        The byte to write
-     */
-    @Override
-    public void write(final int b) {
-        // to /dev/null
-    }
-
-    /**
-     * Does nothing - output to <code>/dev/null</code>.
-     *
-     * @param b
-     *        The bytes to write
-     * @throws IOException
-     *         never
-     */
-    @Override
-    public void write(final byte[] b) throws IOException {
-        // to /dev/null
-    }
-}

Reply via email to