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.

Reply via email to