That seems reasonable.

On Monday, 26 October 2015, Remko Popma <[email protected]> wrote:

> I don't see the point:
> 1. there is no casting currenty that would be avoided by introducing
> generics
> 2. at the end of the ride, Message.getFormattedMessage turns the map
> contents into a String anyway, so there is no difference to client code
> calling mapMessage.with(objKey, objValue) and
> mapMessage.with(objKey.toString(), objValue.toString())
>
> We could add a convenience method  "with(Object, Object)" to help make
> client code a bit shorter, but generics would not come into play, no?
>
>
> On Tue, Oct 27, 2015 at 2:52 AM, Matt Sicker <[email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>
>> MapMessage can use Objects, not just Strings for its values.
>>
>> On 26 October 2015 at 10:45, Mikael Ståldal <[email protected]
>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>
>>> 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]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>>
>>>> Can generics be used to here?
>>>>
>>>> Gary
>>>>
>>>>
>>>> -------- Original message --------
>>>> From: [email protected]
>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>
>>>> Date: 10/23/2015 06:19 (GMT-08:00)
>>>> To: [email protected]
>>>> <javascript:_e(%7B%7D,'cvml','[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]
>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>>
>>>> Authored: Thu Oct 15 17:33:55 2015 +0200
>>>> Committer: Mikael St��ldal <[email protected]
>>>> <javascript:_e(%7B%7D,'cvml','[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]
>>> <javascript:_e(%7B%7D,'cvml','[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.
>>>
>>
>>
>>
>> --
>> Matt Sicker <[email protected]
>> <javascript:_e(%7B%7D,'cvml','[email protected]');>>
>>
>
>

-- 
Matt Sicker <[email protected]>

Reply via email to