It looks like it could, but as an API change, it may require a separate class.
On 23 October 2015 at 11:11, Gary Gregory <[email protected]> wrote: > 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"); > > -- Matt Sicker <[email protected]>
