[Seaside] odd difference in behavior when using WADispatcher>>register:

Lawson English lenglish5 at cox.net
Fri Jun 29 17:39:35 UTC 2012


I got tired of having to manually either assign every application in 
seaside its own password if I wanted to partially test deployment, so I 
tried to move a specific set of applications inside an inner directory 
and then give the directory a password. This works. However, I thought 
I'd put the process in a loop, and it didn't work as I expected.

This works:

"++++++++++++++++++++++++++++++++++++++++++++++"

"NOTE: only do this after you have created the Dispatcher named 
'innerdispatcher' and have made 'browse' the default application"

defaultH := WADispatcher default.
innerDispatcher := defaultH handlerAt: 'innerdispatcher'.

tests := defaultH handlerAt: 'comet'.
defaultH unregister: 'comet'.
innerDispatcher register: tests at: 'comet'.

tests := defaultH handlerAt: 'config'.
defaultH unregister: 'config'.
innerDispatcher register: tests at: 'config'.

tests := defaultH handlerAt: 'examples'.
defaultH unregister: 'examples'.
innerDispatcher register: tests at: 'examples'.

tests := defaultH handlerAt: 'javascript'.
defaultH unregister: 'javascript'.
innerDispatcher register: tests at: 'javascript'.

tests := defaultH handlerAt: 'seaside'.
defaultH unregister: 'seaside'.
innerDispatcher register: tests at: 'seaside'.

tests := defaultH handlerAt: 'status'.
defaultH unregister: 'status'.
innerDispatcher register: tests at: 'status'.


tests := defaultH handlerAt: 'tests'.
defaultH unregister: 'tests'.
innerDispatcher register: tests at: 'tests'.

tests := defaultH handlerAt: 'tools'.
defaultH unregister: 'tools'.
innerDispatcher register: tests at: 'tools'.

tests := defaultH handlerAt: 'files'.
defaultH unregister: 'files'.
innerDispatcher register: tests at: 'files'.
"++++++++++++++++++++++++++++++++++++++++++++++"

This only partially works (some of the Dispatchers are left unmoved):



"++++++++++++++++++++++++++++++++++++++++++++++"
defaultH := WADispatcher default.
innerDispatcher := defaultH handlerAt: 'innerdispatcher'.

defaultH handlers keysAndValuesDo:
     [:key :value|
         ((key = 'innerdispatcher' or: [key = 'browse']) or: [key = 
'welcome']) ifFalse:
         [
             defaultH unregister: (defaultH handlerAt: key).
             innerDispatcher register: value at: key.
         ]
     ]
"++++++++++++++++++++++++++++++++++++++++++++++"


Any ideas?

-- 
Squeak from the very start (introduction to Squeak and Pharo Smalltalk for the (almost) complete and compleate beginner).
https://www.youtube.com/playlist?list=PL6601A198DF14788D&feature=view_all



More information about the seaside mailing list