You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2017/06/01 17:01:50 UTC

logging-log4j2 git commit: [LOG4J2-1929] EOFException with FormattedMessage. Closes #78.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 8e1a4ec62 -> 687bd523e


[LOG4J2-1929] EOFException with FormattedMessage. Closes #78.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/687bd523
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/687bd523
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/687bd523

Branch: refs/heads/master
Commit: 687bd523e3efe0c1b7d65a65a9abd995f9083ad4
Parents: 8e1a4ec
Author: Gary Gregory <gg...@apache.org>
Authored: Thu Jun 1 10:01:48 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Thu Jun 1 10:01:48 2017 -0700

----------------------------------------------------------------------
 .../logging/log4j/message/FormattedMessage.java |  4 ++-
 .../log4j/message/FormattedMessageTest.java     | 28 +++++++++++++++++---
 src/changes/changes.xml                         |  3 +++
 3 files changed, 31 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/687bd523/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java
index 5fe8353..a13fd99 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java
@@ -256,7 +256,9 @@ public class FormattedMessage implements Message {
         stringArgs = new String[argArray.length];
         int i = 0;
         for (final Object obj : argArray) {
-            stringArgs[i] = obj.toString();
+            final String string = String.valueOf(obj);
+            stringArgs[i] = string;
+            out.writeUTF(string);
             ++i;
         }
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/687bd523/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
index 061aaeb..cd24b51 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
@@ -16,13 +16,19 @@
  */
 package org.apache.logging.log4j.message;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Locale;
+
 import org.apache.logging.log4j.junit.Mutable;
 import org.apache.logging.log4j.util.Constants;
+import org.junit.Assert;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
-import java.util.Locale;
+import static org.junit.Assert.assertEquals;
 
 /**
  *
@@ -150,4 +156,20 @@ public class FormattedMessageTest {
         final String actual = msg.getFormattedMessage();
         assertEquals("Should use initial param value", "Test message abc", actual);
     }
+
+    @Test
+    public void testSerialization() throws IOException, ClassNotFoundException {
+        final FormattedMessage expected = new FormattedMessage("Msg", "a", "b", "c");
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try (final ObjectOutputStream out = new ObjectOutputStream(baos)) {
+            out.writeObject(expected);
+        }
+        final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+        final ObjectInputStream in = new ObjectInputStream(bais);
+        final FormattedMessage actual = (FormattedMessage) in.readObject();
+        Assert.assertEquals(expected, actual);
+        Assert.assertEquals(expected.getFormat(), actual.getFormat());
+        Assert.assertEquals(expected.getFormattedMessage(), actual.getFormattedMessage());
+        Assert.assertArrayEquals(expected.getParameters(), actual.getParameters());
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/687bd523/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4936876..9be1872 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -34,6 +34,9 @@
       <action issue="LOG4J2-1911" dev="rgoers" type="fix">
         Improve the documentation of the DynamicThresholdFilter.
       </action>
+      <action issue="LOG4J2-1929" dev="ggregory" type="fix" due-to="Borys Sokolov">
+        EOFException with FormattedMessage.
+      </action>
       <action issue="LOG4J2-1442" dev="mikes" type="add">
         Generic HTTP appender.
       </action>