Thanks Jason, I like that approach very much.
--- Jason Hildebrand <[EMAIL PROTECTED]> wrote: > On Tue, 2003-02-18 at 10:44, Kevin Dahlhausen wrote: > > > I've been giving some thought to the problem of Middlekit objects > in > > sessions and wanted to get some feedback. Two ways to > > > Other thoughts? > > Hi Kevin, > > In response to your question, I've documented my approach on the Wiki > at > http://webware.colorstudy.net/twiki/bin/view/Webware/MiddleKitAndWebKit > > My solution to this problem is to implement an alternate > encoder/decoder > for WebKit.SessionStore which recognizes Middle objects, and simply > pickles a reference to each object (similar to your approach #1, but > without having proxy objects). When reading in sessions from disk, > the > decoder finds the references and fetches the full Middle objects from > the store. > > This is transparent to user code -- you can simply put the Middle > objects in the session, and it works. > > Two assumptions: > 1. you have a single global store for your application (because the > decoder must fetch the object from the store) > > 2. you are only putting objects in the session which have been added > to > the store (i.e. their serial numbers are > zero). > > I _do_ have a way of putting non-saved objects in sessions, but it's > pretty hackish (it's worked for me so far, but it may have some > gotchas). Basically, I add the following code to > MiddleKit/Run/MiddleObject.py. > > # Enables pickling of MiddleObjects which haven't been added > # to the store > def __getstate__(self): > return self.allAttrs(includeUnderscoresInKeys=0) > > def __setstate__(self, attrs): > self.__init__() > for key, value in attrs.items(): > setMethodName = 'set' + key[0].upper() + key[1:] > setter = getattr(self.__class__, setMethodName, '_' + > key) > if isinstance(setter, StringType): > setattr(self, setter, value) > else: > # a method > setter(self, value) > > > Hope this helps, > > -- > Jason D. Hildebrand > [EMAIL PROTECTED] > ===== ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kevin Dahlhausen 'Do' or 'do not.' There is no 'Try.' http://members.nccw.net/kdahlhaus/ -Yoda __________________________________________________ Do you Yahoo!? Yahoo! Shopping - Send Flowers for Valentine's Day http://shopping.yahoo.com ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss
