info.magnolia.context
Class MgnlContext

java.lang.Object
  extended by info.magnolia.context.MgnlContext

public class MgnlContext
extends java.lang.Object

This class allows obtaining of the current Request without passing the request around the world. A ThreadLocal variable is used to manage the request and to make sure it doesn't escape to another processing.

In a later version this class should not depend on servlets. The core should use the context to get and set attributes instead of using the request or session object directly. Magnolia could run then in a neutral and configurable context.

Version:
$Revision: 36506 $ ($Author: had $)
Author:
Philipp Bracher

Nested Class Summary
static interface MgnlContext.Op<T,E extends java.lang.Throwable>
          A simple execution interface to be used with the doInSystemContext method.
static interface MgnlContext.SystemContextOperation
          Deprecated. since 4.2 - use the Op interface, which can return values, or extend VoidOp.
static class MgnlContext.VoidOp
          An Op that does not return values and can only throw RuntimeExceptions.
 
Constructor Summary
MgnlContext()
          Do not instantiate this class.
 
Method Summary
static
<T,E extends java.lang.Throwable>
T
doInSystemContext(MgnlContext.Op<T,E> op)
          Executes the given operation in the system context and sets it back to the original once done (also if an exception is thrown).
static
<T,E extends java.lang.Throwable>
T
doInSystemContext(MgnlContext.Op<T,E> op, boolean releaseAfterExecution)
          Executes the given operation in the system context and sets it back to the original once done (also if an exception is thrown).
static void doInSystemContext(MgnlContext.SystemContextOperation op)
          Deprecated. since 4.2 - use the Op interface, which can return values, or extend VoidOp.
static void doInSystemContext(MgnlContext.SystemContextOperation op, boolean releaseAfterExecution)
          Deprecated. since 4.2 - use the Op interface, which can return values, or extend VoidOp.
static AccessManager getAccessManager(java.lang.String repositoryId)
          Get access manager for the specified repository on default workspace.
static AccessManager getAccessManager(java.lang.String repositoryId, java.lang.String workspaceId)
          Get access manager for the specified repository on the specified workspace.
static AggregationState getAggregationState()
          Returns the AggregationState if we're in a WebContext, throws an IllegalStateException otherwise.
static java.lang.Object getAttribute(java.lang.String name)
          Get attribute value.
static java.lang.Object getAttribute(java.lang.String name, int scope)
          Get the attribute from the specified scope.
static java.lang.String getContextPath()
           
static HierarchyManager getHierarchyManager(java.lang.String repositoryId)
          Get hierarchy manager initialized for this user.
static HierarchyManager getHierarchyManager(java.lang.String repositoryId, java.lang.String workspaceId)
          Get hierarchy manager initialized for this user.
static Context getInstance()
          Get the current context of this thread.
static java.util.Locale getLocale()
          Get the context's locale object.
static Messages getMessages()
           
static Messages getMessages(java.lang.String basename)
           
static java.lang.String getParameter(java.lang.String name)
          Get parameter value as string.
static java.util.Map<java.lang.String,java.lang.String> getParameters()
          Get parameter value as a Map<String, String>.
static java.lang.String[] getParameterValues(java.lang.String name)
           
static MultipartForm getPostedForm()
          Get form object assembled by MultipartRequestFilter.
static QueryManager getQueryManager(java.lang.String repositoryId)
          Get QueryManager created for this user on the specified repository.
static QueryManager getQueryManager(java.lang.String repositoryId, java.lang.String workspaceId)
          Get QueryManager created for this user on the specified repository and workspace.
static SystemContext getSystemContext()
          Get Magnolia system context.
static User getUser()
          A short cut for the current user.
static WebContext getWebContext()
          Throws an IllegalStateException if the current context is not set, or if it is not an instance of WebContext.
static WebContext getWebContext(java.lang.String exceptionMessage)
          Throws an IllegalStateException if the current context is not set, or if it is not an instance of WebContext.
static WebContext getWebContextOrNull()
          Returns the current context if it is set and is an instance of WebContext, returns null otherwise.
static boolean hasAttribute(java.lang.String name)
          Check if this attribute exists in the local scope.
static boolean hasInstance()
          Used to check if an instance is already set since getInstance() will always return a context.
static void initAsWebContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext servletContext)
          Sets this context as a web context.
static boolean isSystemInstance()
           
static boolean isWebContext()
          Returns true if the current context is set and is an instance of WebContext.
static void login(User user)
           
static void pop()
           
static void push(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
           
static void release()
          Releases the current thread (if not a system context) and calls the releaseThread() method of the system context.
static void removeAttribute(java.lang.String name)
          Remove an attribute in the local scope.
static void resetAggregationState()
          Resets the current aggregation state if we're in a WebContext, throws an IllegalStateException otherwise.
static void setAttribute(java.lang.String name, java.lang.Object value)
          Set attribute value, scope of the attribute is defined.
static void setAttribute(java.lang.String name, java.lang.Object value, int scope)
          Set attribute value, scope of the attribute is defined.
static void setInstance(Context context)
          Set context implementation instance.
static void setLocale(java.util.Locale locale)
          Set the locale for the current context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MgnlContext

public MgnlContext()
Do not instantiate this class. The constructor must be public to use discovery

Method Detail

getUser

public static User getUser()
A short cut for the current user.

Returns:
the current user

setLocale

public static void setLocale(java.util.Locale locale)
Set the locale for the current context.


getLocale

public static java.util.Locale getLocale()
Get the context's locale object.

Returns:
the current locale

getMessages

public static Messages getMessages()

getMessages

public static Messages getMessages(java.lang.String basename)

login

public static void login(User user)

getHierarchyManager

public static HierarchyManager getHierarchyManager(java.lang.String repositoryId)
Get hierarchy manager initialized for this user.


getHierarchyManager

public static HierarchyManager getHierarchyManager(java.lang.String repositoryId,
                                                   java.lang.String workspaceId)
Get hierarchy manager initialized for this user.


getAccessManager

public static AccessManager getAccessManager(java.lang.String repositoryId)
Get access manager for the specified repository on default workspace.


getAccessManager

public static AccessManager getAccessManager(java.lang.String repositoryId,
                                             java.lang.String workspaceId)
Get access manager for the specified repository on the specified workspace.


getQueryManager

public static QueryManager getQueryManager(java.lang.String repositoryId)
Get QueryManager created for this user on the specified repository.


getQueryManager

public static QueryManager getQueryManager(java.lang.String repositoryId,
                                           java.lang.String workspaceId)
Get QueryManager created for this user on the specified repository and workspace.


getPostedForm

public static MultipartForm getPostedForm()
Get form object assembled by MultipartRequestFilter.

Returns:
multipart form object TODO - move to getAggregationState() ?

getParameter

public static java.lang.String getParameter(java.lang.String name)
Get parameter value as string.


getParameterValues

public static java.lang.String[] getParameterValues(java.lang.String name)

getParameters

public static java.util.Map<java.lang.String,java.lang.String> getParameters()
Get parameter value as a Map<String, String>.


getContextPath

public static java.lang.String getContextPath()
Returns:
the context path.

getAggregationState

public static AggregationState getAggregationState()
Returns the AggregationState if we're in a WebContext, throws an IllegalStateException otherwise.


resetAggregationState

public static void resetAggregationState()
Resets the current aggregation state if we're in a WebContext, throws an IllegalStateException otherwise.


setAttribute

public static void setAttribute(java.lang.String name,
                                java.lang.Object value)
Set attribute value, scope of the attribute is defined.


setAttribute

public static void setAttribute(java.lang.String name,
                                java.lang.Object value,
                                int scope)
Set attribute value, scope of the attribute is defined.

Parameters:
scope - , highest level of scope from which this attribute is visible.

getAttribute

public static java.lang.Object getAttribute(java.lang.String name)
Get attribute value.


getAttribute

public static java.lang.Object getAttribute(java.lang.String name,
                                            int scope)
Get the attribute from the specified scope.


hasAttribute

public static boolean hasAttribute(java.lang.String name)
Check if this attribute exists in the local scope.


removeAttribute

public static void removeAttribute(java.lang.String name)
Remove an attribute in the local scope.


setInstance

public static void setInstance(Context context)
Set context implementation instance.


getInstance

public static Context getInstance()
Get the current context of this thread.


getWebContext

public static WebContext getWebContext()
Throws an IllegalStateException if the current context is not set, or if it is not an instance of WebContext.

See Also:
getWebContext(String)

getWebContext

public static WebContext getWebContext(java.lang.String exceptionMessage)
Throws an IllegalStateException if the current context is not set, or if it is not an instance of WebContext. Yes, you can specify the exception message if you want. This is useful if you're calling this from a component which only supports WebContext and still care enough to actually throw an exception with a meaningful message.

See Also:
getWebContext()

getWebContextOrNull

public static WebContext getWebContextOrNull()
Returns the current context if it is set and is an instance of WebContext, returns null otherwise.

Returns:

hasInstance

public static boolean hasInstance()
Used to check if an instance is already set since getInstance() will always return a context.

Returns:
true if an instance was set.

isSystemInstance

public static boolean isSystemInstance()

isWebContext

public static boolean isWebContext()
Returns true if the current context is set and is an instance of WebContext. (it might be wrapped in a ContextDecorator)


getSystemContext

public static SystemContext getSystemContext()
Get Magnolia system context. This context has full permissions over all repositories/ workspaces.


doInSystemContext

public static void doInSystemContext(MgnlContext.SystemContextOperation op)
Deprecated. since 4.2 - use the Op interface, which can return values, or extend VoidOp.


doInSystemContext

public static <T,E extends java.lang.Throwable> T doInSystemContext(MgnlContext.Op<T,E> op)
                           throws E extends java.lang.Throwable
Executes the given operation in the system context and sets it back to the original once done (also if an exception is thrown). Also works if there was no context upon calling. (sets it back to null in this case)

Throws:
E extends java.lang.Throwable

doInSystemContext

public static void doInSystemContext(MgnlContext.SystemContextOperation op,
                                     boolean releaseAfterExecution)
Deprecated. since 4.2 - use the Op interface, which can return values, or extend VoidOp.


doInSystemContext

public static <T,E extends java.lang.Throwable> T doInSystemContext(MgnlContext.Op<T,E> op,
                                                                    boolean releaseAfterExecution)
                           throws E extends java.lang.Throwable
Executes the given operation in the system context and sets it back to the original once done (also if an exception is thrown). Also works if there was no context upon calling (sets it back to null in this case)

Parameters:
releaseAfterExecution - TODO document this parameter
Throws:
E extends java.lang.Throwable

initAsWebContext

public static void initAsWebContext(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response,
                                    javax.servlet.ServletContext servletContext)
Sets this context as a web context.

Parameters:
request - HttpServletRequest
response - HttpServletResponse
servletContext - ServletContext instance

release

public static void release()
Releases the current thread (if not a system context) and calls the releaseThread() method of the system context.


push

public static void push(javax.servlet.http.HttpServletRequest request,
                        javax.servlet.http.HttpServletResponse response)

pop

public static void pop()


Copyright © 2003-2010 Magnolia International Ltd.. All Rights Reserved.