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>
