Been testing this stuff and my object is like this: object ReportAddress extends SessionVar[String]("") { def cleanUp() = { println(S.session) S.session.map { sess => println("Session ID: " + sess.uniqueId) println("REM ADDRESS: " + this.is) val tempDir = ... // Remove the temporary dir for this session. tempDir.destroy() } }
registerCleanupFunc(cleanUp _) } println(S.session) always gives me "Empty" Any idea what could cause this? On Feb 3, 10:38 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote: > On Tue, Feb 3, 2009 at 2:13 PM, Alli <allilis...@gmail.com> wrote: > > > Makes a lot of sense, thanks David. > > > Always amazes me how good and clean the design of lift is. > > Flattery will get you a lot... :-) > > > > > > > On Feb 3, 9:49 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote: > > > On Tue, Feb 3, 2009 at 1:06 PM, Alli <allilis...@gmail.com> wrote: > > > > > Evening, > > > > > During the lifetime of a session, the session may have uploaded bunch > > > > of files and these need to be able to be destroyed/unlinked when a > > > > session ends. > > > > > When user uploads a file it's parent dir is determined by the session > > > > unique ID and the remote address of the uploader. The name is e.g. / > > > > tmp/sha1 hash of session id and remote address'. This means in order > > > > to determine what to destroy I need to know what remote address the > > > > session belongs to. I am setting that when uploading a file has been > > > > uploaded successfully. > > > > > In Boot.scala I want to do something like: > > > > // Set session handler. > > > > LiftSession.onAboutToShutdownSession = List[LiftSession => Unit]( > > > > session => { > > > > var sessId = session.uniqueId > > > > val remoteIp = session.get("remoteAddress") > > > > val myTempDir = new TempDirWeb(sessId, remoteIp) > > > > myTempDir.unlinkall() > > > > }) > > > > > Problem with this is that the LiftSession.get[T]() method is package > > > > private (liftweb). I can think of some other scenarios where one would > > > > need access to the session variables before destroying the session. > > > > > Does this make sense or is my design just plain wrong? :). > > > > get is typesafe, so exposing it would make it not type safe. It's always > > > accessed via SessionVars. > > > > You can do something like: > > > > object ReportAddress extends SessionVar[String]("") { > > > def cleanUp() { > > > S.session.map{ sess => > > > val td = new TempDirWeb(sess.uniqueId, this.is) > > > td.unlinkall() > > > } > > > } > > > > registerCleanupFunc(cleanUp _) > > > > } > > > > Each SessionVar (and RequestVar) has a cleanup func that will be called > > as > > > the Var is going away. > > > > > Cheers, > > > > Alfred > > > > -- > > > Lift, the simply functional web frameworkhttp://liftweb.net > > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > > > Follow me:http://twitter.com/dpp > > > Git some:http://github.com/dpp > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Git some:http://github.com/dpp --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---