Package org.apache.velocity.context

# Class InternalContextAdapterImpl

java.lang.Object
org.apache.velocity.context.InternalContextAdapterImpl

All Implemented Interfaces:
  `Context`, `InternalContextAdapter`, `InternalEventContext`, `InternalWrapperContext`

public final class InternalContextAdapterImpl extends Object implements InternalContextAdapter
This adapter class is the container for all context types for internal use. The AST now uses this class rather than the app-level Context interface to allow flexibility in the future. Currently, we have two context interfaces which must be supported :

- Context : used for application/template data access
- InternalHousekeepingContext : used for internal housekeeping and caching
- InternalWrapperContext : used for getting root cache context and other such.
- InternalEventContext : for event handling.

This class implements the two interfaces to ensure that all methods are supported. When adding to the interfaces, or adding more context functionality, the interface is the primary definition, so alter that first and then all classes as necessary. As of this writing, this would be the only class affected by changes to InternalContext This class ensures that an InternalContextBase is available for internal use. If an application constructs their own Context-implementing object w/o subclassing AbstractContext, it may be that support for InternalContext is not available. Therefore, InternalContextAdapter will create an InternalContextBase if necessary for this support. Note that if this is necessary, internal information such as node-cache data will be lost from use to use of the context. This may or may not be important, depending upon application.

Version:
  $Id$
Author:
  Geir Magnusson Jr.

## Constructor Summary

Constructors
Constructor
Description
`InternalContextAdapterImpl(Context c)`
CTOR takes a Context and wraps it, delegating all 'data' calls to it.

## Method Summary

Modifier and Type
Method
Description
`EventCartridge`
`attachEventCartridge(EventCartridge ec)`
`boolean`
`containsKey(String key)`
Indicates whether the specified key is in the context.
`Object`
`get(String key)`
Gets the value corresponding to the provided key from the context.
`InternalContextAdapter`
`getBaseContext()`
Returns the base context that we are wrapping.
`int`
`getCurrentMacroCallDepth()`
`String`
`getCurrentMacroName()`
`Resource`
`getCurrentResource()`
`String`
`getCurrentTemplateName()`
`EventCartridge`
`getEventCartridge()`
`Context`
`getInternalUserContext()`
returns the user data context that we are wrapping
`String[]`
`getKeys()`
Get all the keys for the values in the context.
`List<Template>`
`getMacroLibraries()`
`String[]`
`getMacroNameStack()`
`String[]`
`getTemplateNameStack()`
`IntrospectionCacheData`
`icacheGet(Object key)`
`void`
`icachePut(Object key, IntrospectionCacheData o)`
`void`
`popCurrentMacroName()`
`void`
`popCurrentTemplateName()`
`void`
`pushCurrentMacroName(String s)`
`void`
`pushCurrentTemplateName(String s)`
`Object`
`put(String key, Object value)`
Adds a name/value pair to the context.
`Object`
`remove(String key)`
Removes the value associated with the specified key from the context.
`void`
`setCurrentResource(Resource r)`
`void`
`setMacroLibraries(List<Template> macroLibraries)`

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

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

## Constructor Details

### InternalContextAdapterImpl

public InternalContextAdapterImpl(Context c)
CTOR takes a Context and wraps it, delegating all 'data' calls to it. For support of internal contexts, it will create an InternalContextBase if need be.

Parameters:
  `c` -

## Method Details

### pushCurrentTemplateName

public void pushCurrentTemplateName(String s)

See Also:
  - `InternalHousekeepingContext.pushCurrentTemplateName(java.lang.String)`

### popCurrentTemplateName

public void popCurrentTemplateName()

See Also:
  - `InternalHousekeepingContext.popCurrentTemplateName()`

### getCurrentTemplateName

public String getCurrentTemplateName()

See Also:
  - `InternalHousekeepingContext.getCurrentTemplateName()`

### getTemplateNameStack

public String[] getTemplateNameStack()

See Also:
  - `InternalHousekeepingContext.getTemplateNameStack()`

### pushCurrentMacroName

public void pushCurrentMacroName(String s)

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.pushCurrentMacroName(java.lang.String)`

### popCurrentMacroName

public void popCurrentMacroName()

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.popCurrentMacroName()`

### getCurrentMacroName

public String getCurrentMacroName()

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.getCurrentMacroName()`

### getCurrentMacroCallDepth

public int getCurrentMacroCallDepth()

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.getCurrentMacroCallDepth()`

### getMacroNameStack

public String[] getMacroNameStack()

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.getMacroNameStack()`

### icacheGet

public IntrospectionCacheData icacheGet(Object key)

See Also:
  - `InternalHousekeepingContext.icacheGet(java.lang.Object)`

### icachePut

public void icachePut(Object key, IntrospectionCacheData o)

See Also:
  - `InternalHousekeepingContext.icachePut(java.lang.Object, org.apache.velocity.util.introspection.IntrospectionCacheData)`

### 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)

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

### getMacroLibraries

public List<Template> getMacroLibraries()

Since:
  1.6
See Also:
  - `InternalHousekeepingContext.getMacroLibraries()`

### put

public Object put(String key, Object value)
Description copied from interface: `Context`
Adds a name/value pair to the context.

Specified by:
  `put` in interface `Context`
Specified by:
  `put` in interface `InternalWrapperContext`
Parameters:
  `key` - The name to key the provided value with.
  `value` - The corresponding value.
Returns:
  The old object or null if there was no old object.
See Also:
  - `Context.put(java.lang.String, java.lang.Object)`

### get

public Object get(String key)
Description copied from interface: `Context`
Gets the value corresponding to the provided key from the context.

Specified by:
  `get` in interface `Context`
Specified by:
  `get` in interface `InternalWrapperContext`
Parameters:
  `key` - The name of the desired value.
Returns:
  The value corresponding to the provided key.
See Also:
  - `Context.get(java.lang.String)`

### containsKey

public boolean containsKey(String key)
Description copied from interface: `Context`
Indicates whether the specified key is in the context.

Specified by:
  `containsKey` in interface `Context`
Specified by:
  `containsKey` in interface `InternalWrapperContext`
Parameters:
  `key` - The key to look for.
Returns:
  Whether the key is in the context.
See Also:
  - `Context.containsKey(java.lang.String)`

### getKeys

public String[] getKeys()
Description copied from interface: `Context`
Get all the keys for the values in the context.

Specified by:
  `getKeys` in interface `Context`
Returns:
  All the keys for the values in the context.
See Also:
  - `Context.getKeys()`

### remove

public Object remove(String key)
Description copied from interface: `Context`
Removes the value associated with the specified key from the context.

Specified by:
  `remove` in interface `Context`
Parameters:
  `key` - The name of the value to remove.
Returns:
  The value that the key was mapped to, or `null` if unmapped.
See Also:
  - `Context.remove(java.lang.String)`

### getInternalUserContext

public Context getInternalUserContext()
returns the user data context that we are wrapping

Specified by:
  `getInternalUserContext` in interface `InternalWrapperContext`
Returns:
  The internal user data context.

### getBaseContext

public InternalContextAdapter getBaseContext()
Returns the base context that we are wrapping. Here, its this, but for other thing like VM related context contortions, it can be something else

Specified by:
  `getBaseContext` in interface `InternalWrapperContext`
Returns:
  The base context.

### 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()`