I didn't want to put every idea directly in master.
First wanted to here opinions.
But I see how this makes it hard to follow.
I'll merge this branch to master and then we can just rework whatever we
find not optimal directly there.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Mar 14, 2016 at 3:16 PM, Sven Meier <[email protected]> wrote:

> Hm, I starting to lose track of what is on which branch :/.
>
> Sven
>
>
>
> On 14.03.2016 14:09, Martin Grigorov wrote:
>
>> Hi Sven
>>
>>
>> On Mon, Mar 14, 2016 at 1:23 PM, Sven Meier <[email protected]> wrote:
>>
>> Hi Martin,
>>>
>>> speaking of someting to nuke - insteaf of:
>>>
>>>          IModel<String> personNameModel = new
>>> SupplierCachingModel<>(person::getName);
>>>
>>> Why not simply?
>>>
>>>          IModel<String> personNameModel =
>>> Model.loadableDetachable(person::getName);
>>>
>>> I didn't like the name "Supplier*Caching*Model" anyway.
>>>
>>> It is there already
>>
>> https://github.com/apache/wicket/blob/static-factories-for-lambdas/wicket-core/src/main/java/org/apache/wicket/model/Model.java#L208
>>
>> But I agree there is no need of SupplierCachingModel as a separate class.
>>
>>
>>
>> Regards
>>> Sven
>>>
>>>
>>>
>>>
>>> On 14.03.2016 12:36, Martin Grigorov wrote:
>>>
>>> Yes!
>>>>
>>>> -               IModel<String> personNameModel = new
>>>> SupplierModel<>(person::getName);
>>>> +               IModel<String> personNameModel = person::getName;
>>>>
>>>> Definitely makes sense to make it shorter!
>>>>
>>>> I'll nuke it now!
>>>>
>>>>
>>>> Martin Grigorov
>>>> Wicket Training and Consulting
>>>> https://twitter.com/mtgrigorov
>>>>
>>>> On Mon, Mar 14, 2016 at 10:55 AM, Sven Meier <[email protected]> wrote:
>>>>
>>>> Hi,
>>>>
>>>>> IModel being a functional interface now, what's the use of
>>>>> SupplierModel
>>>>> ?
>>>>> IMHO we can get rid of it.
>>>>>
>>>>> Regards
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>> On 12.03.2016 23:39, Tobias Soloschenko wrote:
>>>>>
>>>>> Yep - I am very happy about it, too - cool features for wicket 8 :-)
>>>>>
>>>>>> Great work all!
>>>>>>
>>>>>> kind regards
>>>>>>
>>>>>> Tobias
>>>>>>
>>>>>> Am 12.03.16 um 23:38 schrieb Sven Meier:
>>>>>>
>>>>>> As a bonus IModel is a @FunctionalInterface now and one can do things
>>>>>>
>>>>>>> like:
>>>>>>>>
>>>>>>>> new Link<String>("", () -> "abc") {
>>>>>>>>     @Override
>>>>>>>>     public void onClick()
>>>>>>>>     {
>>>>>>>>        // ...
>>>>>>>>     }
>>>>>>>> };
>>>>>>>>
>>>>>>>> Seems we're getting a grip on Wicket+lambdas finally :)
>>>>>>>>
>>>>>>> Thanks
>>>>>>> Sven
>>>>>>>
>>>>>>>
>>>>>>> On 12.03.2016 23:13, Martin Grigorov wrote:
>>>>>>>
>>>>>>> On Sat, Mar 12, 2016 at 11:01 PM, Martin Grigorov <
>>>>>>>
>>>>>>>> [email protected]
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> On Sat, Mar 12, 2016 at 7:48 PM, Sven Meier <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> 1)
>>>>>>>>>> we've been twiddling with read-only models for some time now, and
>>>>>>>>>> IIRC it
>>>>>>>>>> never quite worked out.
>>>>>>>>>> I don't see much benefit in IReadOnlyModel as it is proposed now -
>>>>>>>>>> perhaps I'm missing the point though.
>>>>>>>>>>
>>>>>>>>>> How about adding another default to IModel:
>>>>>>>>>>
>>>>>>>>>>        default void setObject(final T object) {
>>>>>>>>>>            throw new UnsupportedOperationException();
>>>>>>>>>>        }
>>>>>>>>>>
>>>>>>>>>> This way we can get rid of AbstractReadOnlyModel too :P
>>>>>>>>>>
>>>>>>>>>> A minor thing that bothers me here is that currently
>>>>>>>>>> AROM#setObject()
>>>>>>>>>>
>>>>>>>>>> is
>>>>>>>>> final, so subclasses are effectively read only too.
>>>>>>>>> By moving this method to IModel we cannot make any guarantees.
>>>>>>>>> But I guess it will always be used as an anonymous inner class, as
>>>>>>>>> AROM is
>>>>>>>>> used now. If someone wants to have children then (s)he will have to
>>>>>>>>> create
>>>>>>>>> a custom class and there (s)he can make it 'final'.
>>>>>>>>> Let's do it!
>>>>>>>>>
>>>>>>>>> As a bonus IModel is a @FunctionalInterface now and one can do
>>>>>>>>> things
>>>>>>>>>
>>>>>>>>> like:
>>>>>>>>
>>>>>>>> new Link<String>("", () -> "abc") {
>>>>>>>>       @Override
>>>>>>>>       public void onClick()
>>>>>>>>       {
>>>>>>>>          // ...
>>>>>>>>       }
>>>>>>>> };
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2)
>>>>>>>>
>>>>>>>>> I don't see a need for this.
>>>>>>>>>>
>>>>>>>>>> Have fun
>>>>>>>>>> Sven
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> how about adding a
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 11.03.2016 22:54, Martin Grigorov wrote:
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> At "lambdas" [1] branch there are two more features:
>>>>>>>>>>>
>>>>>>>>>>> 1) IReadOnlyModel by Michael Mossman
>>>>>>>>>>>
>>>>>>>>>>> At the moment there are AbstractReadOnlyModel and SupplierModel
>>>>>>>>>>> (extends
>>>>>>>>>>> from AROM).
>>>>>>>>>>> Initially while MM suggested IROM I thought it will be a parent
>>>>>>>>>>> interface
>>>>>>>>>>> of IModel but it is the opposite - IROM extends from IModel.
>>>>>>>>>>> I don't see need of IROM. The classes look enough to me.
>>>>>>>>>>>
>>>>>>>>>>> 2) stream based iteration of container's children by Andrea Del
>>>>>>>>>>> Bene
>>>>>>>>>>> I have said my opinion before - the visitor approach is faster
>>>>>>>>>>> than
>>>>>>>>>>> the
>>>>>>>>>>> stream based one.
>>>>>>>>>>> In addition we have to remove the deprecated
>>>>>>>>>>> org.apache.wicket.util.iterator.AbstractHierarchyIterator and its
>>>>>>>>>>> related
>>>>>>>>>>> classes because it fails with StackoverflowError when used in a
>>>>>>>>>>> page
>>>>>>>>>>> with
>>>>>>>>>>> bigger component tree.
>>>>>>>>>>> So I don't see a reason for this feature.
>>>>>>>>>>>
>>>>>>>>>>> Your option on them ?
>>>>>>>>>>>
>>>>>>>>>>> 1. https://github.com/apache/wicket/compare/lambdas
>>>>>>>>>>>
>>>>>>>>>>> Martin Grigorov
>>>>>>>>>>> Wicket Training and Consulting
>>>>>>>>>>> https://twitter.com/mtgrigorov
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>

Reply via email to