abstract class ContainerVar[T] extends util.AnyVar[T, ContainerVar[T]] with LazyLoggable
A typesafe container for data with a lifetime nominally equivalent to the lifetime of HttpSession attributes. This alternative to SessionVar keeps data in the container's session and must be serializable to support session migration. Use SessionVars unless you are using MigratoryLiftSessions.
object MySnippetCompanion {
object mySessionVar extends ContainerVar[String]("hello")
}
The standard pattern is to create a singleton object extending ContainerVar instead of creating an instance variable of a concrete ContainerVar subclass. This is preferred because ContainerVar will use the name of its instantiating class for part of its state maintenance mechanism.
If you find it necessary to create a ContainerVar subclass of which there may be more than one instance, it is necessary to override the nameSalt() method to return a unique salt value for each instance to prevent name collisions.
- Alphabetic
- By Inheritance
- ContainerVar
- LazyLoggable
- AnyVar
- AnyVarTrait
- HasCalcDefaultValue
- PSettableValueHolder
- SettableValueHolder
- Settable
- PValueHolder
- ValueHolder
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
ContainerVar(dflt: ⇒ T)(implicit containerSerializer: ContainerSerializer[T])
- dflt
- the default value to be returned if none was set prior to requesting a value to be returned from the container
- containerSerializer
-- an implicit parameter that keeps us honest about only storing things that can be actually serialized. Lift provides a subset of these.
Type Members
-
type
CleanUpParam = LiftSession
- Definition Classes
- ContainerVar → AnyVarTrait
-
type
FuncType = (Box[T], Boolean) ⇒ Unit
The function takes a
Box[T]
(Full if the Var is being set, Empty if it's being cleared) and a Boolean indicating that the set function is setting to the default value.The function takes a
Box[T]
(Full if the Var is being set, Empty if it's being cleared) and a Boolean indicating that the set function is setting to the default value.- Definition Classes
- AnyVarTrait
-
type
ValueType = T
- Definition Classes
- PValueHolder → ValueHolder
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
__nameSalt: String
- Attributes
- protected
- Definition Classes
- AnyVarTrait
-
def
apply(what: T): T
Set the session variable
Set the session variable
- what
-- the value to set the session variable to
- Definition Classes
- AnyVarTrait
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
atomicUpdate(f: (ValueType) ⇒ ValueType): ValueType
Perform an atomic update of this Settable.
Perform an atomic update of this Settable. The current value is passed to the function and the ValueHolder is set to the result of the function. This is enclosed in the performAtomicOperation method which will, by default, synchronize this instance
- Definition Classes
- Settable
-
def
calcDefaultValue: T
- Attributes
- protected
- Definition Classes
- AnyVar → AnyVarTrait → HasCalcDefaultValue
-
def
clearFunc(name: String): Unit
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
doSync[F](f: ⇒ F): F
Different Vars require different mechanisms for synchronization.
Different Vars require different mechanisms for synchronization. This method implements the Var specific synchronization mechanism.
In the case of ContainerVar, we don't need to do any explicit synchronization. Values are stored in the HttpSession, which already gives us atomic get and set operations.
- Definition Classes
- ContainerVar → AnyVarTrait
-
def
doWith[F](newVal: T)(f: ⇒ F): F
Change the value of the Var for the lifespan of the function
Change the value of the Var for the lifespan of the function
- Definition Classes
- AnyVarTrait
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
findFunc(name: String): Box[T]
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait
-
def
get: T
Shadow of the 'is' method
Shadow of the 'is' method
- Definition Classes
- AnyVarTrait → ValueHolder
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
is: T
The current value of the variable
The current value of the variable
- Definition Classes
- AnyVarTrait
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
lazy val
logger: Logger
- Attributes
- protected
- Definition Classes
- LazyLoggable
- Annotations
- @transient()
-
lazy val
name: String
- Attributes
- protected
- Definition Classes
- AnyVarTrait
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
onChange(f: FuncType): Unit
On any change to this Var, invoke the function.
On any change to this Var, invoke the function. Changes are setting the value, clearing the value. There may not be a call if the Var goes out of scope (e.g., a RequestVar at the end of the Request).
The function takes a
Box[T]
(Full if the Var is being set, Empty if it's being cleared) and a Boolean indicating that the set function is setting to the default value.The function should execute *very* quickly (e.g., Schedule a function to be executed on a different thread).
The function should generally be set in Boot or when a singleton is created.
- f
the function to execute on change
- Definition Classes
- AnyVarTrait
-
def
onShutdown(session: CleanUpParam): Unit
- Attributes
- protected
- Definition Classes
- AnyVarTrait
-
def
performAtomicOperation[T](f: ⇒ T): T
Perform an atomic operation on the Settable.
Perform an atomic operation on the Settable. By default synchronizes the instance, but it could use other mechanisms
- Definition Classes
- Settable
-
def
registerCleanupFunc(in: (LiftSession) ⇒ Unit): Unit
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait
-
final
def
registerGlobalCleanupFunc(in: (CleanUpParam) ⇒ Unit): Unit
- Attributes
- protected
- Definition Classes
- AnyVarTrait
-
def
remove(): Unit
- Definition Classes
- AnyVarTrait
-
def
set(what: T): T
Shadow of the apply method
Shadow of the apply method
- Definition Classes
- AnyVarTrait → Settable
-
def
setFunc(name: String, value: T): Unit
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait
-
def
setIfUnset(value: ⇒ T): T
Set the Var if it has not been calculated
Set the Var if it has not been calculated
- Definition Classes
- AnyVarTrait
-
def
set_?: Boolean
Has this Var been set or accessed and had its default value calculated
Has this Var been set or accessed and had its default value calculated
- Definition Classes
- AnyVarTrait
-
def
settingDefault_?: Boolean
- Attributes
- protected
- Definition Classes
- AnyVarTrait
- def showWarningWhenAccessedOutOfSessionScope_?: Boolean
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
testWasSet(name: String, bn: String): Boolean
A non-side-effecting test if the value was initialized
A non-side-effecting test if the value was initialized
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait
-
def
toString(): String
- Definition Classes
- AnyVarTrait → AnyRef → Any
-
def
update(f: (T) ⇒ T): T
Applies the given function to the contents of this variable and sets the variable to the resulting value.
Applies the given function to the contents of this variable and sets the variable to the resulting value.
- f
-- the function to apply and set the result from.
- Definition Classes
- AnyVarTrait
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
wasInitialized(name: String, bn: String): Boolean
- Attributes
- protected
- Definition Classes
- ContainerVar → AnyVarTrait