Can generics be used to here? Gary -------- Original message -------- From: [email protected] Date: 10/23/2015 06:19 (GMT-08:00) To: [email protected] Subject: [1/3] logging-log4j2 git commit: Builder like pattern in MapMessage
Repository: logging-log4j2 Updated Branches: refs/heads/master 9c3af7114 -> 66bbf4ddf Builder like pattern in MapMessage Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/990a97c0 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/990a97c0 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/990a97c0 Branch: refs/heads/master Commit: 990a97c0b5688ee9512544edfa6596de9ee939fc Parents: f08c62c Author: Mikael St��ldal <[email protected]> Authored: Thu Oct 15 17:33:55 2015 +0200 Committer: Mikael St��ldal <[email protected]> Committed: Thu Oct 15 17:33:55 2015 +0200 ---------------------------------------------------------------------- .../org/apache/logging/log4j/message/MapMessage.java | 5 +++++ .../logging/log4j/message/StructuredDataMessage.java | 5 +++++ .../apache/logging/log4j/message/MapMessageTest.java | 11 +++++++++++ .../log4j/message/StructuredDataMessageTest.java | 14 +++++++++++++- 4 files changed, 34 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/990a97c0/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java index 6172fee..1012d0e 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java @@ -109,6 +109,11 @@ public class MapMessage implements MultiformatMessage { data.clear(); } + public MapMessage withValue(final String key, final String value) { + put(key, value); + return this; + } + /** * Add an item to the data Map. * @param key The name of the data item. http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/990a97c0/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java index 97d7204..abacce2 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java @@ -130,6 +130,11 @@ public class StructuredDataMessage extends MapMessage { } + public StructuredDataMessage withValue(final String key, final String value) { + put(key, value); + return this; + } + /** * Returns the supported formats. * @return An array of the supported format names. http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/990a97c0/log4j-api/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java index 1ee688e..7f43027 100644 --- a/log4j-api/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java +++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java @@ -37,6 +37,17 @@ public class MapMessageTest { } @Test + public void testBuilder() { + final String testMsg = "Test message {}"; + final MapMessage msg = new MapMessage() + .withValue("message", testMsg) + .withValue("project", "Log4j"); + final String result = msg.getFormattedMessage(); + final String expected = "message=\"Test message {}\" project=\"Log4j\""; + assertEquals(expected, result); + } + + @Test public void testXML() { final String testMsg = "Test message {}"; final MapMessage msg = new MapMessage(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/990a97c0/log4j-api/src/test/java/org/apache/logging/log4j/message/StructuredDataMessageTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/StructuredDataMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/StructuredDataMessageTest.java index d741f35..ce9ad9b 100644 --- a/log4j-api/src/test/java/org/apache/logging/log4j/message/StructuredDataMessageTest.java +++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/StructuredDataMessageTest.java @@ -37,7 +37,19 @@ public class StructuredDataMessageTest { assertEquals(expected, result); } - @Test(expected=IllegalArgumentException.class) + @Test + public void testBuilder() { + final String testMsg = "Test message {}"; + final StructuredDataMessage msg = new StructuredDataMessage("MsgId@12345", testMsg, "Alert") + .withValue("message", testMsg) + .withValue("project", "Log4j") + .withValue("memo", "This is a very long test memo to prevent regression of LOG4J2-114"); + final String result = msg.getFormattedMessage(); + final String expected = "Alert [MsgId@12345 memo=\"This is a very long test memo to prevent regression of LOG4J2-114\" message=\"Test message {}\" project=\"Log4j\"] Test message {}"; + assertEquals(expected, result); + } + + @Test(expected = IllegalArgumentException.class) public void testMsgWithKeyTooLong() { final String testMsg = "Test message {}"; final StructuredDataMessage msg = new StructuredDataMessage("MsgId@12345", testMsg, "Alert");
