[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