Jason Hildebrand wrote:
> On Wed, 2004-02-25 at 13:37, Aaron Held wrote:
>> Personally I would be against subclassing a 'core' class such as
>> sessions, I would rather see some hooks for calling implementation
>> specific code.
> 
> Hi Aaron,
> 
> I'm curious as to your rationale for preferring hooks over
> using subclasses
> to do customization.  I keep my own copies of modified
> Webware source in CVS
> (merging is a painful operation), so I'm interested in making
> Webware more
> extensibile too, but I'm unsure of how we can best achieve this.
> 
> <storytime>
> Several years ago I wrote a framework in PHP which provided a lot of
> callbacks for customization.  On problem I ran into is that
> depending on
> how you need to customize, you might want to execute some code before,
> instead of, or after an event:
> 
>     preCommit()
>     commit()
>     postCommit()
> 
> This led to a proliferation of callback functions which
> achieved the goal of
> customizability, but had several shortcomings:
> 
>     - difficult to keep track of all the callback methods and
> their names
> 
>     - to maintain sanity, the three callbacks for an event (pre, the
>       event itself, and post) need to have the same parameters, which
>       means changing in three places
> 
>     - I ended up with a pile of 'bare' callback functions (not
>       attached to a class), for which it would be difficult for
> someone 
> else to understand
>       the interplay.
> 
> I eventually realized that using classes would clean a lot of this up.
> With classes you only need one method per event.  Any subclass which
> overrides this method can call the superclass' method (or not) when it
> needs to, thereby controlling whether the new functionality
> is executed
> before, instead of, or after the event.
> </storytime>
> 
> This is food for thought.  I'd like to hear more about what
> you envision for
> a good way to make Webware extensible -- maybe we can make
> some progress on
> this front.

I think I agree with you, Jason -- Webware should provide an easy hook to
swap in a subclass for a key class like Session and it shouldn't feel like a
hack.  The Mixin stuff feels like too much of a hack, and adding a bunch of
hooks at specific places in the code just adds clutter.

Perhaps a setting in Application.Config could specify classes to use in
place of the standard classes:

'CustomClasses': 
        {
                'Session': 'MyPackage.MyModule:MySession' ,
                'Request': 'MyPackage.MyModule:MyRequest'
        }

The syntax on the right side is the same as PSP syntax for specifying a base
class.  This would get translated at runtime into this:

from MyPackage.MyModule import MySession as Session
from MyPackage.MyModule import MyRequest as Request

Just a thought...

- Geoff


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Webware-discuss mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to