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

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

commit 47882402810afa53755fee25abd8d10eb0061194
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Mon Nov 13 11:22:13 2023 +0100

    Add comments to warning suppressions and small fixes
---
 .../org/apache/logging/log4j/message/ReusableMessageFactory.java | 4 ++++
 .../java/org/apache/logging/log4j/message/SimpleMessage.java     | 9 ++++++++-
 .../main/java/org/apache/logging/log4j/status/StatusData.java    | 4 ++--
 .../main/java/org/apache/logging/log4j/util/PropertiesUtil.java  | 5 ++++-
 log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java | 4 ++++
 5 files changed, 22 insertions(+), 4 deletions(-)

diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
index 8ed882d350..6b8caac725 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
@@ -33,6 +33,10 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
  * @since 2.6
  */
 @PerformanceSensitive("allocation")
+/*
+ * https://errorprone.info/bugpattern/ThreadLocalUsage
+ * Instance thread locals are not a problem here, since this class is almost a 
singleton.
+ */
 @SuppressWarnings("ThreadLocalUsage")
 public final class ReusableMessageFactory implements MessageFactory {
 
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
index 4b8fcb97e6..0d739017a4 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
@@ -96,7 +96,14 @@ public class SimpleMessage implements Message, 
StringBuilderFormattable, CharSeq
         }
 
         final SimpleMessage that = (SimpleMessage) o;
-        return Objects.equals(getFormattedMessage(), 
that.getFormattedMessage());
+
+        /*
+         * https://errorprone.info/bugpattern/UndefinedEquals
+         *
+         * If the char sequences are different, we fall back on string 
comparison.
+         */
+        return Objects.equals(this.charSequence, that.charSequence)
+                || Objects.equals(this.getFormattedMessage(), 
that.getFormattedMessage());
     }
 
     @Override
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
index 9f7719380e..fde996c197 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.status;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
+import java.nio.charset.Charset;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -119,7 +120,6 @@ public class StatusData {
             value = "INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE",
             justification = "Log4j prints stacktraces only to logs, which 
should be private."
     )
-    @SuppressWarnings("DefaultCharset")
     public String getFormattedStatus() {
         final StringBuilder sb = new StringBuilder();
         final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss,SSS");
@@ -141,7 +141,7 @@ public class StatusData {
             sb.append(SPACE);
             final ByteArrayOutputStream baos = new ByteArrayOutputStream();
             t.printStackTrace(new PrintStream(baos));
-            sb.append(baos);
+            sb.append(baos.toString(Charset.defaultCharset()));
         }
         return sb.toString();
     }
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
index 2cd92fb124..e4a849fa31 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
@@ -885,7 +885,10 @@ public class PropertiesUtil implements PropertyEnvironment 
{
         HOURS("h,hour,hours", ChronoUnit.HOURS),
         DAYS("d,day,days", ChronoUnit.DAYS);
 
-        // descriptions is effectively immutable
+        /*
+         * https://errorprone.info/bugpattern/ImmutableEnumChecker
+         * This field is effectively immutable.
+         */
         @SuppressWarnings("ImmutableEnumChecker")
         private final String[] descriptions;
         private final ChronoUnit timeUnit;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
index b12d054bfc..a7651e90e6 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
@@ -64,6 +64,10 @@ public class Unbox {
      * Such memory leaks will not occur if only JDK classes are stored in 
ThreadLocals.
      * </p>
      */
+    /*
+     * https://errorprone.info/bugpattern/ThreadLocalUsage
+     * Instance thread locals are not a problem here, since this class is a 
singleton.
+     */
     @SuppressWarnings("ThreadLocalUsage")
     private static class WebSafeState {
         private final ThreadLocal<StringBuilder[]> ringBuffer = new 
ThreadLocal<>();

Reply via email to