I can see why behaviors were introduced. A simple example: a factory
method creates a link. In my subclass I want the same link with the same
onClick behavior but I also want "hello" to be outputted to System.out.
out... (which isn't saying it's impossible).
> decorators only work with interfaces, component class is not. This is
> part of the reason why we have behaviors
>
> -igor
>
> On 6/12/08, Matthijs Wensveen <
m.wensveen@...> wrote:
>
>> Some useful design patterns like Decorator don't work with final
>> methods. Wicket components sometimes have overridable factory methods
>> for child components. The decorator pattern could be very useful here,
>> because you'd be able to decorate the original component with some extra
>> functionality (Link.onClick for example). Unfortunately this doesn't
>> work because some methods are final.
>>
>> Matthijs
>>
>> Igor Vaynberg wrote:
>>
>>> i mean generally, for methods, fields, and func args :) most of this
>>> stuff can stay final, but people dont bother doing it because its
>>> extra typing.
>>>
>>> -igor
>>>
>>> On Thu, Jun 12, 2008 at 8:38 AM, James Carman
>>> <
james@...> wrote:
>>>
>>>
>>>> You mean like C++?
>>>>
>>>> On Thu, Jun 12, 2008 at 11:35 AM, Igor Vaynberg <
igor.vaynberg@...>
>>>> wrote:
>>>>
>>>>
>>>>> indeed. i wouldnt mind if final was the default in java :)
>>>>>
>>>>> -igor
>>>>>
>>>>> On Thu, Jun 12, 2008 at 8:18 AM, Martijn Dashorst
>>>>> <
martijn.dashorst@...> wrote:
>>>>>
>>>>>
>>>>>> Without the use of final wicket would not have made it this far.
>>>>>>
>>>>>> Martijn
>>>>>>
>>>>>> On Thu, Jun 12, 2008 at 5:08 PM, Brill Pappin <
brill@...> wrote:
>>>>>>
>>>>>>
>>>>>>> I understand the reasoning, however I think "best practice" can be
>>>>>>> debated.
>>>>>>> To use your example Swing allows the user to override quite a bit, and
>>>>>>> it
>>>>>>> doesn't make any (or very few) assumptions on what should and should
>>>>>>> not be
>>>>>>> done.
>>>>>>>
>>>>>>> I don't like API's that assume I'm an idiot and prevent me from
>>>>>>> manipulating
>>>>>>> them how I see fit. If I cause a bug that I have to deal with, thats
>>>>>>> *my*
>>>>>>> problem to resolve.
>>>>>>>
>>>>>>> In my book (and I'm not the only one) excessive use of final is an
>>>>>>> anti-pattern.
>>>>>>>
>>>>>>> - Brill Pappin
>>>>>>>
>>>>>>> On 12-Jun-08, at 10:01 AM, cowwoc wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Brill,
>>>>>>>>
>>>>>>>> This is actually an API "best practice". Classes fall into two
>>>>>>>> categories:
>>>>>>>> ones designed for subclassing, and ones designed to be final. The
>>>>>>>> same
>>>>>>>> goes
>>>>>>>> for methods. Swing is full of examples of what goes wrong when people
>>>>>>>> override methods in classes that haven't been designed with
>>>>>>>> subclassing in
>>>>>>>> mind.
>>>>>>>>
>>>>>>>> Gili
>>>>>>>>
>>>>>>>>
>>>>>>>> Brill Pappin wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> on removing the finals
>>>>>>>>>
>>>>>>>>> The final members are the worst thing I've had to deal with in
>>>>>>>>> Wicket
>>>>>>>>> so far.
>>>>>>>>> Although I understand that there may be a reason for them, they are
>>>>>>>>> more a hinderance than anything else and seem to be trying to
>>>>>>>>> "protect
>>>>>>>>> users from themselves".
>>>>>>>>>
>>>>>>>>> - Brill Pappin
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 12-Jun-08, at 1:03 AM, cowwoc wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Have you considered moving from subclassing to composition in
>>>>>>>>>> Wicket
>>>>>>>>>> using
>>>>>>>>>> Callable<T>?
>>>>>>>>>>
>>>>>>>>>> Currently it is quite common for developers to subclass a component
>>>>>>>>>> in order
>>>>>>>>>> to override isVisible() and other properties. I am proposing that
>>>>>>>>>> instead
>>>>>>>>>> the component classes become final and properties may only be set
>>>>>>>>>> using
>>>>>>>>>> setter methods. The setter methods would take Callable<T> instead
>>>>>>>>>> of
>>>>>>>>>> T, so
>>>>>>>>>> for example setVisible(boolean) would become
>>>>>>>>>> setVisible(Callable<Boolean>)
>>>>>>>>>>
>>>>>>>>>> The benefit of this approach is that you could introduce static
>>>>>>>>>> factory
>>>>>>>>>> methods to the Wicket components which would make them much easier
>>>>>>>>>> to use in
>>>>>>>>>> their Generic form. You could then introduce various helper classes
>>>>>>>>>> to
>>>>>>>>>> create Callable<T> for constant values, such as
>>>>>>>>>> Callable.valueOf(true) would
>>>>>>>>>> return a Callable<Boolean> that always returns true.
>>>>>>>>>> --
>>>>>>>>>> View this message in context:
>>>>>>>>>>
>>>>>>>>>>
http://www.nabble.com/users%2C-please-give-us-your-opinion%3A-what-is-your-take-on-generics-with-Wicket-tp17589984p17792488.html>>>>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>>>>>>> For additional commands, e-mail:
users-help@...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>>>>>> For additional commands, e-mail:
users-help@...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> View this message in context:
>>>>>>>>
http://www.nabble.com/users%2C-please-give-us-your-opinion%3A-what-is-your-take-on-generics-with-Wicket-tp17589984p17800710.html>>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>>>>> For additional commands, e-mail:
users-help@...
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>>>> For additional commands, e-mail:
users-help@...
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Become a Wicket expert, learn from the best:
http://wicketinaction.com>>>>>> Apache Wicket 1.3.3 is released
>>>>>> Get it now:
http://www.apache.org/dyn/closer.cgi/wicket/1.3.3>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>>> For additional commands, e-mail:
users-help@...
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>>> For additional commands, e-mail:
users-help@...
>>>>>
>>>>>
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>>> For additional commands, e-mail:
users-help@...
>>>>
>>>>
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
users-unsubscribe@...
>>> For additional commands, e-mail:
users-help@...
>>>
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
users-unsubscribe@...
>> For additional commands, e-mail:
users-help@...
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
users-unsubscribe@...
> For additional commands, e-mail:
users-help@...
>
>