Allows to wrap function in another function providing some additional functionality.
It may choose to execute or not execute that functionality, but should not interpret
or change the returned value; instead, it should perform orthogonal actions that
need to occur around the given functionality. Typical example is setting up DB
transaction.
This is similar to net.liftweb.common.CommonLoanWrapper, however, it decorates the
function eagerly. This way, you can access current thread's state which is essential
to do things like set up a HTTP session wrapper
Allows to wrap function in another function providing some additional functionality. It may choose to execute or not execute that functionality, but should not interpret or change the returned value; instead, it should perform orthogonal actions that need to occur around the given functionality. Typical example is setting up DB transaction.
This is similar to net.liftweb.common.CommonLoanWrapper, however, it decorates the function eagerly. This way, you can access current thread's state which is essential to do things like set up a HTTP session wrapper