public class MetadataEnvironmentShell
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
protected class |
MetadataEnvironmentShell.ThreadResources
Common resources that must be acquired in the current thread, and then
propagated to a new thread.
|
static class |
MetadataEnvironmentShell.Variable<T>
A shell variable which is often used to supersede a property value of a
MetadataEnvironment object. |
static class |
MetadataEnvironmentShell.Variables
A collection of shell variables.
|
Modifier and Type | Field and Description |
---|---|
static MetadataEnvironmentShell.Variable<java.util.Map<java.lang.String,java.lang.String>> |
CONTEXT_PARAMETER_MAP
Variable that provides the context parameters for a metadata environment shell.
|
static MetadataEnvironmentShell.Variable<java.lang.Boolean> |
ISOLATED
Global variable that indicates all activities in a metadata environment
shell should not change the system state such as service provider caching.
|
protected java.lang.String |
metadataRevisionId
The ID of the metadata revision this shell is based on;
null
if the revision is unknown. |
Constructor and Description |
---|
MetadataEnvironmentShell()
Constructs a default shell.
|
MetadataEnvironmentShell(MetadataEnvironmentShell.Variables globalVariables,
java.lang.String metadataRevisionId)
Constructs a shell with global variables.
|
MetadataEnvironmentShell(java.lang.String metadataRevisionId)
Constructs a shell based on a revision.
|
Modifier and Type | Method and Description |
---|---|
<V> V |
call(java.util.concurrent.Callable<V> task)
Executes a task and waits until it is completed or aborted.
|
<V> V |
call(java.util.concurrent.Callable<V> task,
MetadataEnvironmentShell.Variables variables)
Executes a task and waits until it is completed or aborted.
|
static MetadataEnvironmentShell |
current()
Returns the
MetadataEnvironmentShell the current thread is
in, null if the current thread is not in any
MetadataEnvironmentShell . |
<V> java.util.concurrent.Future<V> |
execute(java.util.concurrent.Callable<V> task)
Starts executing a task and returns immediately.
|
<V> java.util.concurrent.Future<V> |
execute(java.util.concurrent.Callable<V> task,
MetadataEnvironmentShell.Variables variables)
Starts executing a task and returns immediately.
|
java.util.concurrent.Future<?> |
execute(java.lang.Runnable task)
Starts executing a task and returns immediately.
|
java.util.concurrent.Future<?> |
execute(java.lang.Runnable task,
MetadataEnvironmentShell.Variables variables)
Starts executing a task and returns immediately.
|
<T> T |
getGlobalVariable(MetadataEnvironmentShell.Variable<T> var)
Returns the value of a global variable.
|
java.lang.String |
getMetadataRevisionId()
Returns the ID of the metadata revision this shell is based on.
|
static <T> T |
getVariable(MetadataEnvironmentShell.Variable<T> variable)
Returns the value of a variable if the shell variable is set in the
current thread of execution.
|
boolean |
isGlobalVariableSet(MetadataEnvironmentShell.Variable var)
Returns
true if a global variable is set in this shell. |
static <T> boolean |
isVariableSet(MetadataEnvironmentShell.Variable<T> variable)
Returns
true if the shell variable is set in the current
thread of execution. |
protected MetadataEnvironmentThread |
newThread(MetadataEnvironmentShell.Variables variables,
java.lang.ThreadGroup group,
java.lang.Runnable target,
java.lang.String name,
long stackSize)
Creates a thread for task execution.
|
protected MetadataEnvironmentThread.Resources |
newThreadResources()
Returns resources acquired from the current thread.
|
public static final MetadataEnvironmentShell.Variable<java.util.Map<java.lang.String,java.lang.String>> CONTEXT_PARAMETER_MAP
public static final MetadataEnvironmentShell.Variable<java.lang.Boolean> ISOLATED
Boolean.TRUE
will depend on the implementation. In general being isolated means all
caching is turned off unless the cache is private to a metadata
environment shell.
Note: If implemented, this variable should always be a global variable, so that even the initialization of a shell can avoid tainting the system cache.
protected final java.lang.String metadataRevisionId
null
if the revision is unknown.public MetadataEnvironmentShell()
public MetadataEnvironmentShell(java.lang.String metadataRevisionId)
metadataRevisionId
- the ID of the metadata revision;
null
if the revision is unknownpublic MetadataEnvironmentShell(MetadataEnvironmentShell.Variables globalVariables, java.lang.String metadataRevisionId)
globalVariables
- the global variables; null
if nonemetadataRevisionId
- the ID of the metadata revision;
null
if the revision is unknownpublic final java.lang.String getMetadataRevisionId()
null
if the revision is unknownpublic final boolean isGlobalVariableSet(MetadataEnvironmentShell.Variable var)
true
if a global variable is set in this shell.var
- the global variable to be checkedtrue
if the global variable is set in this shellpublic final <T> T getGlobalVariable(MetadataEnvironmentShell.Variable<T> var)
T
- the type of the variable valuevar
- the global variablenull
if the global
variable is not set or if the value is nullpublic static MetadataEnvironmentShell current()
MetadataEnvironmentShell
the current thread is
in, null
if the current thread is not in any
MetadataEnvironmentShell
.MetadataEnvironmentShell
the current thread is
in, null
if the current thread is not in any
MetadataEnvironmentShell
public static <T> T getVariable(MetadataEnvironmentShell.Variable<T> variable)
T
- the type of the variablevariable
- the variablenull
otherwise.
Note that this method returning null
does not
necessarily mean the variable is not set since null
is a valid value of a variable. To check if a variable is
set, use isVariableSet
.public static <T> boolean isVariableSet(MetadataEnvironmentShell.Variable<T> variable)
true
if the shell variable is set in the current
thread of execution.T
- the type of the variablevariable
- the variabletrue
if the shell variable is set in the current
thread of executionprotected MetadataEnvironmentThread.Resources newThreadResources()
ThreadResources
in order to propagate more information
from the current thread to the new thread.protected MetadataEnvironmentThread newThread(MetadataEnvironmentShell.Variables variables, java.lang.ThreadGroup group, java.lang.Runnable target, java.lang.String name, long stackSize)
variables
- the variables to be set in this thread, or
null
if no variables need to be setgroup
- the thread grouptarget
- the object whose run
is calledname
- the name of the new threadstackSize
- the desired stack size for the new thread, or zero to
indicate that this parameter is to be ignoredpublic java.util.concurrent.Future<?> execute(java.lang.Runnable task)
null
. This method does not wait for the completion
of the task. To block the caller thread, call Future.get
.task
- the task to be executedjava.lang.IllegalArgumentException
- if the given task is nullpublic java.util.concurrent.Future<?> execute(java.lang.Runnable task, MetadataEnvironmentShell.Variables variables)
null
. This method does not wait for the completion
of the task. To block the caller thread, call Future.get
.task
- the task to be executedvariables
- the variables to be set for this task; null
if no variables need to be setjava.lang.IllegalArgumentException
- if the given task is nullpublic <V> java.util.concurrent.Future<V> execute(java.util.concurrent.Callable<V> task)
Future.get
.V
- the type of the object returned by the tasktask
- the task to be executedjava.lang.IllegalArgumentException
- if the given task is nullpublic <V> java.util.concurrent.Future<V> execute(java.util.concurrent.Callable<V> task, MetadataEnvironmentShell.Variables variables)
Future.get
.V
- the type of the object returned by the tasktask
- the task to be executedvariables
- the variables to be set for this task; null
if no variables need to be setjava.lang.IllegalArgumentException
- if the given task is nullpublic <V> V call(java.util.concurrent.Callable<V> task) throws java.util.concurrent.ExecutionException
V
- the type of the object returned by the tasktask
- the task to be executedjava.util.concurrent.ExecutionException
- if the task throws an exception. The actual
exception can be inspected by calling getCause()
.ADFShareException
- if any exception that is not an
ExcutionException
is thrownpublic <V> V call(java.util.concurrent.Callable<V> task, MetadataEnvironmentShell.Variables variables) throws java.util.concurrent.ExecutionException
V
- the type of the object returned by the tasktask
- the task to be executedvariables
- the variables to be set for this task; null
if no variables need to be setjava.util.concurrent.ExecutionException
- if the task throws an exception. The actual
exception can be inspected by calling getCause()
.ADFShareException
- if any exception that is not an
ExcutionException
is thrown