I'd like to revisit this thread in the wake of Wicket 7 and beyond.

We were toying with having RepeatingView's Item be typed as Item<?
extends T> instead of Item<T>. This would make the extensibility of
repeaters much better. This broke the hell out of the API (fixable for
the whole of Wicket in about 20 minutes), but break all applications.

We are not sure whether making IModel a single method interface will
improve this particular use case, but it will make using Java 8's
lambda's much, much easier and cleaner.

So I propose to revisit this discussion and see if we can find common
ground on splitting IModel into two classes: IModel<T> and
IWriteableModel<T>, and I guess there's a need for a
IReadWriteModel<T> as well for FormComponent:

public interface IModel<T> extends IDetachable
{
    public T getObject();
}

public interface IWriteableModel<T> extends Detachable
{
    public void setObject(T);
}

public interface IReadWriteModel<T> extends IModel<T>, IWriteableModel<T>
{
}

For example, the IWriteableModel could be useful for FileUploadField,
except that FormComponent depends on read/write capabilities (or is
it?).

Martijn


On Sun, Dec 16, 2012 at 8:30 PM, michaelmosmann <[email protected]> wrote:
> GitHub user michaelmosmann opened a pull request:
>
>     https://github.com/apache/wicket/pull/27
>
>     change IModel to readonly by default
>
>     I have removed setObject() from IModel and moved it to IWriteableModel. 
> This time i tried to make as less impact as possible. All test are green (you 
> hat to disable the clirr plugin because of api changes to 6.0.0).
>
>     Why?
>
>     You can not say if a model is read only by its type. You can not force a 
> component not to change your model value (based on the type of the model).
>
>     I would like to change this. This is a first step to show, that it is 
> possible.
>
> You can merge this pull request into a Git repository by running:
>
>     $ git pull https://github.com/michaelmosmann/wicket 
> Refactor-WriteableModel
>
> Alternatively you can review and apply these changes as the patch at:
>
>     https://github.com/apache/wicket/pull/27.patch
>
> ----
> commit 5521138c412036551bdf96fcbfbe2286a7e1fd9b
> Author: Michael Mosmann <[email protected]>
> Date:   2012-09-26T20:17:26Z
>
>     ignore idea project files
>
> commit 9a2f8c8665c48abe29611cc5d5f0cc72e53c961c
> Author: Michael Mosmann <[email protected]>
> Date:   2012-09-30T22:58:04Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit 698bfb771128fd157a4e5a47af5e61ff40a06d68
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-01T17:17:46Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit b4645c4608517877aba49bac8d3aec695d8922fc
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-01T18:40:27Z
>
>     git ignore
>
> commit 9323d9593931f82ac9dbe6908b49aeeda359bd31
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-02T14:34:40Z
>
>     introduce writeable model
>
> commit 5408fab49e20105c15cb9a989cf3de0845edf448
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-09T19:32:09Z
>
>     added annotation
>
> commit 2965b1b698f1c08eb07a15a60336a6e7ecce4135
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-09T19:34:17Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit d088d97094885faa579279d2b847d6137ebfa55e
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-09T19:35:15Z
>
>     Merge branch 'trunk' into Refactor-WriteableModel
>
> commit 2a60388d3513c2f44c507347b6da16d31f618860
> Author: Michael Mosmann <[email protected]>
> Date:   2012-10-10T18:48:04Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit 5ffb19d8bf8522d19506240da8b38ff69a4707eb
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-06T21:06:17Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit 9900066c219b67b536e98fcb606e07c31076482f
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-06T21:08:38Z
>
>     Merge branch 'trunk' into Refactor-WriteableModel
>
> commit 5e2c00f1f3c1988ed250793ca55768c8fcf1bbac
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T18:05:24Z
>
>     Merge remote-tracking branch 'upstream/master' into trunk
>
> commit 575d73af0c57611e17cd5e68fff61a3a5cd3c50d
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T18:07:53Z
>
>     Merge remote-tracking branch 'origin/trunk' into Refactor-WriteableModel
>
> commit 74dccf0c42af29dfbc49d31c1d7330a43ebba6c6
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T18:30:46Z
>
>     prepare component model replacement
>
> commit 49dc93c8b81c913a37dfe92fedbe0cf81e720413
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T19:01:01Z
>
>     compiles
>
> commit 23f85a8dd42a5b9838774195f88e3b3f74785a40
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T19:19:11Z
>
>     clean up
>
> commit 8b93bc61bf83b1dc681c6d71f1ea8b8d43c7c1ab
> Author: Michael Mosmann <[email protected]>
> Date:   2012-12-16T19:19:19Z
>
>     clean up
>
> ----
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com

Reply via email to