[Seaside] Ending all callbacks/calls

John Thornborrow john at pinesoft.co.uk
Fri Apr 11 13:16:19 UTC 2008


I'm trying to add a "home" link/button to our application, which will
return the user to the page after login, whilst not leaving a trail of
calls/callbacks "hanging" in memory.

We are using several tasks for some parts of this application, so I'll
make a cut-down example.

  self call: TaskA

  self call: Component

Component>>renderContentOn: html
  html anchor callback: [ self session goHome ]; with: 'Home'

What I have tried so far, is subclassing the session, and task and
component with the following overrides:

Task/Component>>call: aComponentOrTask
  self session addCall: aComponentOrTask.
  ^super call: aComponentOrTask.

Task/Component>>answer: anObject.
  self session removeCall: self.
  ^super answer: anObject

Session>>addCall: aComponentOrTask
  calls add: aComponentOrTask

Session>>removeCall: aComponentOrTask
  calls remove: aComponentOrTask

  calls do: [ :each | each answer: nil ]

However, the process will only send #answer: to the first component due
to the continuations (I think.)

Does anyone know of a way to effectively reset the application state to
a specific callback?

Many thanks,
John Thornborrow

This email is from Pinesoft Limited. Its contents are confidential to the intended recipient(s) at the email address(es) to which it has been addressed. It may not be disclosed to or used by anyone other than the addressee(s), nor may it be copied in anyway. If received in error, please contact the sender, then delete it from your system. Although this email and attachments are believed to be free of virus, or any other defect which might affect any computer or IT system into which they are received and opened, it is the responsibility of the recipient to ensure that they are virus free and no responsibility is accepted by Pinesoft for any loss or damage arising in any way from receipt or use thereof. *******************************************************************************************************************************************

Pinesoft Limited are registered in England, Registered number: 2914825. Registered office: 266-268 High Street, Waltham Cross, Herts, EN8 7EA

More information about the seaside mailing list