After deleting some heated, unsent messages (never post when angry, a
very wise blogger told me), taking some time thinking about other
stuff, I see that I misinterpreted your message. I'm sorry I misread
you, I'm sorry I accused you of mal-intent. My sincerest apologies,
the whiskey is on me with our next meeting (if I feed you enough, you
might even forget it :-).

That said, I'm still not feeling comfortable removing final from all
onComponentTag/onComponentBody methods.

Especially the onComponentBody method can lead to servlet style
programming which we shouldn't encourage. Just like
Component#setModelValue() or Component#getModelValue(). These are very
handy in specific cases where we want to do more basic processing, but
they do cloud the API and point new users towards a push way of
programming instead of the preferred pull model (this is not a call
for removing get/setModelValue).

I see that sometimes this is necessary (performance, memory footprint)
to override onComponentBody, but I hope we can find a better way of
achieving this goal, though it may not exist.

A current spot where we already removed final from onComponentTag and
onComponentBody is Panel where it is necessary to call super in both
methods. I am not sure when to call super.onComponentBody(): should it
come first or last? The only way I can be sure is to try it. But then
if the implementation of Panel changes, will I have to modify the call
sequence? Will we document such changes in our release notes? It is
something easily overlooked.

Martijn

--
<a href="http://www.thebeststuffintheworld.com/vote_for/wicket";>Vote</a>
for <a href="http://www.thebeststuffintheworld.com/stuff/wicket";>Wicket</a>
at the <a href="http://www.thebeststuffintheworld.com/";>Best Stuff in
the World!</a>

Reply via email to