Package org.forgerock.services.context
Class AbstractContext
- java.lang.Object
-
- org.forgerock.services.context.AbstractContext
-
- All Implemented Interfaces:
Context
- Direct Known Subclasses:
AdviceContext
,ApiVersionRouterContext
,AttributesContext
,AuditingContext
,AuthRedirectContext
,CapturedUserPasswordContext
,CdSsoContext
,CdSsoFailureContext
,ClientContext
,HttpContext
,InternalSsoTokenContext
,JwtBuilderContext
,JwtValidationContext
,JwtValidationErrorContext
,OAuth2Context
,OAuth2FailureContext
,OAuth2SessionContext
,OAuth2TokenExchangeContext
,PolicyDecisionContext
,RequestAuditContext
,RootContext
,SecurityContext
,SessionContext
,SessionInfoContext
,SsoTokenContext
,StsContext
,TransactionIdContext
,UriRouterContext
,UserProfileContext
,WebSocketHandshakeContext
public abstract class AbstractContext extends Object implements Context
A base implementation of theContext
interface. Derived Contexts MUST support persistence by providing- a public constructor having the same declaration as
AbstractContext(JsonValue, ClassLoader)
- a public method having the same declaration as
Context.toJsonValue()
Here is an example of the JSON representation of the core attributes of all contexts:
{ "id" : "56f0fb7e-3837-464d-b9ec-9d3b6af665c3", "class" : ...Java class name.., "parent" : { ... } }
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractContext(String id, String name, Context parent)
Constructs a newAbstractContext
.AbstractContext(JsonValue savedContext, ClassLoader classLoader)
Creates a new context from the JSON representation of a previously persisted context.protected
AbstractContext(Context parent, String name)
Constructs a newAbstractContext
with anull
id
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends Context>
Optional<T>as(Class<T> clazz)
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.<T extends Context>
TasContext(Class<T> clazz)
Returns 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.Optional<Context>
get(String contextName)
Context
getContext(String contextName)
Returns the first context in the chain whose context name matches the provided name.String
getContextName()
Get this Context's name.String
getId()
Returns the unique ID identifying this context, usually a UUID.Context
getParent()
Returns the parent of this context.String
getRootId()
Returns the unique ID of the root context, usually a UUID.boolean
isRootContext()
Returnstrue
if this context is a root context.JsonValue
toJsonValue()
Return this Context as a JsonValue (for persistence).String
toString()
-
-
-
Field Detail
-
data
protected final JsonValue data
The Context data.
-
-
Constructor Detail
-
AbstractContext
protected AbstractContext(Context parent, String name)
Constructs a newAbstractContext
with anull
id
.- Parameters:
parent
- The parent context.name
- The name of the context.
-
AbstractContext
protected AbstractContext(String id, String name, Context parent)
Constructs a newAbstractContext
.- Parameters:
id
- The id of the context.parent
- The parent context.name
- The name of the context.
-
AbstractContext
public AbstractContext(JsonValue savedContext, ClassLoader classLoader)
Creates a new context from the JSON representation of a previously persisted context.Sub-classes MUST provide a constructor having the same declaration as this constructor in order to support persistence. Implementations MUST take care to invoke the super class implementation before parsing their own context attributes. Below is an example implementation for a security context which stores the user name and password of the authenticated user:
protected SecurityContext(JsonValue savedContext, ClassLoader classLoader) { // Invoke the super-class implementation first. super(savedContext, classLoader); // Now parse the attributes for this context. this.username = savedContext.get("username").required().asString(); this.password = savedContext.get("password").required().asString(); }
In order to create a context's persisted JSON representation, implementations must override.- Parameters:
savedContext
- The JSON representation from which this context's attributes should be parsed.classLoader
- The ClassLoader which can properly resolve the persisted class-name.
-
-
Method Detail
-
getContextName
public final String getContextName()
Description copied from interface:Context
Get this Context's name.- Specified by:
getContextName
in interfaceContext
- Returns:
- this object's name
-
asContext
public final <T extends Context> T asContext(Class<T> clazz)
Description copied from interface:Context
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.
-
as
public final <T extends Context> Optional<T> as(Class<T> clazz)
Description copied from interface:Context
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.- Specified by:
as
in interfaceContext
- 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
public final Context getContext(String contextName)
Description copied from interface:Context
Returns the first context in the chain whose context name matches the provided name.- Specified by:
getContext
in interfaceContext
- Parameters:
contextName
- The name of the context to be returned.- Returns:
- The first context in the chain whose name matches the provided context name.
-
containsContext
public final boolean containsContext(Class<? extends Context> clazz)
Description copied from interface:Context
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.- Specified by:
containsContext
in interfaceContext
- 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
public final boolean containsContext(String contextName)
Description copied from interface:Context
Returnstrue
if there is a context in the chain whose name matches the provided context name.- Specified by:
containsContext
in interfaceContext
- Parameters:
contextName
- The name of the context to locate.- Returns:
true
if there is a context in the chain whose context name matchescontextName
.
-
getId
public final String getId()
Description copied from interface:Context
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.
-
getRootId
public String getRootId()
Description copied from interface:Context
Returns the unique ID of the root context, usually a UUID.
-
getParent
public final Context getParent()
Description copied from interface:Context
Returns the parent of this context.
-
isRootContext
public final boolean isRootContext()
Description copied from interface:Context
Returnstrue
if this context is a root context.- Specified by:
isRootContext
in interfaceContext
- Returns:
true
if this context is a root context.
-
toJsonValue
public JsonValue toJsonValue()
Description copied from interface:Context
Return this Context as a JsonValue (for persistence).- Specified by:
toJsonValue
in interfaceContext
- Returns:
- the Context data as a JsonValue.
-
-