Generics for what? To avoid putting the "with" method in subclasses? I
don't think so, but I would be happy to be proven wrong.

On Fri, Oct 23, 2015 at 6:11 PM, 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");
>
>


-- 
[image: MagineTV]

*Mikael Ståldal*
Senior software developer

*Magine TV*
[email protected]
Regeringsgatan 25  | 111 53 Stockholm, Sweden  |   www.magine.com

Privileged and/or Confidential Information may be contained in this
message. If you are not the addressee indicated in this message
(or responsible for delivery of the message to such a person), you may not
copy or deliver this message to anyone. In such case,
you should destroy this message and kindly notify the sender by reply
email.

Reply via email to