From b9d446580d3a9cbec339aa7c2fa07cec9d5572ff Mon Sep 17 00:00:00 2001 From: Jose Leon Date: Wed, 17 Aug 2016 14:54:43 -0400 Subject: [PATCH] LOG4J2-1527 - Add a null check in getFormattedMessage and initialize when needed --- .../logging/log4j/core/async/RingBufferLogEvent.java | 3 +++ .../log4j/core/async/RingBufferLogEventTest.java | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java index c4de9d4177d..61fc8765dc9 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java @@ -210,6 +210,9 @@ public Message getMessage() { */ @Override public String getFormattedMessage() { + if (this.messageText == null) { + return getMessage().getFormattedMessage(); + } return messageText.toString(); } diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java index ec3a8743275..cdc539f3be2 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java @@ -175,4 +175,14 @@ public void testCreateMementoReturnsCopy() { assertEquals(evt.getSource(), actual.getSource()); assertEquals(evt.getThrownProxy(), actual.getThrownProxy()); } + + @Test + public void testMessageTextNeverThrowsNpe() { + final RingBufferLogEvent evt = new RingBufferLogEvent(); + try { + evt.getFormattedMessage(); + } catch (NullPointerException e) { + fail("the messageText field was not set"); + } + } }