Add a Jira Issue with patch attached...
Max Bowsher-5 wrote:
>
> 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)
> {
>
>
>
--
View this message in context:
http://www.nabble.com/Generics-bug-concerning-IChoiceRenderers-tp23962343p23963382.html
Sent from the Wicket - Dev mailing list archive at Nabble.com.