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
> >>> <igor.vaynb...@gmail.com> wrote:
> >>>> see WICKET-2126
> >>>>
> >>>> -igor
> >>>>
> >>>> On Mon, Mar 2, 2009 at 12:19 PM, James Carman
> >>>> <jcar...@carmanconsulting.com> 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 <br...@pappin.ca>
> >>>>> 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 <br...@pappin.ca>
> >>>>>>> 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
> >>>>>>>>> <br...@pappin.ca> 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
> >>>>>>>>>>> <adrian...@gmail.com> 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
> >>>>>>>>>>>>> <jer...@wickettraining.com> 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 <br...@pappin.ca
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 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: users-unsubscr...@wicket.apache.org
> >>>>>>>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>> To unsubscribe, e-mail: users-
> >>>>>>>>>>>>>>> unsubscr...@wicket.apache.org
> >>>>>>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>> ? extends
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>> To unsubscribe, e-mail: users- 
> >>>>>>>>>>>>> unsubscr...@wicket.apache.org
> >>>>>>>>>>>>> For additional commands, e-mail: users-
> >>>>>>>>>>>>> h...@wicket.apache.org
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>>>>>>> For additional commands, e-mail: users- 
> >>>>>>>>>>> h...@wicket.apache.org
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>> es, the choice
> >>>>>>>>>
> >>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>>
> >>>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>> For additional commands, e-mail: users-h...@wicket.apache.org
> >>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> For additional commands, e-mail: users-h...@wicket.apache.org
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to