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

Reply via email to