org.jboss.dna.graph
Class ExecutionContext

java.lang.Object
  extended by org.jboss.dna.graph.ExecutionContext
All Implemented Interfaces:
Cloneable, ClassLoaderFactory
Direct Known Subclasses:
JcrExecutionContext, SequencerContext

@Immutable
public class ExecutionContext
extends Object
implements ClassLoaderFactory, Cloneable

An ExecutionContext is a representation of the environment or context in which a component or operation is operating. Some components require this context to be passed into individual methods, allowing the context to vary with each method invocation. Other components require the context to be provided before it's used, and will use that context for all its operations (until it is given a different one).

ExecutionContext instances are immutable, so components may hold onto references to them without concern of those contexts changing. Contexts may be used to create other contexts that vary the environment and/or security context. For example, an ExecutionContext could be used to create another context that references the same namespace registry but which has a different JAAS subject.

Author:
Randall Hauch, John Verhaeg

Constructor Summary
ExecutionContext()
          Create an instance of an execution context that uses the current JAAS calling context , with default implementations for all other components (including default namespaces in the namespace registry.
 
Method Summary
 ExecutionContext clone()
          
 ExecutionContext create(AccessControlContext accessControlContext)
          Creates an ExecutionContext that is the same as this context, but which uses the supplied access control context.
 ExecutionContext create(LoginContext loginContext)
          Create an ExecutionContext that is the same as this context, but which uses the supplied LoginContext.
 AccessControlContext getAccessControlContext()
          Get the JAAS access control context for this context.
 ClassLoader getClassLoader(String... classpath)
          Get a class loader for the supplied classpath.
 Logger getLogger(Class<?> clazz)
          Return a logger associated with this context.
 Logger getLogger(String name)
          Return a logger associated with this context.
 LoginContext getLoginContext()
          Get the JAAS login context for this context.
 MimeTypeDetector getMimeTypeDetector()
          Return an object that can be used to determine the MIME type of some content, such as the content of a file.
 NamespaceRegistry getNamespaceRegistry()
          Get the (mutable) namespace registry for this context.
 PropertyFactory getPropertyFactory()
          Get the factory for creating Property objects.
 Subject getSubject()
          Get the JAAS subject for which this context was created.
 ValueFactories getValueFactories()
          Get the factories that should be used to create values for properties.
 String toString()
          
 ExecutionContext with(ClassLoaderFactory classLoaderFactory)
          Create a new execution context that mirrors this context but that uses the supplied class loader factory.
 ExecutionContext with(MimeTypeDetector mimeTypeDetector)
          Create a new execution context that is the same as this context, but which uses the supplied MIME type detector.
 ExecutionContext with(NamespaceRegistry namespaceRegistry)
          Create a new execution context that mirrors this context but that uses the supplied namespace registry.
 ExecutionContext with(String name)
          Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name.
 ExecutionContext with(String name, CallbackHandler callbackHandler)
          Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name and a JAAS callback handler (used to handle authentication callbacks).
 ExecutionContext with(String name, Subject subject)
          Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name and a JAAS subject.
 ExecutionContext with(String name, Subject subject, CallbackHandler callbackHandler)
          Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name, a JAAS subject, and a JAAS callback handler (used to handle authentication callbacks).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ExecutionContext

public ExecutionContext()
Create an instance of an execution context that uses the current JAAS calling context , with default implementations for all other components (including default namespaces in the namespace registry.

Method Detail

getLogger

public Logger getLogger(Class<?> clazz)
Return a logger associated with this context. This logger records only those activities within the context and provide a way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log via this mechanism should not also obtain a system logger.

Parameters:
clazz - the class that is doing the logging
Returns:
the logger, named after clazz; never null
See Also:
getLogger(String)

getLogger

public Logger getLogger(String name)
Return a logger associated with this context. This logger records only those activities within the context and provide a way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log via this mechanism should not also obtain a system logger.

Parameters:
name - the name for the logger
Returns:
the logger, named after clazz; never null
See Also:
getLogger(Class)

getMimeTypeDetector

public MimeTypeDetector getMimeTypeDetector()
Return an object that can be used to determine the MIME type of some content, such as the content of a file.

Returns:
the detector; never null

getAccessControlContext

public AccessControlContext getAccessControlContext()
Get the JAAS access control context for this context.

Returns:
the access control context; may be null

getLoginContext

public LoginContext getLoginContext()
Get the JAAS login context for this context.

Returns:
the login context; may be null

getNamespaceRegistry

public NamespaceRegistry getNamespaceRegistry()
Get the (mutable) namespace registry for this context.

Returns:
the namespace registry; never null

getPropertyFactory

public PropertyFactory getPropertyFactory()
Get the factory for creating Property objects.

Returns:
the property factory; never null

getSubject

public Subject getSubject()
Get the JAAS subject for which this context was created.

Returns:
the subject; should never be null if JAAS is used, but will be null if there is no access control context or login context.

getValueFactories

public ValueFactories getValueFactories()
Get the factories that should be used to create values for properties.

Returns:
the property value factory; never null

getClassLoader

public ClassLoader getClassLoader(String... classpath)
Get a class loader for the supplied classpath.

Specified by:
getClassLoader in interface ClassLoaderFactory
Parameters:
classpath - the classpath to use
Returns:
the class loader; may not be null
See Also:
ClassLoaderFactory.getClassLoader(java.lang.String[])

with

public ExecutionContext with(NamespaceRegistry namespaceRegistry)
Create a new execution context that mirrors this context but that uses the supplied namespace registry. The resulting context's value factories and property factory all make use of the new namespace registry.

Parameters:
namespaceRegistry - the new namespace registry implementation, or null if the default implementation should be used
Returns:
the execution context that is identical with this execution context, but which uses the supplied registry; never null

with

public ExecutionContext with(MimeTypeDetector mimeTypeDetector)
Create a new execution context that is the same as this context, but which uses the supplied MIME type detector.

Parameters:
mimeTypeDetector - the new MIME type detector implementation, or null if the default implementation should be used
Returns:
the execution context that is identical with this execution context, but which uses the supplied detector implementation; never null

with

public ExecutionContext with(ClassLoaderFactory classLoaderFactory)
Create a new execution context that mirrors this context but that uses the supplied class loader factory.

Parameters:
classLoaderFactory - the new class loader factory implementation, or null if the default implementation should be used
Returns:
the execution context that is identical with this execution context, but which uses the supplied class loader factory implementation; never null

create

public ExecutionContext create(AccessControlContext accessControlContext)
Creates an ExecutionContext that is the same as this context, but which uses the supplied access control context.

Parameters:
accessControlContext - the JAAS access control context that should be used
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
IllegalArgumentException - if accessControlContext is null.

create

public ExecutionContext create(LoginContext loginContext)
Create an ExecutionContext that is the same as this context, but which uses the supplied LoginContext. A LoginContext has a variety of constructors, including contructors that take combinations of application configuration name, subject, callback handlers, and a JAAS configuration.

Parameters:
loginContext - the JAAS login context
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
IllegalArgumentException - if the loginContext is null

with

public ExecutionContext with(String name)
                      throws LoginException
Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name.

Parameters:
name - the name of the JAAS application configuration name
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
IllegalArgumentException - if the name is null
LoginException - if there name is invalid (or there is no login context named "other"), or if the default callback handler JAAS property was not set or could not be loaded

with

public ExecutionContext with(String name,
                             Subject subject)
                      throws LoginException
Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name and a JAAS subject.

Parameters:
name - the name of the JAAS application configuration name
subject - the subject to authenticate
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
LoginException - if there name is invalid (or there is no login context named "other"), if the default callback handler JAAS property was not set or could not be loaded, or if the subject is null or unknown

with

public ExecutionContext with(String name,
                             CallbackHandler callbackHandler)
                      throws LoginException
Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name and a JAAS callback handler (used to handle authentication callbacks).

Parameters:
name - the name of the JAAS application configuration name
callbackHandler - the callback handler that will be used by LoginModules to communicate with the user to authenticate
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
LoginException - if there name is invalid (or there is no login context named "other"), or if the callbackHandler is null

with

public ExecutionContext with(String name,
                             Subject subject,
                             CallbackHandler callbackHandler)
                      throws LoginException
Create an ExecutionContext that is the same as this context, but which uses the supplied application configuration name, a JAAS subject, and a JAAS callback handler (used to handle authentication callbacks).

Parameters:
name - the name of the JAAS application configuration name
subject - the subject to authenticate
callbackHandler - the callback handler that will be used by LoginModules to communicate with the user to authenticate
Returns:
the execution context that is identical with this execution context, but with a different security context; never null
Throws:
LoginException - if there name is invalid (or there is no login context named "other"), if the default callback handler JAAS property was not set or could not be loaded, if the subject is null or unknown, or if the callbackHandler is null

clone

public ExecutionContext clone()

Overrides:
clone in class Object
See Also:
Object.clone()

toString

public String toString()

Overrides:
toString in class Object
See Also:
Object.toString()


Copyright © 2008-Present JBoss a division of Red Hat. All Rights Reserved.