Package org.forgerock.services.context
Interface Context
- All Known Subinterfaces:
MessageContext
,MessageInfoContext
- All Known Implementing Classes:
AbstractContext
,AdviceContext
,ApiVersionRouterContext
,AttributesContext
,ClientContext
,MessageContextImpl
,OAuth2Context
,RequestAuditContext
,RootContext
,SecurityContext
,SelfServiceContext
,SessionContext
,TransactionIdContext
,UriRouterContext
public interface Context
Type-safe contextual information associated with the processing of a request in an application.
Contexts are linked together in a stack with a
RootContext
at the bottom of the stack. Each context
maintains a reference to its parent context which can be accessed using the getParent()
} method.
Context implementations may provide information about the client, the end-user, auditing information, routing
decisions, etc. While contexts are arranged in a stack, application code will usually access contexts using the
asContext(Class)
method:
Context context = ...; // Opaque reference to the context stack String remoteHost = context.asContext(ClientContext.class).getRemoteHost(); context.asContext(AttributesContext.class).getAttributes().put("key", "value");Alternatively, scripted applications will usually access contexts by name:
var remoteHost = context.client.remoteHost; context.attributes.key = "value";Context implementations should inherit from
AbstractContext
and ensure that they can be serialized to and
from JSON.-
Method Summary
Modifier and TypeMethodDescriptionReturns an @{link Optional} which contains the first context in the chain whose type is a sub-type of the providedContext
class if one exists, or an empty optional if none is present.<T extends Context>
TReturns the first context in the chain whose type is a sub-type of the providedContext
class.boolean
containsContext
(Class<? extends Context> clazz) Returnstrue
if there is a context in the chain whose type is a sub-type of the providedContext
class.boolean
containsContext
(String contextName) Returnstrue
if there is a context in the chain whose name matches the provided context name.getContext
(String contextName) Returns the first context in the chain whose context name matches the provided name.Get this Context's name.getId()
Returns the unique ID identifying this context, usually a UUID.Returns the parent of this context.Returns the unique ID of the root context, usually a UUID.boolean
Returnstrue
if this context is a root context.Return this Context as a JsonValue (for persistence).
-
Method Details
-
getContextName
String getContextName()Get this Context's name.- Returns:
- this object's name
-
asContext
Returns the first context in the chain whose type is a sub-type of the providedContext
class. The method first checks this context to see if it has the required type, before proceeding to the parent context, and then continuing up the chain of parents until the root context is reached.- Type Parameters:
T
- The context type.- Parameters:
clazz
- The class of context to be returned.- Returns:
- The first context in the chain whose type is a sub-type of the
provided
Context
class. - Throws:
IllegalArgumentException
- If no matching context was found in this context's parent chain.
-
as
Returns an @{link Optional} which contains the first context in the chain whose type is a sub-type of the providedContext
class if one exists, or an empty optional if none is present. The method first checks this context to see if it has the required type, before proceeding to the parent context, and then continuing up the chain of parents until the root context is reached.- Type Parameters:
T
- The context type.- Parameters:
clazz
- The class of context to be returned.- Returns:
- An
Optional
containing the first context in the chain whose type is a sub-type of the providedContext
class, or an empty optional if no such Context exists in the chain.
-
getContext
Returns the first context in the chain whose context name matches the provided name.- Parameters:
contextName
- The name of the context to be returned.- Returns:
- The first context in the chain whose name matches the provided context name.
- Throws:
IllegalArgumentException
- If no matching context was found in this context's parent chain.
-
get
Returns anOptional
containing the first context in the chain whose context name matches the provided name, or an emptyOptional
if none is present.- Parameters:
contextName
- The name of the context to be returned.- Returns:
- An
Optional
containing the first context in the chain whose name matches the provided context name, an empty optional if none is present.
-
containsContext
Returnstrue
if there is a context in the chain whose type is a sub-type of the providedContext
class. The method first checks this context to see if it has the required type, before proceeding to the parent context, and then continuing up the chain of parents until the root context is reached.- Parameters:
clazz
- The class of context to be checked.- Returns:
true
if there is a context in the chain whose type is a sub-type of the providedContext
class.
-
containsContext
Returnstrue
if there is a context in the chain whose name matches the provided context name.- Parameters:
contextName
- The name of the context to locate.- Returns:
true
if there is a context in the chain whose context name matchescontextName
.
-
getId
String getId()Returns the unique ID identifying this context, usually a UUID. If no ID has been defined then the ID of the parent context will be returned.- Returns:
- The unique ID identifying this context. If no ID has been defined then the ID of the parent context will be returned.
-
getRootId
String getRootId()Returns the unique ID of the root context, usually a UUID.- Returns:
- The unique ID of the root context.
-
getParent
Context getParent()Returns the parent of this context.- Returns:
- The parent of this context, or
null
if this context is a root context.
-
isRootContext
boolean isRootContext()Returnstrue
if this context is a root context.- Returns:
true
if this context is a root context.
-
toJsonValue
JsonValue toJsonValue()Return this Context as a JsonValue (for persistence).- Returns:
- the Context data as a JsonValue.
-