Hi Sven, On Wed, Sep 24, 2014 at 10:05 PM, <[email protected]> wrote:
> Repository: wicket > Updated Branches: > refs/heads/master fb8db6ce6 -> adcb7a632 > > > WICKET-5350 reintroduce wildcards for repeater over models, otherwise > subclasses is hindered > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/adcb7a63 > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/adcb7a63 > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/adcb7a63 > > Branch: refs/heads/master > Commit: adcb7a632af8225e86e09e398b8fb5430b143b18 > Parents: fb8db6c > Author: svenmeier <[email protected]> > Authored: Wed Sep 24 22:05:04 2014 +0200 > Committer: svenmeier <[email protected]> > Committed: Wed Sep 24 22:05:04 2014 +0200 > > ---------------------------------------------------------------------- > .../wicket/markup/html/list/ListItemModel.java | 13 ++------ > .../wicket/markup/html/list/ListView.java | 20 ++++++------ > .../markup/html/list/PageableListView.java | 6 ++-- > .../markup/html/list/PropertyListView.java | 6 ++-- > .../wicket/markup/html/panel/FeedbackPanel.java | 2 +- > .../markup/repeater/AbstractPageableView.java | 4 +-- > .../wicket/markup/repeater/RefreshingView.java | 4 +-- > .../wicket/markup/html/list/ListViewTest.java | 33 ++++++++++++++++++++ > .../markup/html/form/select/SelectOptions.java | 7 +++-- > 9 files changed, 60 insertions(+), 35 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListItemModel.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListItemModel.java > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListItemModel.java > index 9bed7bb..0b8192b 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListItemModel.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListItemModel.java > @@ -16,7 +16,7 @@ > */ > package org.apache.wicket.markup.html.list; > > -import org.apache.wicket.model.IModel; > +import org.apache.wicket.model.AbstractReadOnlyModel; > > /** > * Model for list items. > @@ -26,7 +26,7 @@ import org.apache.wicket.model.IModel; > * Model object type > * > */ > -public class ListItemModel<T> implements IModel<T> > +public class ListItemModel<T> extends AbstractReadOnlyModel<T> > { > private static final long serialVersionUID = 1L; > > @@ -60,15 +60,6 @@ public class ListItemModel<T> implements IModel<T> > } > > /** > - * @see org.apache.wicket.model.IModel#setObject(java.lang.Object) > - */ > - @Override > - public void setObject(T object) > - { > - listView.getModelObject().set(index, object); > - } > Why did you make this change ? > - > - /** > * @see org.apache.wicket.model.IDetachable#detach() > */ > @Override > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListView.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListView.java > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListView.java > index 54b3015..57f9d84 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListView.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/ListView.java > @@ -100,7 +100,7 @@ import > org.apache.wicket.util.collections.ReadOnlyIterator; > * @author Eelco Hillenius > * > * @param <T> > - * Model object type > + * type of elements contained in the model's list > */ > public abstract class ListView<T> extends AbstractRepeater > { > @@ -130,11 +130,11 @@ public abstract class ListView<T> extends > AbstractRepeater > } > > /** > - * @param id > - * @param model > + * @param id component id > + * @param model model containing a list of > * @see org.apache.wicket.Component#Component(String, IModel) > */ > - public ListView(final String id, final IModel<? extends List<T>> > model) > + public ListView(final String id, final IModel<? extends List<? > extends T>> model) > { > super(id, model); > > @@ -156,7 +156,7 @@ public abstract class ListView<T> extends > AbstractRepeater > * List to cast to Serializable > * @see org.apache.wicket.Component#Component(String, IModel) > */ > - public ListView(final String id, final List<T> list) > + public ListView(final String id, final List<? extends T> list) > { > this(id, Model.ofList(list)); > } > @@ -169,9 +169,9 @@ public abstract class ListView<T> extends > AbstractRepeater > * @return The list of items in this list view. > */ > @SuppressWarnings("unchecked") > - public final List<T> getList() > + public final List<? extends T> getList() > { > - final List<T> list = (List<T>)getDefaultModelObject(); > + final List<? extends T> list = (List<? extends > T>)getDefaultModelObject(); > if (list == null) > { > return Collections.emptyList(); > @@ -364,7 +364,7 @@ public abstract class ListView<T> extends > AbstractRepeater > * The list for the new model. The list must implement > {@link Serializable}. > * @return This for chaining > */ > - public ListView<T> setList(List<T> list) > + public ListView<T> setList(List<? extends T> list) > { > setDefaultModel(Model.ofList(list)); > return this; > @@ -638,9 +638,9 @@ public abstract class ListView<T> extends > AbstractRepeater > * @return model object > */ > @SuppressWarnings("unchecked") > - public final List<T> getModelObject() > + public final List<? extends T> getModelObject() > { > - return (List<T>)getDefaultModelObject(); > + return (List<? extends T>)getDefaultModelObject(); > } > > /** > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PageableListView.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PageableListView.java > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PageableListView.java > index 7c717dd..7690db2 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PageableListView.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PageableListView.java > @@ -29,7 +29,7 @@ import org.apache.wicket.model.IModel; > * > * @author Jonathan Locke > * @param <T> > - * Model object type > + * type of elements contained in the model's list > */ > public abstract class PageableListView<T> extends ListView<T> implements > IPageableItems > { > @@ -51,7 +51,7 @@ public abstract class PageableListView<T> extends > ListView<T> implements IPageab > * @param itemsPerPage > * Number of rows to show on a page > */ > - public PageableListView(final String id, final IModel<? extends > List<T>> model, > + public PageableListView(final String id, final IModel<? extends > List<? extends T>> model, > int itemsPerPage) > { > super(id, model); > @@ -70,7 +70,7 @@ public abstract class PageableListView<T> extends > ListView<T> implements IPageab > * Number of rows to show on a page > * @see ListView#ListView(String, List) > */ > - public PageableListView(final String id, final List<T> list, final > int itemsPerPage) > + public PageableListView(final String id, final List<? extends T> > list, final int itemsPerPage) > { > super(id, list); > this.itemsPerPage = itemsPerPage; > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PropertyListView.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PropertyListView.java > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PropertyListView.java > index 464a14e..b458ed0 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PropertyListView.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/html/list/PropertyListView.java > @@ -29,7 +29,7 @@ import org.apache.wicket.model.IModel; > * @author Nathan Hamblen > * > * @param <T> > - * Model object type > + * type of elements contained in the model's list > */ > public abstract class PropertyListView<T> extends ListView<T> > { > @@ -57,7 +57,7 @@ public abstract class PropertyListView<T> extends > ListView<T> > * @param model > * wrapping a List > */ > - public PropertyListView(final String id, final IModel<? extends > List<T>> model) > + public PropertyListView(final String id, final IModel<? extends > List<? extends T>> model) > { > super(id, model); > } > @@ -71,7 +71,7 @@ public abstract class PropertyListView<T> extends > ListView<T> > * @param list > * unmodeled List > */ > - public PropertyListView(final String id, final List<T> list) > + public PropertyListView(final String id, final List<? extends T> > list) > { > super(id, list); > } > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java > b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java > index 50fe999..d17ba9f 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java > @@ -327,7 +327,7 @@ public class FeedbackPanel extends Panel implements > IFeedback > */ > protected final List<FeedbackMessage> getCurrentMessages() > { > - final List<FeedbackMessage> messages = > messageListView.getModelObject(); > + final List<? extends FeedbackMessage> messages = > messageListView.getModelObject(); > return Collections.unmodifiableList(messages); > } > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractPageableView.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractPageableView.java > b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractPageableView.java > index 297ee8c..8b98077 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractPageableView.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractPageableView.java > @@ -41,7 +41,7 @@ import org.apache.wicket.model.IModel; > * @author Igor Vaynberg (ivaynberg) > * > * @param <T> > - * Model object type > + * type of elements contained in the model's list > */ > public abstract class AbstractPageableView<T> extends RefreshingView<T> > implements IPageableItems > { > @@ -73,7 +73,7 @@ public abstract class AbstractPageableView<T> extends > RefreshingView<T> implemen > * @param model > * @see org.apache.wicket.Component#Component(String, IModel) > */ > - public AbstractPageableView(String id, IModel<? extends > Collection<T>> model) > + public AbstractPageableView(String id, IModel<? extends > Collection<? extends T>> model) > { > super(id, model); > clearCachedItemCount(); > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/main/java/org/apache/wicket/markup/repeater/RefreshingView.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/RefreshingView.java > b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/RefreshingView.java > index 3e18d88..e9a11fc 100644 > --- > a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/RefreshingView.java > +++ > b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/RefreshingView.java > @@ -46,7 +46,7 @@ import org.apache.wicket.util.lang.Generics; > * @author Igor Vaynberg (ivaynberg) > * > * @param <T> > - * Model object type > + * type of elements contained in the model's list > */ > public abstract class RefreshingView<T> extends RepeatingView > { > @@ -79,7 +79,7 @@ public abstract class RefreshingView<T> extends > RepeatingView > * @param model > * model > */ > - public RefreshingView(String id, IModel<? extends Collection<T>> > model) > + public RefreshingView(String id, IModel<? extends Collection<? > extends T>> model) > { > super(id, model); > } > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-core/src/test/java/org/apache/wicket/markup/html/list/ListViewTest.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/test/java/org/apache/wicket/markup/html/list/ListViewTest.java > b/wicket-core/src/test/java/org/apache/wicket/markup/html/list/ListViewTest.java > index c4caead..8ebf50f 100644 > --- > a/wicket-core/src/test/java/org/apache/wicket/markup/html/list/ListViewTest.java > +++ > b/wicket-core/src/test/java/org/apache/wicket/markup/html/list/ListViewTest.java > @@ -17,8 +17,11 @@ > package org.apache.wicket.markup.html.list; > > import java.util.ArrayList; > +import java.util.List; > > import org.apache.wicket.WicketTestCase; > +import org.apache.wicket.markup.html.basic.Label; > +import org.apache.wicket.model.IModel; > import org.apache.wicket.model.util.ListModel; > import org.junit.Test; > > @@ -57,6 +60,36 @@ public class ListViewTest extends WicketTestCase > } > > /** > + */ > + @Test > + public void generics() { > + // a listView for numbers > + class NumberListView extends ListView<Number> { > + > + private static final long serialVersionUID = 1L; > + > + // since the given list is not changed actually, > we can safely > + // accept lists accepting subtypes of numbers only > + public NumberListView(String id, IModel<? extends > List<? extends Number>> model) > + { > + super(id, model); > + } > + > + @Override > + protected void populateItem(ListItem<Number> item) > + { > + // non-fancy display of the number > + add(new Label("label", item.getModel())); > + } > + }; > + > + IModel<List<Integer>> integers = new ListModel<>(new > ArrayList<Integer>()); > + > + // pass list of integers to the number listView > + new NumberListView("integers", integers); > + } > + > + /** > * > */ > @Test > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/adcb7a63/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java > ---------------------------------------------------------------------- > diff --git > a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java > b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java > index c02f058..12cfed3 100644 > --- > a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java > +++ > b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java > @@ -39,6 +39,7 @@ import org.apache.wicket.model.util.CollectionModel; > * </pre> > * > * @param <T> > + * type of elements contained in the model's collection > * @author Igor Vaynberg (ivaynberg) > */ > public class SelectOptions<T> extends RepeatingView > @@ -56,7 +57,7 @@ public class SelectOptions<T> extends RepeatingView > * @param model > * @param renderer > */ > - public SelectOptions(final String id, final IModel<? extends > Collection<T>> model, > + public SelectOptions(final String id, final IModel<? extends > Collection<? extends T>> model, > final IOptionRenderer<T> renderer) > { > super(id, model); > @@ -71,7 +72,7 @@ public class SelectOptions<T> extends RepeatingView > * @param elements > * @param renderer > */ > - public SelectOptions(final String id, final Collection<T> elements, > + public SelectOptions(final String id, final Collection<? extends > T> elements, > final IOptionRenderer<T> renderer) > { > this(id, new CollectionModel<>(elements), renderer); > @@ -107,7 +108,7 @@ public class SelectOptions<T> extends RepeatingView > // populate this repeating view with SelectOption > components > removeAll(); > > - Collection<T> modelObject = > (Collection<T>)getDefaultModelObject(); > + Collection<? extends T> modelObject = > (Collection<? extends T>)getDefaultModelObject(); > > if (modelObject != null) > { > >
