[Seaside] Registering a WARequestHandler
Jupiter Jones
jupiter.jones at mail.com
Wed Feb 1 11:33:07 UTC 2017
Hi Johan,
Thanks for the reply.
I’m working on getting Pier working in 3.2 and the PREditCommand registers it’s handler like:
updateRoot: aHtmlRoot
| handler |
super updateRoot: aHtmlRoot.
PREditorScripts default updateRoot: aHtmlRoot.
handler := PREditorHandler on: self context copy sanitize.
aHtmlRoot javascript
add:
'EditorEnh.linkOptionUrl='
,
(WACurrentRequestContext value registry
register: handler;
urlFor: handler) asJavascript
I found a similar thing in MAFileModel, and in the registry test, so I thought it was a legitimate way of doing things :)
What’s the preferred way of achieving this?
Thanks again.
J
> On 1 Feb 2017, at 7:09 pm, Johan Brichau <johan at inceptive.be> wrote:
>
> If you need to ‘mess’ with this part of the code to achieve a simple registration of handlers, I think there is something wrong :)
>
> Before taking a look, I want to understand what is going wrong and why you are doing this.
> Why are you registering a handler in the updateRoot: method?
>
> Johan
>
>> On 31 Jan 2017, at 22:37, Udo Schneider <udo.schneider at homeaddress.de> wrote:
>>
>> 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
>>>
>>
>>
>> _______________________________________________
>> 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
More information about the seaside
mailing list