public class VCacheRequestContextManager extends Object implements VCacheRequestContextOperations
VCacheRequestContextOperations
which provides a simpler and less error-prone interface to client code
than that provided by ThreadLocalRequestContextSupplier
. Instead of the ThreadLocalRequestContextSupplier.initThread(String)
and ThreadLocalRequestContextSupplier.clearThread()
methods, this class provides a single VCacheRequestContextOperations.doInRequestContext(Action)
method which handles the thread-local init/clear semantics internally.
Additionally, calls to the VCacheRequestContextOperations.doInRequestContext(Action)
method can be nested, allowing different levels of
client code to ensure that the request context is initialized without worrying about whether or not it's already been
done further up the call stack.
If getCurrentRequestContext()
()} is invoked outside of the context of VCacheRequestContextOperations.doInRequestContext(Action)
, then this class
acts much like a ThreadLocalRequestContextSupplier.lenientSupplier(Supplier)
, and will return a RequestContext
which stubs out method calls, and which remembers no data. The RequestContext.partitionIdentifier()
of this
object will be the same "fallback" identifier passed as an argument to this class's constructor, and represents the
"unknown tenant" state of code that hasn't initialised the context properly.
VCacheRequestContextOperations.Action<T,X extends Throwable>
Constructor and Description |
---|
VCacheRequestContextManager(String defaultPartitionIdentifier) |
Modifier and Type | Method and Description |
---|---|
<T,X extends Throwable> |
doInRequestContext(String partitionIdentifer,
VCacheRequestContextOperations.Action<T,X> action)
Deprecated.
since 6.0. Partitions are not supported in Confluence Server
|
<T,X extends Throwable> |
doInRequestContext(VCacheRequestContextOperations.Action<T,X> action)
Executes the supplied action callback within a VCache
RequestContext , using the system default
partition identifier. |
Runnable |
initRequestContext()
Initialises the request context for the current thread, re-using any exist context if one is present.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
doInRequestContext, withRequestContext, withRequestContext
public VCacheRequestContextManager(String defaultPartitionIdentifier)
public <T,X extends Throwable> T doInRequestContext(VCacheRequestContextOperations.Action<T,X> action) throws X extends Throwable
RequestContext
, using the system default
partition identifier.doInRequestContext
in interface VCacheRequestContextOperations
T
- the return type of the callbackX
- the exception type thrown by the callbackaction
- the callback to be executed within the request contextX
- the exception thrown by the callbackX extends Throwable
@Deprecated public <T,X extends Throwable> T doInRequestContext(String partitionIdentifer, VCacheRequestContextOperations.Action<T,X> action) throws X extends Throwable
RequestContext
. If no request context is bound to
the current thread, then one will be set up with the supplied partition identifier. Calls to this method may be
nested. Nested calls will re-use the existing context bound by the first call. Nested calls must supply the
same partition identifier as the first call.doInRequestContext
in interface VCacheRequestContextOperations
T
- the return type of the callbackX
- the exception type thrown by the callbackpartitionIdentifer
- the partition identifier that will be used to create new request context, if necessaryaction
- the callback to be executed within the request contextX
- the exception thrown by the callbackX extends Throwable
@Nonnull public Runnable initRequestContext()
Runnable
that should be invoked to clear up the context. It is the callers job to ensure this
is invoked at the appropriate time. Most callers should instead use the more foolproof VCacheRequestContextOperations.doInRequestContext(Runnable)
Copyright © 2003–2017 Atlassian. All rights reserved.