org.apache.velocity.context

Class InternalContextAdapterImpl

Implemented Interfaces:
Context, InternalContextAdapter, InternalEventContext, InternalHousekeepingContext, InternalWrapperContext

public final class InternalContextAdapterImpl
extends java.lang.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 : 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: InternalContextAdapterImpl.java,v 1.8 2001/05/20 19:44:34 geirm Exp $

Author:
Geir Magnusson Jr.

Nested Class Summary

Field Summary

(package private) Context
context
the user data Context that we are wrapping
(package private) InternalHousekeepingContext
icb
the ICB we are wrapping.
(package private) InternalEventContext
iec
The InternalEventContext that we are wrapping.

Constructor Summary

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

Method Summary

EventCartridge
attachEventCartridge(EventCartridge ec)
boolean
containsKey(Object 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.
Resource
getCurrentResource()
temporary fix to enable #include() to figure out current encoding.
String
getCurrentTemplateName()
get the current template name
EventCartridge
getEventCartridge()
Context
getInternalUserContext()
returns the user data context that we are wrapping
Object[]
getKeys()
Get all the keys for the values in the context
Object[]
getTemplateNameStack()
Returns the template name stack in form of an array.
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
void
popCurrentTemplateName()
remove the current template name from stack
void
pushCurrentTemplateName(String s)
set the current template name on top of stack
Object
put(String key, Object value)
Adds a name/value pair to the context.
Object
remove(Object key)
Removes the value associated with the specified key from the context.
void
setCurrentResource(Resource r)

Field Details

context

(package private)  Context context
the user data Context that we are wrapping


icb

(package private)  InternalHousekeepingContext icb
the ICB we are wrapping. We may need to make one if the user data context implementation doesn't support one. The default AbstractContext-derived VelocityContext does, and it's recommended that people derive new contexts from AbstractContext rather than piecing things together


iec

(package private)  InternalEventContext iec
The InternalEventContext that we are wrapping. If the context passed to us doesn't support it, no biggie. We don't make it for them - since its a user context thing, nothing gained by making one for them now

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.

Method Details

attachEventCartridge

public EventCartridge attachEventCartridge(EventCartridge ec)
Specified by:
attachEventCartridge in interface InternalEventContext


containsKey

public boolean containsKey(Object key)
Indicates whether the specified key is in the context.
Specified by:
containsKey in interface Context

Parameters:
key - The key to look for.

Returns:
Whether the key is in the context.


get

public Object get(String key)
Gets the value corresponding to the provided key from the context.
Specified by:
get in interface Context

Parameters:
key - The name of the desired value.

Returns:
The value corresponding to the provided key.


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


getCurrentResource

public Resource getCurrentResource()
temporary fix to enable #include() to figure out current encoding.
Specified by:
getCurrentResource in interface InternalHousekeepingContext


getCurrentTemplateName

public String getCurrentTemplateName()
get the current template name
Specified by:
getCurrentTemplateName in interface InternalHousekeepingContext

Returns:
String current template name


getEventCartridge

public EventCartridge getEventCartridge()
Specified by:
getEventCartridge in interface InternalEventContext


getInternalUserContext

public Context getInternalUserContext()
returns the user data context that we are wrapping
Specified by:
getInternalUserContext in interface InternalWrapperContext


getKeys

public Object[] getKeys()
Get all the keys for the values in the context
Specified by:
getKeys in interface Context


getTemplateNameStack

public Object[] getTemplateNameStack()
Returns the template name stack in form of an array.
Specified by:
getTemplateNameStack in interface InternalHousekeepingContext

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


icacheGet

public IntrospectionCacheData icacheGet(Object key)
returns an IntrospectionCache Data (@see IntrospectionCacheData) object if exists for the key
Specified by:
icacheGet in interface InternalHousekeepingContext

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
Specified by:
icachePut in interface InternalHousekeepingContext

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


popCurrentTemplateName

public void popCurrentTemplateName()
remove the current template name from stack
Specified by:
popCurrentTemplateName in interface InternalHousekeepingContext


pushCurrentTemplateName

public void pushCurrentTemplateName(String s)
set the current template name on top of stack
Specified by:
pushCurrentTemplateName in interface InternalHousekeepingContext

Parameters:
s - current template name


put

public Object put(String key,
                  Object value)
Adds a name/value pair to the context.
Specified by:
put in interface Context

Parameters:
key - The name to key the provided value with.
value - The corresponding value.


remove

public Object remove(Object key)
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.


setCurrentResource

public void setCurrentResource(Resource r)
Specified by:
setCurrentResource in interface InternalHousekeepingContext


Copyright © 2003 Apache Software Foundation. All Rights Reserved.