Yes, I am OK with this.

Ralph

> On Feb 19, 2016, at 1:28 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> If we all agree that MS should be deprecated then yes, let's have one task to 
> remove new 2.6 MS APIs and deprecate existing 2.5 ones.
> 
> Ralph? Are you OK with this?
> 
> Then we can continue refining.
> 
> Gary
> 
> On Feb 18, 2016 8:23 AM, "Remko Popma" <remko.po...@gmail.com 
> <mailto:remko.po...@gmail.com>> wrote:
> I addressed the problem in https://issues.apache.org/jira/browse/LOG4J2-1280 
> <https://issues.apache.org/jira/browse/LOG4J2-1280>
> LambdaUtil now correctly handles the case where Supplier<?>s returns a 
> Message object.
> I believe that MessageSupplier can now be deprecated.
> 
> It may also make sense to  remove the new traceEntry/traceExit methods 
> introduced in LOG4J2-1255 that use MessageSupplier: their Supplier<?> 
> equivalent should be sufficient.
> 
> On Tue, Feb 16, 2016 at 8:34 AM, Matt Sicker <boa...@gmail.com 
> <mailto:boa...@gmail.com>> wrote:
> The wildcard bounds are checked at compile time though I thought. Plus, 
> despite the type erasure, there's still a bit of info available through 
> reflection, so it's not entirely lost.
> 
> On 15 February 2016 at 16:23, Remko Popma <remko.po...@gmail.com 
> <mailto:remko.po...@gmail.com>> wrote:
> The wildcard bounds are no help since they get erased, so we cannot have 
> separate methods for Supplier<? extends Message> and Supplier<?>. (This is 
> why I originally introduced MessageSupplier.) 
> 
> I don't mind deprecating MessageSupplier, but the point is that in the 
> implementation of these logging methods we need to be very careful: 
> 
> Generally, if log(Supplier<?>) supplies an object of type Message it doesn't 
> need to be wrapped in an ObjectMessage, where if any other Object is supplied 
> it _does_ need to be wrapped. 
> 
> Similarly for where the Supplier supplies param values: if the supplied value 
> is a Message you need to _unwrap_ it by calling getFormattedString() on it. 
> The current impl of traceEntry/Exit does not do this correctly, I reported 
> this as a bug in LOG4J2-1255. 
> 
> Sent from my iPhone
> 
> On 2016/02/16, at 2:21, Gary Gregory <garydgreg...@gmail.com 
> <mailto:garydgreg...@gmail.com>> wrote:
> 
>> On Mon, Feb 15, 2016 at 9:17 AM, Gary Gregory <garydgreg...@gmail.com 
>> <mailto:garydgreg...@gmail.com>> wrote:
>> On Mon, Feb 15, 2016 at 9:08 AM, Matt Sicker <boa...@gmail.com 
>> <mailto:boa...@gmail.com>> wrote:
>> Sounds good. Remko was mentioning how they could be combined by checking if 
>> get() returns an instanceof Message, but using the wildcard bounds like you 
>> show sounds like a better way (where possible).
>> 
>> Wasn't Remko talking about a different case? 
>> 
>> Right now we have:
>> 
>> traceExit(MessageSupplier, R)
>> traceExit(Supplier<? extends Message>, R) 
>> 
>> Both "MessageSupplier.get()" and "Supplier<? extends Message>" *do* return a 
>> Message so I think we can remove traceExit(Supplier<? extends Message>, R)  
>> (which is not even used/tested ATM).
>> 
>> Ah, but we do not have a traceExit(Supplier<R>) 
>> 
>> I'll add that completeness, and also traceExit(EntryMessage). My use cases 
>> only call for traceExit(EntryMessage, R) and traceExit(EntryMessage).
>> 
>> Gary
>> 
>> 
>> Gary
>> 
>> On 15 February 2016 at 11:06, Gary Gregory <garydgreg...@gmail.com 
>> <mailto:garydgreg...@gmail.com>> wrote:
>> Since 2.4 we have:
>> 
>> public interface MessageSupplier {
>> 
>>     /**
>>      * Gets a Message.
>>      *
>>      * @return a Message
>>      */
>>     Message get();
>> }
>> 
>> and
>> 
>> public interface Supplier<T> {
>> 
>>     /**
>>      * Gets a value.
>>      *
>>      * @return a value
>>      */
>>     T get();
>> }
>> 
>> Which smells fishy to me. Instead I propose:
>> 
>> public interface MessageSupplier extends Supplier<Message> {
>>     // empty
>> }
>> 
>> Whether or not we do the above, we can replace:
>> 
>> traceExit(R, Supplier<? extends Message>)
>> 
>> with:
>> 
>> traceExit(R, MessageSupplier)
>> 
>> which we already have.
>> 
>> A test search shows the above as the only instance of "Supplier<? extends 
>> Message>" in our Java files.
>> 
>> Thoughts?
>> 
>> -- 
>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
>> ggreg...@apache.org  <mailto:ggreg...@apache.org>
>> 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 <http://garygregory.wordpress.com/> 
>> Home: http://garygregory.com/ <http://garygregory.com/>
>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
>> 
>> 
>> -- 
>> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
>> 
>> 
>> 
>> -- 
>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
>> ggreg...@apache.org  <mailto:ggreg...@apache.org>
>> 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 <http://garygregory.wordpress.com/> 
>> Home: http://garygregory.com/ <http://garygregory.com/>
>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
>> 
>> 
>> -- 
>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
>> ggreg...@apache.org  <mailto:ggreg...@apache.org>
>> 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 <http://garygregory.wordpress.com/> 
>> Home: http://garygregory.com/ <http://garygregory.com/>
>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> 
> 
> -- 
> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>
> 

Reply via email to