[Seaside] Seaside Access/Activity Logging
Bart Gauquie
bart.gauquie at gmail.com
Tue Aug 24 10:43:36 UTC 2010
Hi Sven,
You don't have to to each callback manually. It goes automatically. Let me
try to explain a bit.
NotificationsAreaDecoration is a decoration you put around your root component.
NotificationsAreaDecoration>>renderContentOn: html
(self shouldRenderNotificationArea)
ifTrue: [self renderNotificationAreaOn: html].
[self next renderUndecoratedWithContext:
(NARenderContextDecorator decorated: html context using: self)]
on: NotificationsAreaDecorationRequest
do: [:aNotificationRequest|aNotificationRequest resume: self].
with:
[self next renderUndecoratedWithContext:
(NARenderContextDecorator decorated: html context using: self)]
starts decorating the html context (which will be used further for each
rendering object in the component tree) with NARenderContextDecorator
This one delegates all methods except:
NARenderContextDecorator>>callbacks
^NACallbackRegistryDecorator decorated: decorated callbacks using:
notificationsAreaDecoration.
which in turn decorates NACallbackRegistryDecorator, and then
NACallbackRegistryDecorator>>store: aCallback
^decorated store: (NACallbackDecorator decorated: aCallback using:
notificationsAreaDecoration)
which gives you:
NACallbackDecorator>>evaluateWithFieldValues: anOrderedCollection
^[notificationsAreaDecoration evaluateCapturingNotificationsOrErrors:
[decorated evaluateWithFieldValues: anOrderedCollection]]
on: NotificationsAreaDecorationRequest
do: [:request|request resume: notificationsAreaDecoration]
this evaluateWithFieldValues: will be called during a callback
now I'm using it to capture errors during callback and continue.
You could log each callback ... instead of my code.
I'm planning to extract this decorated thing into a separate package,
but did not find the time for it yet.
This notificationsArea is in use on:
BkbagGemstoneTesting:
BkbagGemstoneTesting-Presentation>>AnimalRoot>>initialize
super initialize.
animalOverview := AnimalOverview new.
self addDecoration:
(NotificationsAreaDecoration new
captureErrorOfType: MAValidationError;
yourself)
and in SunnysidePlanning2:
SunnysidePlanning2-View-Root>>SunnysidePlanning2WorkAreaView>>initialize
super initialize.
self addDecoration:
(NotificationsAreaDecoration new
captureNotificationOfType: SP2Notification;
captureErrorOfType: SP2Error;
errorInnerDivClass: 'error';
notificationInnerDivClass: 'success';
shouldRenderNotificationArea: false;
notificationAreaDivClass: 'span-18 last';
yourself).
self session announcer
when: SetAsMainView
do: [:ann | root := ann component].
root := KiesProductBacklogTask new.
Hope this makes it somewhat clearer.
Kind Regards,
Bart
On Tue, Aug 24, 2010 at 12:10 PM, Sven Van Caekenberghe <sven at beta9.be>wrote:
> Hi Bart,
>
> I am trying to understand your code but I am having some trouble finding my
> way ;-)
> Anyway, is "decorating your callbacks" a manual process that you have to do
> for each callbaclk ?
> If so, that would not really solve my problem...
>
> Thx for the reply!
>
> Sven
>
> On 24 Aug 2010, at 08:13, Bart Gauquie wrote:
>
> > Hi,
> >
> > What I've already 'hacked' in seaside is decorating all callbacks that
> can happen.
> > I've used the decorating to capture all errors during callbacks and
> collect them and show them on a notificationarea.
> > my code is at: http://www.squeaksource.com/NotificationsArea
> >
> > Maybe you can use the same trick to log all callbacks?
> >
> > Kind Regards,
> >
> > Bart
> >
> > On Mon, Aug 23, 2010 at 11:57 PM, Sven Van Caekenberghe <sven at beta9.be>
> wrote:
> > Hi All,
> >
> > In standard (non-heritic) web application frameworks, simple access
> logging is quite useful to find out how your app is used in the wild. The
> problem with Seaside is that most requests look pretty much the same and do
> not contain enough information for after the fact analysis (like
> http://localhost:8081/welcome?_s=0Sq2_xUpMPSWMOBg.R1&_k=DKeQJiyN2-ye2wCAdoesn't say we're on the configuration page).
> >
> > Has anyone already 'solved' this 'problem' with some clever hack ? Maybe
> some filter in the right place with some reflection magic ?
> >
> > I guess manually inserting log statements (like augmenting the URL) would
> be one way...
> >
> > Thx,
> >
> > Sven
> >
> > _______________________________________________
> > seaside mailing list
> > seaside at lists.squeakfoundation.org
> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >
> >
> >
> > --
> > imagination is more important than knowledge - Albert Einstein
> > Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> > Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> > The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> > However beautiful the strategy, you should occasionally look at the
> results. - Sir Winston Churchill
> > It's not enough that we do our best; sometimes we have to do what's
> required. - Sir Winston Churchill
> > _______________________________________________
> > seaside mailing list
> > seaside at lists.squeakfoundation.org
> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere -
Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing
is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert
Einstein
However beautiful the strategy, you should occasionally look at the results.
- Sir Winston Churchill
It's not enough that we do our best; sometimes we have to do what's
required. - Sir Winston Churchill
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20100824/5d270f08/attachment-0001.htm
More information about the seaside
mailing list