- /**
* @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)
{