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<>();
