You could still merge them and deprecate one perhaps?

On 12 February 2016 at 18:42, Remko Popma <[email protected]> wrote:

> The reason is that the Object returned by the Supplier<?> will be wrapped
> in a new Message (
> https://logging.apache.org/log4j/2.x/log4j-api/xref/org/apache/logging/log4j/spi/AbstractLogger.html#L1003),
> while the Message returned by MessageSupplier is used as is (
> https://logging.apache.org/log4j/2.x/log4j-api/xref/org/apache/logging/log4j/spi/AbstractLogger.html#L997
> ).
>
> With hindsight, that could have been implemented without introducing
> MessageSupplier. Darn, darn, darn!
>
> Could have been implemented like this:
>
> Object obj = supplier.get();
> Message msg = obj instanceof Message ? (Message) obj :
> messageFactory.newMessage(obj);
> logMessage(... msg ...);
>
> Why didn't I see this sooner? Mea culpa.
>
>
>
> On Saturday, 13 February 2016, Matt Sicker <[email protected]> wrote:
>
>> Yeah really, what was the point of MessageSupplier as a separate
>> interface from Supplier<Message>? They were both added in 2.4.
>>
>> On 12 February 2016 at 17:49, Gary Gregory <[email protected]>
>> wrote:
>>
>>> Hi Remko,
>>>
>>> On Fri, Feb 12, 2016 at 3:31 PM, Remko Popma <[email protected]>
>>> wrote:
>>>
>>>> I like the original code better since it gives more information.
>>>>
>>>
>>> The trick is to get a message in your log that makes sense, and, in this
>>> case, a debug-oriented toString() does not make sense (to me at least,
>>> please see the test cases I committed today and play around). In general
>>> though, FWIW, I do like toString() methods to be debug-oriented.
>>>
>>>
>>>> Also, if you want to provide for lamdas that supply a Message, provide
>>>> a method that accepts a MessageSupplier.
>>>>
>>>
>>> We provide both Supplier<?> and MessageSupplier APIs, I am just testing
>>> it all, starting with Supplier. I'll also add MessageSupplier tests.
>>>
>>> What is confusing is why we have both MessageSupplier and Supplier and
>>> why MessageSupplier is not defined as extending Supplier<Message>.
>>>
>>> Gary
>>>
>>>
>>>>
>>>> The reason is that the Object returned by the Supplier<?> will be
>>>> wrapped in a new Message (
>>>> https://logging.apache.org/log4j/2.x/log4j-api/xref/org/apache/logging/log4j/spi/AbstractLogger.html#L1003),
>>>> while the Message returned by MessageSupplier is used as is (
>>>> https://logging.apache.org/log4j/2.x/log4j-api/xref/org/apache/logging/log4j/spi/AbstractLogger.html#L997
>>>> ).
>>>>
>>>> On Saturday, 13 February 2016, <[email protected]> wrote:
>>>>
>>>>> Repository: logging-log4j2
>>>>> Updated Branches:
>>>>>   refs/heads/master 13f49fccc -> dc80330b5
>>>>>
>>>>>
>>>>> Make ObjectMessage work for code like logger.traceEntry(new
>>>>> Supplier<ObjectMessage>() { ... Tests to follow but are currently mixed
>>>>> with other changes in my local repo.
>>>>>
>>>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>>>> Commit:
>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/dc80330b
>>>>> Tree:
>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/dc80330b
>>>>> Diff:
>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/dc80330b
>>>>>
>>>>> Branch: refs/heads/master
>>>>> Commit: dc80330b521535746969e888c4b59539a147c265
>>>>> Parents: 13f49fc
>>>>> Author: ggregory <[email protected]>
>>>>> Authored: Fri Feb 12 11:13:03 2016 -0800
>>>>> Committer: ggregory <[email protected]>
>>>>> Committed: Fri Feb 12 11:13:03 2016 -0800
>>>>>
>>>>> ----------------------------------------------------------------------
>>>>>  .../main/java/org/apache/logging/log4j/message/ObjectMessage.java  |
>>>>> 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>> ----------------------------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dc80330b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
>>>>> ----------------------------------------------------------------------
>>>>> diff --git
>>>>> a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
>>>>> index 7cffe47..ad3dba8 100644
>>>>> ---
>>>>> a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
>>>>> +++
>>>>> b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
>>>>> @@ -98,7 +98,7 @@ public class ObjectMessage implements Message {
>>>>>
>>>>>      @Override
>>>>>      public String toString() {
>>>>> -        return "ObjectMessage[obj=" + getFormattedMessage() + ']';
>>>>> +        return getFormattedMessage();
>>>>>      }
>>>>>
>>>>>      private void writeObject(final ObjectOutputStream out) throws
>>>>> IOException {
>>>>>
>>>>>
>>>
>>>
>>> --
>>> E-Mail: [email protected] | [email protected]
>>> Java Persistence with Hibernate, Second Edition
>>> <http://www.manning.com/bauer3/>
>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>> Spring Batch in Action <http://www.manning.com/templier/>
>>> Blog: http://garygregory.wordpress.com
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>>
>>
>>
>>
>> --
>> Matt Sicker <[email protected]>
>>
>


-- 
Matt Sicker <[email protected]>

Reply via email to