Here is a quick demo what can be done with Scala implicits (now!): https://github.com/wicketstuff/core/commit/ec6cd469f15a07721c0db9902f2672fbd117c197
Martin Grigorov Wicket Training and Consulting On Wed, Jan 29, 2014 at 5:27 PM, Martin Geisse <[email protected]>wrote: > Hi, > > I'm not yet sure if I like the idea to *replace* IModel by a lambda. > In my code, I rarely have a need for a non-detachable, non-writeable > model (except for a quick Model.of(constant), but this would not be > much different with a lambda). > > My idea would be to leave IModel as it is, with read/write/detach > methods that might be unimplemented. Then, provide default > implementations for IModel that *wrap* a lambda: > - component.setModel(new ReadOnlyModel( () -> "constant" )); > - component.setModel(new ReadOnlyModel( () -> myLocalVariable )); > - component.setModel(new LoadableDetachableModel( () -> > loadRecord(myLocalVariableThatContainsAnId) )); > > Especially the last case would really be nice. I run into the need for > a quick LoadableDetachableModel much more often than for a > non-detachable ReadOnlyModel. > > An added "big bonus" is that the API for Component/defaultModel() is > much more obvious, and another "small bonus" for needing fewer API > changes (though the latter is something I could take if it's worth the > change). > > Greetings, > Martin > > > > On Tue, Jan 28, 2014 at 11:25 PM, Martijn Dashorst > <[email protected]> wrote: > > Should we strive to ease the addition of lambda expressions to Wicket by > > introducing single method interfaces in various places in Wicket 7? > > > > For a contrived example: > > > > AbstractLink#setBody(IModel<?> bodyModel) {} > > > > Could be: > > > > AbstractLink#setBody(IReadModel<?> bodyModel) {} > > > > So that you can do: > > > > link.setBody( () -> "Click me!" ); > > > > This would replace the old and tried: > > > > link.setBody( new AbstractReadOnlyModel<Object>() { > > public Object getObject() { > > return "Click me!"; > > } > > }); > > > > Of course this particular example is better done with Model.of("Click > > me!"), but the lambda expression is what makes this more interesting. > > > > My proposal is to do what Michael Mosmann (iirc) has proposed previously > > with splitting read and write of IModel, and use it to our advantage in > > preparing for java 8 in various places. > > > > Components that are candidates for using Single Method Interface models > may > > include: > > - Label > > - AbstractLink#body > > - Repeaters > > - ... > > > > While I suppose it is early for us to consider full adoption of Java 8 > > lambda's, I doubt it can really hurt us badly if we take this small step. > > > > Martijn > > > > > > > > On Mon, Jan 27, 2014 at 2:36 PM, Martin Grigorov <[email protected] > >wrote: > > > >> Check > >> > https://cwiki.apache.org/confluence/display/WICKET/Migration+to+Wicket+7.0 > >> Also Jira filter > >> https://issues.apache.org/jira/issues/?filter=12326080shows all > >> tickets which are fixed only in 7.0.0. There are some new > >> features which are not listed in the migration guide. > >> There are no revolutionary changes. Only improvements which cannot be > done > >> in 6.x because of API breaks, behavior change or too risky for a minor > >> version. > >> > >> Martin Grigorov > >> Wicket Training and Consulting > >> > >> > >> On Mon, Jan 27, 2014 at 2:30 PM, Nick Pratt <[email protected]> wrote: > >> > >> > So what's in 7.0 M1 apart from a few modules that are no longer marked > >> > experimental? Is there anything significant in the core Wicket lib? > >> > > >> > N > >> > > >> > > >> > On Mon, Jan 27, 2014 at 6:41 AM, Martin Grigorov < > [email protected] > >> > >wrote: > >> > > >> > > OK, bean-validation, cdi-1.1 and native-websocket modules have been > >> made > >> > > non-experimental. > >> > > I think we can release 7.0.0.M1 (or whatever semver allows for > >> milestone > >> > > version). > >> > > @Martijn: can you do the release ? > >> > > > >> > > Martin Grigorov > >> > > Wicket Training and Consulting > >> > > > >> > > > >> > > On Mon, Jan 20, 2014 at 1:23 PM, Martijn Dashorst < > >> > > [email protected]> wrote: > >> > > > >> > > > On Mon, Jan 20, 2014 at 10:59 AM, Martin Grigorov < > >> > [email protected]> > >> > > > wrote: > >> > > > > Yes, evaluating which experimental modules to become stable is > an > >> > entry > >> > > > in > >> > > > > the roadmap document but I intentionally left it out of this > >> > discussion > >> > > > > because I think it deserves more discussions. But since you > started > >> > ... > >> > > > > >> > > > > wicket-cdi-1.1 is very new. I guess no one uses it so far. > >> > > > > Did Topicus migrated to 6.13 yet ? > >> > > > > Igor did your product move to wicket-cdi-1.1 ? > >> > > > > But since wicket-cdi-1.1 has evolved from wicket-cdi(-1.0) I > >> believe > >> > it > >> > > > is > >> > > > > mature enough to be part of the stable module in Wicket 7. > >> > > > > >> > > > We have CDI-1.1 in our current project. It has yet to reach > anything > >> > > > near a testing environment, but for development it seems to work. > >> > > > > >> > > > > Wicket Bean Validation (JSR303) seems to be working fine. There > >> were > >> > > > just a > >> > > > > few issues with it. I'm +1 to make it stable module. > >> > > > > > >> > > > > Wicket Native WebSockets: > >> > > > > I personally like it and I'd like to make it even better based > on > >> > > users' > >> > > > > feedback. > >> > > > > We use it in an internal project. > >> > > > > My only concern about making it stable is that it will be > harder to > >> > > make > >> > > > > improvements(API breaks) when more people start to use it. > >> > > > > I am +1 to make it stable. > >> > > > > >> > > > You can make it stable in 6.x, and break API until we release 7.0 > ;-) > >> > > > > >> > > > > Wicket-Bootstrap: I think this module should be removed. > >> > > > > >> > > > Yup. Though we should add a webjars resource reference into > >> > > > wicket-extensions that enables easy inclusion of any webjar > >> framework. > >> > > > > >> > > > > Wicket Examples NG can use Michael Haitz's > >> > > > > Wicket-Bootstrap<https://github.com/l0rdn1kk0n/wicket-bootstrap > > > >> or > >> > > > > move the code from the experimental Wicket-Bootstrap to its > >> packages. > >> > > > > >> > > > I'd suggest remove Wicket Examples NG for now (move to a branch or > >> > > > so). I can't see that any time is going into that project for now, > >> and > >> > > > any time invested should rather go into the user guide and fixing > 7.0 > >> > > > issues. > >> > > > > >> > > > I'm not *that* heavily attached to these two projects. > >> > > > > >> > > > Martijn > >> > > > > >> > > > >> > > >> > > > > > > > > -- > > Become a Wicket expert, learn from the best: http://wicketinaction.com >
