fixed On Mon, Dec 1, 2008 at 16:48, Johan Compagner <[EMAIL PROTECTED]> wrote:
> i am busy fixing it > but it is not as straightforward as just replacing it with Object[] > > > On Mon, Dec 1, 2008 at 16:38, jWeekend <[EMAIL PROTECTED]>wrote: > >> >> Yes, your suggestion should stop that runtime exception being thrown. A >> new >> (or more comprehensive) test for that method could confirm this. >> >> What I described addresses a not totally unrelated but slightly broader >> concern, and would not impact on any optimisations; it is not more >> important >> than fixing a known bug that is disturbing a user. >> >> Regards - Cemal >> http://www.jWeekend.co.uk http://jWeekend.co.uk >> >> >> >> Matej Knopp-2 wrote: >> > >> > The only problem right now is the cast to Component[]. The fix is >> > easy, just change it to Object[]. The optimization makes a lot of >> > sense and there is reason why it can't really be simple. >> > >> > -Matej >> > >> > On Mon, Dec 1, 2008 at 2:29 AM, jWeekend <[EMAIL PROTECTED]> >> > wrote: >> >> >> >> MarkupContainer's children field is declared as an Object and can refer >> >> to >> >> >> >> a ChildList - which is a List, hopefully (until it's genericised) of >> >> Components, >> >> an Object[] - again, hopefully of Components, >> >> a Component - ie a single child, or, even >> >> a ComponentSourceEntry - a bare-bones representation of only the >> >> "essentials" of a Component from which it can be reconstructed. >> >> >> >> I assume MarkupContainer's implementation was refactored (_from_ >> >> something >> >> much more straight-forward) as an optimisation, in particular related >> to >> >> serialisation, with the argument probably along the lines of: it is >> >> common >> >> for a MarkupContainer to have just a single child, so we don't want the >> >> luggage of a List in those cases etc ... >> >> >> >> All this can make MarkupContainer pretty fragile, easy to accidentally >> >> break. If the optimisation argument is really strong enough (I expect >> it >> >> must have been at the time and may still be), at the very least, all >> the >> >> messy operations on "children" could be encapsulated in a class >> (perhaps >> >> called FunkyChildren, possibly as an inner class if it necessarily >> needs >> >> access to its owning MarkupContainer instance's guts and is never used >> >> outside this context) that exposes only friendly methods like >> >> set(int index,Component child) and >> >> remove(Component child) >> >> etc ... >> >> >> >> Apart from simplifying MarkupContainer, the above design would also >> have >> >> the >> >> benefit of making it possible to address the problem in hand (with the >> >> illegal runtime array cast), mend what's broken and test this funky, >> >> edge-case(?) behaviour without having to interfere with >> MarkupContainer. >> >> And, if there's a simpler/better/more efficient FunkyChildren possible >> >> for >> >> 1.5 just plug in the new implementation. Importantly, as this an >> internal >> >> change (internal to MarkupContainer), there will be no API break >> (neither >> >> within Wicket nor in the public API). >> >> >> >> Regards - Cemal >> >> http://www.jWeekend.co.uk http://jWeekend.co.uk >> >> >> >> >> >> >> >> Matej Knopp-2 wrote: >> >>> >> >>> this >> >>> >> >>> sorted = Arrays.asList((Component[])children); >> >>> >> >>> doesn't look right. I think it should have been (Object[])children >> >>> although a type check would be appropriate. >> >>> >> >>> -Matej >> >>> >> >>> On Fri, Nov 28, 2008 at 7:30 PM, jWeekend < >> [EMAIL PROTECTED]> >> >>> wrote: >> >>>> >> >>>> Not quite. >> >>>> String[] bO = (String[])(new Object[]{"yes","we","can"}); >> >>>> compiles but fails at run time. >> >>>> >> >>>> Regards - Cemal >> >>>> http://www.jWeekend.co.uk http://jWeekend.co.uk >> >>>> >> >>>> >> >>>> >> >>>> Valentine2008 wrote: >> >>>>> >> >>>>> It will bring the compilation error when trying to cast arrays in >> >>>>> Java. >> >>>>> >> >>>>> So you mean it is a bug in Wicket? >> >>>>> >> >>>>> >> >>>>> Timo Rantalaiho wrote: >> >>>>>> >> >>>>>> On Thu, 27 Nov 2008, Valentine2008 wrote: >> >>>>>>> java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast >> to >> >>>>>>> [Lorg.apache >> >>>>>>> .wicket.Component; >> >>>>>>> at >> >>>>>>> >> org.apache.wicket.MarkupContainer.iterator(MarkupContainer.java:478) >> >>>>>>> ......... >> >>>>>>> >> >>>>>>> The code on line 478 of MarkupContainer.java is: >> >>>>>>> sorted = Arrays.asList((Component[])children); >> >>>>>>> >> >>>>>>> Is it a bug of Wicket? >> >>>>>> >> >>>>>> No, I think it's a limitation of Java. You cannnot cast >> >>>>>> arrays. >> >>>>>> >> >>>>>> Best wishes, >> >>>>>> Timo >> >>>>>> >> >>>>>> -- >> >>>>>> Timo Rantalaiho >> >>>>>> Reaktor Innovations Oy <URL: http://www.ri.fi/ > >> >>>>>> >> >>>>>> >> --------------------------------------------------------------------- >> >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>> >> >>>>> >> >>>> >> >>>> -- >> >>>> View this message in context: >> >>>> >> http://www.nabble.com/Bug-of-Wicket-1.3.4-when-iterate-the-form-using-iterator%28Comparator%29--tp20723903p20738179.html >> >>>> Sent from the Wicket - User mailing list archive at Nabble.com. >> >>>> >> >>>> >> >>>> --------------------------------------------------------------------- >> >>>> 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] >> >>> >> >>> >> >>> >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/Bug-of-Wicket-1.3.4-when-iterate-the-form-using-iterator%28Comparator%29--tp20723903p20764684.html >> >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> 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] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Bug-of-Wicket-1.3.4-when-iterate-the-form-using-iterator%28Comparator%29--tp20723903p20774302.html >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >