[Seaside] Registering a WARequestHandler
Udo Schneider
udo.schneider at homeaddress.de
Tue Jan 31 21:37:33 UTC 2017
I hit a similar problem when dealing with Files in Magritte/Seaside. I
kind of (re-)implemented WAApplication>>#urlFor: in my own component
based on WARegistry>>#urlFor: . Not quite sure if the code is "legal" -
but it works:
My code in your example might look like this (not tested):
updateRoot: anHtmlRoot
| handler |
super updateRoot: anHtmlRoot.
handler := MySubclassOfWARequestHandler on: self.
registry := self requestContext registry.
url := registry url.
key := registry register: handler.
registry trackingStrategy addKey: key toUrl: url.
Hope this helps.
CU,
Udo
On 31/01/17 21:47, Jupiter Jones wrote:
> I’m having an issue registering a handler in Seaside 3.2 that I’m hoping someone will recognise.
>
> In the test "WARegistryTest>>testUrlFor” a handler is registered with an instance of WARegistry by simply creating a WARegistry with "WARegistry new".
>
> In my app I’m doing something like this:
>
> updateRoot: anHtmlRoot
> | handler |
> super updateRoot: anHtmlRoot.
> handler := MySubclassOfWARequestHandler on: self.
> url := WACurrentRequestContext value registry
> register: handler;
> urlFor: handler.
>
> …however "WACurrentRequestContext value registry” answers my WAApplication instance, which overrides #register: from WARegistry for registering sessions - not handlers.
>
> So…
>
> I tried copying the way WARegistry>>register: does the registration into my method:
>
> updateRoot: anHtmlRoot
> | handler |
> super updateRoot: anHtmlRoot.
> handler := MySubclassOfWARequestHandler on: self.
> anHtmlRoot application cache
> store:
> (handler
> setParent: anHtmlRoot application;
> yourself).
> url := WACurrentRequestContext value registry urlFor: handler.
>
> Which appears to store the handler in the application cache (instance of WABulkReapingCache).
>
> However, when I call "WACurrentRequestContext value registry urlFor: handler” it ends up calling “WABulkReapingCache(WAExpiringCache)>>keyAtValue:ifAbsent:” method which calls #shouldNotImplement
>
> Can anyone see what I’ve done wrong, or know how to register an application handler?
>
> Thanks in advance :)
>
> Cheers,
>
> J
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
More information about the seaside
mailing list