Neither I am sure I understand you. By dating the email thread and the IModel interface hierarchy you mean that by them being old we can't discuss their merit?
I meant that IModel isn't a functional interface, not that it isn't annotated as one. Same for the setObject method not having a default implementation. IModel is the interface of objects with two behaviours, they can set and get model objects. A functional interface is a contract promising only one behavior. How to throw an exception is the default functionality of setObject method? Nothing is being set there, so it doesn't fit as a default implementation. On Mar 27, 2017 3:22 AM, "Martin Grigorov" <[email protected]> wrote: Hi Pedro, I am not sure I understand you! This discussion was 1.5 years ago ... On Mon, Mar 27, 2017 at 1:39 AM, Pedro Santos <[email protected]> wrote: > -0 > > I see no good reason for IModel to extend from IDetachable. Users should be > able to add this interface at their will. > IModel extends IDetachable since forever https://github.com/apache/wicket/blob/wicket-1.3.x/jdk- 1.4/wicket/src/main/java/org/apache/wicket/model/IModel.java#L56 > > >If IModel were a @FunctionalInterface, then you wouldn't need something > like > a SupplierModel; you could just use a lambda directly: > > IModel, as it's now, isn't a functional interface. > Yes, it is! https://github.com/apache/wicket/blob/8a4e1b3c24f4ce1fc3e44ca1b5a923 0158d9b584/wicket-core/src/main/java/org/apache/wicket/model/IModel.java#L63 > > >Then maybe just make IModel#setObject() default too .. > > There's no default implementation for IModel#setObject(). The one that was > Yes, there is! https://github.com/apache/wicket/blob/8a4e1b3c24f4ce1fc3e44ca1b5a923 0158d9b584/wicket-core/src/main/java/org/apache/wicket/model/IModel.java#L81 > added is as much semantically wrong as to say IModel is a functional > interface. > Proposal: > > Why don't we make AbstractReadyOnlyModel the superinterface of IModel > instead of to keep it as an abstract adaptor for IModel? So we would have a > semantically correct functional interface. > IMO the current design looks and works quite good! No need to change anything! > > > > Pedro Santos > > On Tue, Oct 6, 2015 at 6:42 PM, Martin Grigorov <[email protected]> > wrote: > > > Ugh, right! > > > > Then maybe just make IModel#setObject() default too ... > > We will experiment! :) > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Tue, Oct 6, 2015 at 11:27 PM, Michael Mosmann <[email protected]> > > wrote: > > > > > .. @IReadOnlyModel: i hope, it will be easier to change then the last > > time > > > i tried it. Watch out for component default model stuff... > > > > > > :) > > > > > > Am 6. Oktober 2015 22:54:37 MESZ, schrieb Martin Grigorov < > > > [email protected]>: > > > >On Tue, Oct 6, 2015 at 10:43 PM, Andrew Geery <[email protected] > > > > > >wrote: > > > > > > > >> If IModel were a @FunctionalInterface, then you wouldn't need > > > >something > > > >> like a SupplierModel; you could just use a lambda directly: > > > >> > > > >> new Label("label", () -> "The current time is " + LocalDate.now()); > > > >> > > > > > > > >This looks good indeed. > > > >It seems we will add IReadOnlyModel soon! > > > > > > > > > > > >> > > > >> And since IModel is Serializable, the lambda will be too, without > > > >having to > > > >> have an artificial interface that is both Serializable & a Supplier. > > > >> > > > >> Thanks > > > >> Andrew > > > >> > > > >> On Tue, Oct 6, 2015 at 4:21 PM, Martin Grigorov > > > ><[email protected]> > > > >> wrote: > > > >> > > > >> > Same for IRequestHandler#detach() > > > >> > > > > >> > Martin Grigorov > > > >> > Wicket Training and Consulting > > > >> > https://twitter.com/mtgrigorov > > > >> > > > > >> > On Mon, Oct 5, 2015 at 10:42 PM, Martijn Dashorst < > > > >> > [email protected]> wrote: > > > >> > > > > >> > > Should we use an empty default implementation for IModel#detach? > > > >> > > > > > >> > > > > > >> > > public class IModel<T> extends IDetachable > > > >> > > { > > > >> > > ... > > > >> > > > > > >> > > @Override > > > >> > > default void detach() > > > >> > > { > > > >> > > } > > > >> > > } > > > >> > > > > > >> > > This won't break existing applications, but might make it a bit > > > >easier > > > >> > > on the eyes to implement IModel directly. > > > >> > > > > > >> > > I'm not in favor of applying the default method to IDetachable, > > > >> > > because that would defeat the interface's purpose IMO. > > > >> > > > > > >> > > WDYT? > > > >> > > > > > >> > > Martijn > > > >> > > > > > >> > > > > >> > > > > > > -- > > > Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail > > > gesendet. > > >
