// // Copyright (c) 2008, Brian Frank and Andy Frank // Licensed under the Academic Free License version 3.0 // // History: // 19 Mar 08 Brian Frank Creation // ** ** WebSession provides a name/value map associated with a specific ** browser "connection" to the web server. Any values stored in a ** WebSession must be both immutable and serializable. Get the ** current WebSession via `WebReq.session`. ** ** See [pod doc]`pod-doc#sessions`. ** abstract class WebSession { ** ** Get the unique id used to identify this session. ** abstract Str id() ** ** Return `id`. ** override Str toStr() { id } ** ** Iterate the key/value pairs ** abstract Void each(|Obj?,Str| f) ** ** Get session value or return def if not defined. ** @Operator abstract Obj? get(Str name, Obj? def := null) ** ** Set a session value which must be immutable and serializable. ** @Operator abstract Void set(Str name, Obj? val) ** ** Remove a session key ** abstract Void remove(Str name) ** ** Application name/value pairs which are persisted ** between HTTP requests. The values stored in this ** map must be serializable. ** @Deprecated { msg = "Use get, set, remove, each" } abstract Str:Obj? map() // TODO ** ** Delete this web session which clears both the user ** agent cookie and the server side session instance. ** This method must be called before the WebRes is ** committed otherwise the server side instance is cleared, ** but the user agent cookie will remain uncleared. ** abstract Void delete() }