[Seaside] Seaside and urls

Philippe Marschall philippe.marschall at gmail.com
Wed Nov 13 21:16:32 UTC 2013


On Wed, Nov 13, 2013 at 4:59 PM, Esteban Lorenzano <estebanlm at gmail.com> wrote:
> I'm using Seaside-REST for that (even it is not its purpose), but I needed to hack it a bit (bah, not a BIT really...)
>
> See:
>
> in  WARestfulFilter subclass: #EveRestFilter:
>
> EveRestFilter >>#shoppingList
>         <get>
>         <path: 'shopping-list'>
>
>         self continueWithRoot: [ :root |
>                 root startOn: EveUNOPSShoppingListPanel new ].
>
> EveRestFilter >>#continueWithRoot: aBlock
>         "Continues the execution of the application.
>          I will pass aBlock to the root class of app, which I assume is a REApplication.
>          Otherwise, this will fail"
>         | requestContext application session rootComponent |
>
>         requestContext := self requestContext.
>         application := requestContext application.
>         session := self obtainSessionWithApplication: application context: requestContext.
>
>         requestContext
>                 push: session
>                 during: [
>                         rootComponent := requestContext rootComponentIfAbsent: [ nil ].
>                         rootComponent ifNil: [
>                                 rootComponent := (application preferenceAt: #rootClass) new.
>                                 requestContext rootComponent: rootComponent ].
>                         rootComponent do: aBlock.
>                         self next handleFiltered: requestContext ].
>
> EveRestFilter >>#obtainSessionWithApplication: application context: requestContext
>         | sessionKey session |
>
>         sessionKey  := application trackingStrategy keyFromContext: requestContext.
>         session := sessionKey ifNotNil: [
>                 application cache
>                         at: sessionKey
>                         ifAbsent: [ nil] ].
>
>         session  ifNil: [
>                 session := application newSession.
>                 application register: session ].
>
>         ^ session
>
>
> then in the main component:
>
> EveMainComponent>>startOn: aComponent
>         contentComponent show: aComponent
>
>
>
> is probably not the best way to do it, but is the easiest way I found, and it works :)

In Seaside 3.1 there is WARestfulComponentFilter >> #startSessionWithRoot:

Cheers
Philippe


More information about the seaside mailing list