So, do we need to make it IModel<? extends List<? extends T>>?  That
would allow what Oliver was talking about.

On Wed, Mar 4, 2009 at 4:14 PM, Brill Pappin <[email protected]> wrote:
> See the sample test in  ticket: WICKET-2137
>
> https://issues.apache.org/jira/browse/WICKET-2137
>
> - brill
>
> On 4-Mar-09, at 11:08 AM, Johannes Schneider wrote:
>
>> On Wed, 2009-03-04 at 10:04 -0500, Brill Pappin wrote:
>>>
>>> I actually wasn't saying they were the same.
>>> What I said (meant) was that:
>>>
>>> a) don't lock down
>>
>> Locking down means *removing* the wildcard. Adding the wildcard *widens*
>> the collection.
>>
>> To be clear:
>> Wildcard --> it fits for everybody
>> No wildcard --> it fits only for some special cases (maybe yours)
>>
>>> b) I prefer the explicit form rather than the "Any of type" form. i.e.
>>> <List<T>> rather than <List<? extends T>>.
>>
>> They mean something completely different. I understand that you prefer
>> the shorter version. Many do. But it stays wrong...
>>
>> If the constructor accepts "List<Number>", everybody *has* to give you
>> exactly a List<Number>.
>>
>> List<Number> n = new List<Number>;
>>
>>
>> If the constructor accepts the widened type, you can add all those
>> lists...
>>
>> List<? extends Number> n = new List<Number>;
>> List<? extends Number> n = new List<Integer>;
>> List<? extends Number> n = new List<Double>;
>>
>>
>> If you don't believe me, take a look at GlazedLists. Compare version 1.7
>> and version 1.8. They changed exactly that thing (a non backward
>> compatible change!). They made exactly the same fault...
>>
>>
>> Regards,
>>
>> Johannes
>>
>>>
>>> - Brill
>>>
>>> On 4-Mar-09, at 6:26 AM, Johannes Schneider wrote:
>>>
>>>> On Tue, 2009-03-03 at 16:02 -0500, Brill Pappin wrote:
>>>>>
>>>>> I'd hate to be
>>>>> prevented from doing so simply because someone wanted to lock down an
>>>>> API that didn't really need locking down.
>>>>
>>>> You are wrong. *Widening* a collection is the exact opposite of
>>>> "locking
>>>> down".
>>>> If you want to have some fancy (read "hacky") write access to the
>>>> model
>>>> you are free to simply cast...
>>>> That is the right choice here. You know that you have a special
>>>> model in
>>>> there, so cast it.
>>>>
>>>> But the "common" case is, that you don't know for sure whether the
>>>> model
>>>> supports adding of choices or not.
>>>>
>>>>
>>>> If you don't believe me, take a look at JComboBox.
>>>> javax.swing.JComboBox#getModel returns a *read only* view of the
>>>> model.
>>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Johannes
>>>>
>>>>
>>>>> I think the syntax doesn't really mean read only, and if the wicket
>>>>> developers really want it to be read only, wrapping the list would be
>>>>> the way to go.
>>>>>
>>>>> I'm for the plain old <List<T>> because its simple and explicit...
>>>>> <List<? extends T>> would be my next choice because it widens the
>>>>> scope.
>>>>>
>>>>> - Brill
>>>>>
>>>>> On 2-Mar-09, at 3:44 PM, James Carman wrote:
>>>>>
>>>>>> Aren't both the "choices" model in DDC and the actual model of
>>>>>> ListView supposed to be considered read-only (as far as the
>>>>>> component
>>>>>> is concerned)?  The DDC and ListView don't need to be able to alter
>>>>>> those models anyway, right?  Perhaps my experience is just too
>>>>>> limited, but I don't think I've ever tried to do either one of your
>>>>>> usecases (I always consider them read-only).
>>>>>>
>>>>>>
>>>>>> On Mon, Mar 2, 2009 at 3:24 PM, Igor Vaynberg
>>>>>> <[email protected]> wrote:
>>>>>>>
>>>>>>> see WICKET-2126
>>>>>>>
>>>>>>> -igor
>>>>>>>
>>>>>>> On Mon, Mar 2, 2009 at 12:19 PM, James Carman
>>>>>>> <[email protected]> wrote:
>>>>>>>>
>>>>>>>> I vote -0.99 on this (non-binding of course).  I'd vote +1 to
>>>>>>>> making
>>>>>>>> ListView accept List<? extends T> rather than making DDC less
>>>>>>>> flexible.
>>>>>>>>
>>>>>>>> On Mon, Mar 2, 2009 at 3:11 PM, Brill Pappin <[email protected]>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Ok, as suggested, here is the thread, and the first vote.
>>>>>>>>>
>>>>>>>>> +1
>>>>>>>>> for making the generic definition the same for all list type
>>>>>>>>> components.
>>>>>>>>>
>>>>>>>>> FYI -  you can also "vote" in the issue I just created at (which
>>>>>>>>> might
>>>>>>>>> actually be a better place to vote):
>>>>>>>>> https://issues.apache.org/jira/browse/WICKET-2137
>>>>>>>>>
>>>>>>>>> - Brill
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 28-Feb-09, at 5:18 PM, Jeremy Thomerson wrote:
>>>>>>>>>
>>>>>>>>>> Perhaps start a vote thread, with the subject something like:
>>>>>>>>>> "VOTE:
>>>>>>>>>> Remove
>>>>>>>>>> ? extends from constructor of DropDownChoice".
>>>>>>>>>>
>>>>>>>>>> I'd be +1 non-binding
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Jeremy Thomerson
>>>>>>>>>> http://www.wickettraining.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sat, Feb 28, 2009 at 3:33 PM, Brill Pappin <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I'm of the don't widen it camp anyway :)
>>>>>>>>>>>
>>>>>>>>>>> So how do I go about gathering support for having the
>>>>>>>>>>> DropDownChoice work
>>>>>>>>>>> with the models the way everything else does?
>>>>>>>>>>>
>>>>>>>>>>> - Brill
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 28-Feb-09, at 1:42 AM, Igor Vaynberg wrote:
>>>>>>>>>>>
>>>>>>>>>>> yes, the choice was intentional. personally i do not care if it
>>>>>>>>>>> is <T>
>>>>>>>>>>>>
>>>>>>>>>>>> all the way, some users complained so we widened it on the
>>>>>>>>>>>> choices
>>>>>>>>>>>> model, we cannot widen it on the main model.
>>>>>>>>>>>>
>>>>>>>>>>>> -igor
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, Feb 27, 2009 at 8:51 PM, Brill Pappin
>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> I see... but this would i think because Bar "is a" Foo:
>>>>>>>>>>>>>
>>>>>>>>>>>>> class Bar exends Foo {}
>>>>>>>>>>>>> List<? extends Foo> list = ...
>>>>>>>>>>>>> list.add(new Bar());
>>>>>>>>>>>>>
>>>>>>>>>>>>> Anyway, what your saying is that the generics choice was
>>>>>>>>>>>>> intentional?
>>>>>>>>>>>>>
>>>>>>>>>>>>> - Brill
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 27-Feb-09, at 3:19 PM, Igor Vaynberg wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> list<? extends string> stings=...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> strings.add("asd"); <== wont compile
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -igor
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Feb 27, 2009 at 11:13 AM, Adriano dos Santos
>>>>>>>>>>>>>> Fernandes
>>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> What do you mean with "read only" here?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Adriano
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Igor Vaynberg escreveu:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> <? extends Foo> collections are read only, it would be too
>>>>>>>>>>>>>>>> inconvenient to make the model collection read only :)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -igor
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Feb 26, 2009 at 8:34 PM, Jeremy Thomerson
>>>>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> This is what I was commenting on last week on the list
>>>>>>>>>>>>>>>>> (or earlier
>>>>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>> week).  One expects List<? extends Foo> while the other
>>>>>>>>>>>>>>>>> expects
>>>>>>>>>>>>>>>>> List<Foo>.
>>>>>>>>>>>>>>>>> I'm not fully convinced yet that the "? extends" is the
>>>>>>>>>>>>>>>>> better
>>>>>>>>>>>>>>>>> option.
>>>>>>>>>>>>>>>>> Either way, I think they should be the same.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Jeremy Thomerson
>>>>>>>>>>>>>>>>> http://www.wickettraining.com
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Thu, Feb 26, 2009 at 8:27 PM, Brill Pappin
>>>>>>>>>>>>>>>>> <[email protected]
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Roughly what I'm doing is:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> class TypeA{}
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> class TypeAModel extends LoadableDetachableModel<
>>>>>>>>>>>>>>>>>> List<TypeA>> {
>>>>>>>>>>>>>>>>>> public List<TypeA> load(){
>>>>>>>>>>>>>>>>>>        ... do the load ...
>>>>>>>>>>>>>>>>>>        return ...
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> TypeAModel model = new TypeAModel();
>>>>>>>>>>>>>>>>>> DropDownChoice< TypeA> ddc = new
>>>>>>>>>>>>>>>>>> DropDownChoice<TypeA>("id", model
>>>>>>>>>>>>>>>>>> );
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> which gets complained about... in this case the generic
>>>>>>>>>>>>>>>>>> def is
>>>>>>>>>>>>>>>>>> DropDownChoice<List<? extends T>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I think the problem is that the generic def of the class
>>>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>>> actually
>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>> DropDownChoice<List<T>> because you are already
>>>>>>>>>>>>>>>>>> identifying the
>>>>>>>>>>>>>>>>>> type
>>>>>>>>>>>>>>>>>> when
>>>>>>>>>>>>>>>>>> you create a new instance.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Now... my generics are a bit hazy at this level, because
>>>>>>>>>>>>>>>>>> I can
>>>>>>>>>>>>>>>>>> understand
>>>>>>>>>>>>>>>>>> why it was done that way... does anyone with more
>>>>>>>>>>>>>>>>>> generics
>>>>>>>>>>>>>>>>>> experience
>>>>>>>>>>>>>>>>>> know
>>>>>>>>>>>>>>>>>> what it should be? Is this a bug that needs filing?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> - Brill
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 26-Feb-09, at 6:03 PM, Kaspar Fischer wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 26.02.2009, at 22:52, Brill Pappin wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> For some reason the DropDownChoice component doesn't
>>>>>>>>>>>>>>>>>>> have the
>>>>>>>>>>>>>>>>>>> same
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> generics as ListView and it will not accept a model
>>>>>>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>>>>>> listview
>>>>>>>>>>>>>>>>>>>> will,
>>>>>>>>>>>>>>>>>>>> despite its saying that it will accept an IModel.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Is anyone else having that sort of trouble with
>>>>>>>>>>>>>>>>>>>> DropDownChoice?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> - Brill
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Can you give us more information on what exactly is not
>>>>>>>>>>>>>>>>>>> working
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> you?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> DropDownChoice indeed does accept a model, see for
>>>>>>>>>>>>>>>>>>> instance the
>>>>>>>>>>>>>>>>>>> example
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> the class description at
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/form/DropDownChoice.html
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> This works for me.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Kaspar
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> <!-- HTML: -->
>>>>>>>>>>>>>>>>>>> <select wicket:id="site">
>>>>>>>>>>>>>>>>>>>       <option>site 1</option>
>>>>>>>>>>>>>>>>>>>       <option>site 2</option>
>>>>>>>>>>>>>>>>>>> </select>
>>>>>>>>>>>>>>>>>>> <ul>
>>>>>>>>>>>>>>>>>>> <li wicket:id="site2"><wicket:container
>>>>>>>>>>>>>>>>>>> wicket:id="sitename"/></li>
>>>>>>>>>>>>>>>>>>> </ul>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> // Code
>>>>>>>>>>>>>>>>>>> List SITES = Arrays.asList(new String[] {
>>>>>>>>>>>>>>>>>>> "The Server Side", "Java Lobby", "Java.Net"
>>>>>>>>>>>>>>>>>>> });
>>>>>>>>>>>>>>>>>>> form.add(new DropDownChoice("site", SITES));
>>>>>>>>>>>>>>>>>>> form.add(new ListView("site2", SITES)
>>>>>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>>>>>> @Override
>>>>>>>>>>>>>>>>>>> protected void populateItem(ListItem item)
>>>>>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>>>>>> item.add(new Label("sitename", item.getModel()));
>>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>> });
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: users-
>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ? extends
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>> To unsubscribe, e-mail: users-
>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>> For additional commands, e-mail: users-
>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>>>>>>> For additional commands, e-mail: users-
>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>> es, the choice
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to