Max Bowsher wrote: > Today I noticed I could in fact have a single implementation of > IChoiceRenderer which would work for most of my different persistent > classes, which all implement INamedPersistentObject exposing primary key > and human-friendly name - so I defined an > IChoiceRenderer<INamedPersistentObject> as a singleton and attempted to > use it. > > > I was immediately confronted with the problem that Wicket's choice > components want to receive an IChoiceRenderer<T>. I think all these > should be changed to IChoiceRenderer<? super T> to avoid imposing an > arbitrary unnecessary limitation.
Patch implementing the above. Max.
Index: src/main/java/org/apache/wicket/markup/html/form/CheckBoxMultipleChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/CheckBoxMultipleChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/CheckBoxMultipleChoice.java (working copy)
@@ -179,7 +179,7 @@
* java.util.List,org.apache.wicket.markup.html.form.IChoiceRenderer)
*/
public CheckBoxMultipleChoice(final String id, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -218,7 +218,7 @@
* java.util.List,org.apache.wicket.markup.html.form.IChoiceRenderer)
*/
public CheckBoxMultipleChoice(final String id, IModel<Collection<T>> model,
- final List<? extends T> choices, final IChoiceRenderer<T> renderer)
+ final List<? extends T> choices, final IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
@@ -271,7 +271,7 @@
* @see org.apache.wicket.Component#Component(String)
*/
public CheckBoxMultipleChoice(String id, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -293,7 +293,7 @@
* org.apache.wicket.model.IModel,org.apache.wicket.markup.html.form.IChoiceRenderer)
*/
public CheckBoxMultipleChoice(String id, IModel<Collection<T>> model,
- IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ IModel<? extends List<? extends T>> choices, IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
Index: src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java (working copy)
@@ -70,7 +70,7 @@
* @see AbstractChoice#AbstractChoice(String, List ,IChoiceRenderer)
*/
public AbstractSingleSelectChoice(final String id, final List<? extends T> data,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, data, renderer);
}
@@ -91,7 +91,7 @@
* @see AbstractChoice#AbstractChoice(String, IModel, List, IChoiceRenderer)
*/
public AbstractSingleSelectChoice(final String id, IModel<T> model,
- final List<? extends T> data, final IChoiceRenderer<T> renderer)
+ final List<? extends T> data, final IChoiceRenderer<? super T> renderer)
{
super(id, model, data, renderer);
}
@@ -117,7 +117,7 @@
* IModel,IChoiceRenderer)
*/
public AbstractSingleSelectChoice(String id, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -128,7 +128,7 @@
* IModel,IChoiceRenderer)
*/
public AbstractSingleSelectChoice(String id, IModel<T> model,
- IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ IModel<? extends List<? extends T>> choices, IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
@@ -215,7 +215,7 @@
protected T convertChoiceIdToChoice(String id)
{
final List<? extends T> choices = getChoices();
- final IChoiceRenderer<T> renderer = getChoiceRenderer();
+ final IChoiceRenderer<? super T> renderer = getChoiceRenderer();
for (int index = 0; index < choices.size(); index++)
{
// Get next choice
Index: src/main/java/org/apache/wicket/markup/html/form/ListChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/ListChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/ListChoice.java (working copy)
@@ -90,7 +90,8 @@
* @see org.apache.wicket.markup.html.form.AbstractChoice#AbstractChoice(String,
* List,IChoiceRenderer)
*/
- public ListChoice(final String id, final List<? extends T> choices, final IChoiceRenderer<T> renderer)
+ public ListChoice(final String id, final List<? extends T> choices,
+ final IChoiceRenderer<? super T> renderer)
{
this(id, null, choices, renderer, defaultMaxRows);
}
@@ -139,7 +140,7 @@
* @see DropDownChoice#DropDownChoice(String, IModel, List)
*/
public ListChoice(final String id, final IModel<T> model, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
this(id, model, choices, renderer, defaultMaxRows);
}
@@ -158,7 +159,7 @@
* @see DropDownChoice#DropDownChoice(String, IModel, List)
*/
public ListChoice(final String id, final IModel<T> model, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer, final int maxRows)
+ final IChoiceRenderer<? super T> renderer, final int maxRows)
{
super(id, model, choices, renderer);
this.maxRows = maxRows;
@@ -184,7 +185,8 @@
* @see org.apache.wicket.markup.html.form.AbstractChoice#AbstractChoice(String,
* IModel,IChoiceRenderer)
*/
- public ListChoice(String id, IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ public ListChoice(String id, IModel<? extends List<? extends T>> choices,
+ IChoiceRenderer<? super T> renderer)
{
this(id, null, choices, renderer, defaultMaxRows);
}
@@ -195,7 +197,7 @@
* IModel,IChoiceRenderer)
*/
public ListChoice(String id, IModel<T> model, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
this(id, model, choices, renderer, defaultMaxRows);
}
@@ -210,7 +212,7 @@
* IModel,IChoiceRenderer)
*/
public ListChoice(String id, IModel<T> model, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer, int maxRows)
+ IChoiceRenderer<? super T> renderer, int maxRows)
{
super(id, model, choices, renderer);
this.maxRows = maxRows;
Index: src/main/java/org/apache/wicket/markup/html/form/ListMultipleChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/ListMultipleChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/ListMultipleChoice.java (working copy)
@@ -114,7 +114,7 @@
* List,IChoiceRenderer)
*/
public ListMultipleChoice(final String id, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -131,8 +131,8 @@
* @see org.apache.wicket.markup.html.form.AbstractChoice#AbstractChoice(String, IModel,
* List,IChoiceRenderer)
*/
- public ListMultipleChoice(final String id, IModel<Collection<T>> object, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer)
+ public ListMultipleChoice(final String id, IModel<Collection<T>> object,
+ final List<? extends T> choices, final IChoiceRenderer<? super T> renderer)
{
super(id, object, choices, renderer);
}
@@ -159,7 +159,7 @@
* IModel,IChoiceRenderer)
*/
public ListMultipleChoice(String id, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -170,7 +170,7 @@
* IModel,IChoiceRenderer)
*/
public ListMultipleChoice(String id, IModel<Collection<T>> model,
- IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ IModel<? extends List<? extends T>> choices, IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
Index: src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java (working copy)
@@ -89,7 +89,7 @@
* List,IChoiceRenderer)
*/
public DropDownChoice(final String id, final List<? extends T> data,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, data, renderer);
}
@@ -107,7 +107,7 @@
* IChoiceRenderer)
*/
public DropDownChoice(final String id, IModel<T> model, final List<? extends T> data,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, model, data, renderer);
}
@@ -132,7 +132,8 @@
* @see org.apache.wicket.markup.html.form.AbstractChoice#AbstractChoice(String,
* IModel,IChoiceRenderer)
*/
- public DropDownChoice(String id, IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ public DropDownChoice(String id, IModel<? extends List<? extends T>> choices,
+ IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -143,7 +144,7 @@
* IModel,IChoiceRenderer)
*/
public DropDownChoice(String id, IModel<T> model, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
Index: src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java (working copy)
@@ -181,7 +181,8 @@
* @see org.apache.wicket.markup.html.form.AbstractChoice#AbstractChoice(String,
* List,IChoiceRenderer)
*/
- public RadioChoice(final String id, final List<? extends T> choices, final IChoiceRenderer<T> renderer)
+ public RadioChoice(final String id, final List<? extends T> choices,
+ final IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -219,7 +220,7 @@
* List,IChoiceRenderer)
*/
public RadioChoice(final String id, IModel<T> model, final List<? extends T> choices,
- final IChoiceRenderer<T> renderer)
+ final IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
@@ -269,7 +270,8 @@
* IModel,IChoiceRenderer)
* @see org.apache.wicket.Component#Component(String)
*/
- public RadioChoice(String id, IModel<? extends List<? extends T>> choices, IChoiceRenderer<T> renderer)
+ public RadioChoice(String id, IModel<? extends List<? extends T>> choices,
+ IChoiceRenderer<? super T> renderer)
{
super(id, choices, renderer);
}
@@ -291,7 +293,7 @@
* IModel,IChoiceRenderer)
*/
public RadioChoice(String id, IModel<T> model, IModel<? extends List<? extends T>> choices,
- IChoiceRenderer<T> renderer)
+ IChoiceRenderer<? super T> renderer)
{
super(id, model, choices, renderer);
}
Index: src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
===================================================================
--- src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java (revision 782725)
+++ src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java (working copy)
@@ -51,7 +51,7 @@
private IModel<? extends List<? extends E>> choices;
/** The renderer used to generate display/id values for the objects. */
- private IChoiceRenderer<E> renderer;
+ private IChoiceRenderer<? super E> renderer;
/**
* Constructor.
@@ -91,7 +91,7 @@
* @see org.apache.wicket.Component#Component(String)
*/
public AbstractChoice(final String id, final List<? extends E> choices,
- final IChoiceRenderer<E> renderer)
+ final IChoiceRenderer<? super E> renderer)
{
this(id, new WildcardListModel<E>(choices), renderer);
}
@@ -126,7 +126,7 @@
* @see org.apache.wicket.Component#Component(String, IModel)
*/
public AbstractChoice(final String id, IModel<T> model, final List<? extends E> choices,
- final IChoiceRenderer<E> renderer)
+ final IChoiceRenderer<? super E> renderer)
{
this(id, model, new WildcardListModel<E>(choices), renderer);
}
@@ -157,7 +157,7 @@
* @see org.apache.wicket.Component#Component(String)
*/
public AbstractChoice(final String id, final IModel<? extends List<? extends E>> choices,
- final IChoiceRenderer<E> renderer)
+ final IChoiceRenderer<? super E> renderer)
{
super(id);
this.choices = wrap(choices);
@@ -194,7 +194,7 @@
* @see org.apache.wicket.Component#Component(String, IModel)
*/
public AbstractChoice(final String id, IModel<T> model,
- final IModel<? extends List<? extends E>> choices, final IChoiceRenderer<E> renderer)
+ final IModel<? extends List<? extends E>> choices, final IChoiceRenderer<? super E> renderer)
{
super(id, model);
this.choices = wrap(choices);
@@ -260,7 +260,7 @@
/**
* @return The IChoiceRenderer used for rendering the data objects
*/
- public final IChoiceRenderer<E> getChoiceRenderer()
+ public final IChoiceRenderer<? super E> getChoiceRenderer()
{
return renderer;
}
@@ -271,7 +271,7 @@
* @param renderer
* @return this for chaining
*/
- public final AbstractChoice<T, E> setChoiceRenderer(IChoiceRenderer<E> renderer)
+ public final AbstractChoice<T, E> setChoiceRenderer(IChoiceRenderer<? super E> renderer)
{
if (renderer == null)
{
signature.asc
Description: OpenPGP digital signature
