Package org.apache.velocity

# Class VelocityContext

java.lang.Object
org.apache.velocity.context.AbstractContext
org.apache.velocity.VelocityContext

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Context`, `InternalEventContext`

public class VelocityContext extends AbstractContext implements Cloneable, Serializable
General purpose implementation of the application Context interface for general application use. This class should be used in place of the original Context class. This implementation uses a HashMap (@see java.util.HashMap ) for data storage. This context implementation cannot be shared between threads without those threads synchronizing access between them, as the HashMap is not synchronized, nor are some of the fundamentals of AbstractContext. If you need to share a Context between threads with simultaneous access for some reason, please create your own and extend the interface Context

Version:
  $Id$
Author:
  Geir Magnusson Jr., Jason van Zyl, Fedor Karpelevitch, Daniel Rall
See Also:
  - `Context`
  - Serialized Form

## Constructor Summary

Constructors
Constructor
Description
`VelocityContext()`
Creates a new instance (with no inner context).
`VelocityContext(Map<String,Object> context)`
Creates a new instance with the provided storage (and no inner context).
`VelocityContext(Map<String,Object> context, Context innerContext)`
Initializes internal storage (never to `null`), and inner context.
`VelocityContext(Context innerContext)`
Chaining constructor, used when you want to wrap a context in another.

## Method Summary

Modifier and Type
Method
Description
`EventCartridge`
`attachEventCartridge(EventCartridge ec)`
`Object`
`clone()`
Clones this context object.
`int`
`getCurrentMacroCallDepth()`
get the current macro call depth
`String`
`getCurrentMacroName()`
get the current macro name
`Resource`
`getCurrentResource()`
`String`
`getCurrentTemplateName()`
get the current template name
`EventCartridge`
`getEventCartridge()`
`List<Template>`
`getMacroLibraries()`
`String[]`
`getMacroNameStack()`
get the current macro name stack
`String[]`
`getTemplateNameStack()`
get the current template name stack
`IntrospectionCacheData`
`icacheGet(Object key)`
returns an IntrospectionCache Data (@see IntrospectionCacheData) object if exists for the key
`void`
`icachePut(Object key, IntrospectionCacheData o)`
places an IntrospectionCache Data (@see IntrospectionCacheData) element in the cache for specified key
`boolean`
`internalContainsKey(String key)`
determines if there is a value for the given key
`Object`
`internalGet(String key)`
retrieves value for key from internal storage
`String[]`
`internalGetKeys()`
returns array of keys
`Object`
`internalPut(String key, Object value)`
stores the value for key to internal storage
`Object`
`internalRemove(String key)`
remove a key/value pair from the internal storage
`void`
`popCurrentMacroName()`
remove the current macro name from stack
`void`
`popCurrentTemplateName()`
remove the current template name from stack
`void`
`pushCurrentMacroName(String s)`
set the current macro name on top of stack
`void`
`pushCurrentTemplateName(String s)`
set the current template name on top of stack
`void`
`setCurrentResource(Resource r)`
`void`
`setMacroLibraries(List<Template> macroLibraries)`

### Methods inherited from class org.apache.velocity.context.AbstractContext

`containsKey, get, getChainedContext, getKeys, put, remove`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### VelocityContext

public VelocityContext()
Creates a new instance (with no inner context).

### VelocityContext

public VelocityContext(Map<String,Object> context)
Creates a new instance with the provided storage (and no inner context).

Parameters:
  `context` -

### VelocityContext

public VelocityContext(Context innerContext)
Chaining constructor, used when you want to wrap a context in another. The inner context will be 'read only' - put() calls to the wrapping context will only effect the outermost context

Parameters:
  `innerContext` - The `Context` implementation to wrap.

### VelocityContext

public VelocityContext(Map<String,Object> context, Context innerContext)
Initializes internal storage (never to `null`), and inner context.

Parameters:
  `context` - Internal storage, or `null` to create default storage.
  `innerContext` - Inner context.

## Method Details

### internalGet

public Object internalGet(String key)
retrieves value for key from internal storage

Specified by:
  `internalGet` in class `AbstractContext`
Parameters:
  `key` - name of value to get
Returns:
  value as object

### internalPut

public Object internalPut(String key, Object value)
stores the value for key to internal storage

Specified by:
  `internalPut` in class `AbstractContext`
Parameters:
  `key` - name of value to store
  `value` - value to store
Returns:
  previous value of key as Object

### internalContainsKey

public boolean internalContainsKey(String key)
determines if there is a value for the given key

Specified by:
  `internalContainsKey` in class `AbstractContext`
Parameters:
  `key` - name of value to check
Returns:
  true if non-null value in store

### internalGetKeys

public String[] internalGetKeys()
returns array of keys

Specified by:
  `internalGetKeys` in class `AbstractContext`
Returns:
  keys as []

### internalRemove

public Object internalRemove(String key)
remove a key/value pair from the internal storage

Specified by:
  `internalRemove` in class `AbstractContext`
Parameters:
  `key` - name of value to remove
Returns:
  value removed

### clone

public Object clone()
Clones this context object.

Overrides:
  `clone` in class `Object`
Returns:
  A shallow copy of this `Context`.

### pushCurrentTemplateName

public void pushCurrentTemplateName(String s)
set the current template name on top of stack

Parameters:
  `s` - current template name

### popCurrentTemplateName

public void popCurrentTemplateName()
remove the current template name from stack

### getCurrentTemplateName

public String getCurrentTemplateName()
get the current template name

Returns:
  String current template name

### getTemplateNameStack

public String[] getTemplateNameStack()
get the current template name stack

Returns:
  String[] with the template name stack contents.

### pushCurrentMacroName

public void pushCurrentMacroName(String s)
set the current macro name on top of stack

Parameters:
  `s` - current macro name

### popCurrentMacroName

public void popCurrentMacroName()
remove the current macro name from stack

### getCurrentMacroName

public String getCurrentMacroName()
get the current macro name

Returns:
  String current macro name

### getCurrentMacroCallDepth

public int getCurrentMacroCallDepth()
get the current macro call depth

Returns:
  int current macro call depth

### getMacroNameStack

public String[] getMacroNameStack()
get the current macro name stack

Returns:
  String[] with the macro name stack contents.

### icacheGet

public IntrospectionCacheData icacheGet(Object key)
returns an IntrospectionCache Data (@see IntrospectionCacheData) object if exists for the key

Parameters:
  `key` - key to find in cache
Returns:
  cache object

### icachePut

public void icachePut(Object key, IntrospectionCacheData o)
places an IntrospectionCache Data (@see IntrospectionCacheData) element in the cache for specified key

Parameters:
  `key` - key
  `o` - IntrospectionCacheData object to place in cache

### setCurrentResource

public void setCurrentResource(Resource r)

See Also:
  - `InternalHousekeepingContext.setCurrentResource(org.apache.velocity.runtime.resource.Resource)`

### getCurrentResource

public Resource getCurrentResource()

See Also:
  - `InternalHousekeepingContext.getCurrentResource()`

### setMacroLibraries

public void setMacroLibraries(List<Template> macroLibraries)

See Also:
  - `InternalHousekeepingContext.setMacroLibraries(List)`

### getMacroLibraries

public List<Template> getMacroLibraries()

See Also:
  - `InternalHousekeepingContext.getMacroLibraries()`

### attachEventCartridge

public EventCartridge attachEventCartridge(EventCartridge ec)

Specified by:
  `attachEventCartridge` in interface `InternalEventContext`
Parameters:
  `ec` -
Returns:
  The old EventCartridge.
See Also:
  - `InternalEventContext.attachEventCartridge(org.apache.velocity.app.event.EventCartridge)`

### getEventCartridge

public EventCartridge getEventCartridge()

Specified by:
  `getEventCartridge` in interface `InternalEventContext`
Returns:
  The current EventCartridge.
See Also:
  - `InternalEventContext.getEventCartridge()`