<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_04) on Mon Dec 15 08:38:53 PST 2008 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
AbstractContext (Apache Velocity 1.6.1 API)
</TITLE>

<META NAME="date" CONTENT="2008-12-15">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="AbstractContext (Apache Velocity 1.6.1 API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AbstractContext.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../org/apache/velocity/context/ChainedInternalContextAdapter.html" title="class in org.apache.velocity.context"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/velocity/context/AbstractContext.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AbstractContext.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.velocity.context</FONT>
<BR>
Class AbstractContext</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.velocity.context.AbstractContext</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A>, <A HREF="../../../../org/apache/velocity/context/InternalEventContext.html" title="interface in org.apache.velocity.context">InternalEventContext</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/velocity/VelocityContext.html" title="class in org.apache.velocity">VelocityContext</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public abstract class <B>AbstractContext</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></DL>
</PRE>

<P>
This class is the abstract base class for all conventional
  Velocity Context  implementations.  Simply extend this class
  and implement the abstract routines that access your preferred
  storage method.

  Takes care of context chaining.

  Also handles / enforces policy on null keys and values :

  <ul>
  <li> Null keys and values are accepted and basically dropped.
  <li> If you place an object into the context with a null key, it
        will be ignored and logged.
  <li> If you try to place a null into the context with any key, it
        will be dropped and logged.
  </ul>

  The default implementation of this for application use is
  org.apache.velocity.VelocityContext.

  All thanks to Fedor for the chaining idea.
<P>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>$Id: AbstractContext.java 702218 2008-10-06 18:15:18Z nbubna $</DD>
<DT><B>Author:</B></DT>
  <DD><a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>, <a href="mailto:fedor.karpelevitch@home.com">Fedor Karpelevitch</a>, <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></DD>
</DL>
<HR>

<P>

<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#AbstractContext()">AbstractContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default CTOR</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#AbstractContext(org.apache.velocity.context.Context)">AbstractContext</A></B>(<A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A>&nbsp;inner)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chaining constructor accepts a Context argument.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#attachEventCartridge(org.apache.velocity.app.event.EventCartridge)">attachEventCartridge</A></B>(<A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A>&nbsp;ec)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#containsKey(java.lang.Object)">containsKey</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates whether the specified key is in the context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#get(java.lang.String)">get</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value corresponding to the provided key from the context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getAllowRendering()">getAllowRendering</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks to see if rendering should be allowed.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getChainedContext()">getChainedContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns innerContext if one is chained</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getCurrentMacroCallDepth()">getCurrentMacroCallDepth</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the current macro call depth</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getCurrentMacroName()">getCurrentMacroName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the current macro name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/velocity/runtime/resource/Resource.html" title="class in org.apache.velocity.runtime.resource">Resource</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getCurrentResource()">getCurrentResource</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temporary fix to enable #include() to figure out
  current encoding.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getCurrentTemplateName()">getCurrentTemplateName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the current template name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getEventCartridge()">getEventCartridge</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getKeys()">getKeys</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get all the keys for the values in the context</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getMacroLibraries()">getMacroLibraries</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the macro library list for the current template.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getMacroNameStack()">getMacroNameStack</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the current macro name stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#getTemplateNameStack()">getTemplateNameStack</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the current template name stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/velocity/util/introspection/IntrospectionCacheData.html" title="class in org.apache.velocity.util.introspection">IntrospectionCacheData</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#icacheGet(java.lang.Object)">icacheGet</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns an IntrospectionCache Data (@see IntrospectionCacheData)
  object if exists for the key</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#icachePut(java.lang.Object, org.apache.velocity.util.introspection.IntrospectionCacheData)">icachePut</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key,
          <A HREF="../../../../org/apache/velocity/util/introspection/IntrospectionCacheData.html" title="class in org.apache.velocity.util.introspection">IntrospectionCacheData</A>&nbsp;o)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;places an IntrospectionCache Data (@see IntrospectionCacheData)
  element in the cache for specified key</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#internalContainsKey(java.lang.Object)">internalContainsKey</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implement to determine if a key is in the storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#internalGet(java.lang.String)">internalGet</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implement to return a value from the context storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#internalGetKeys()">internalGetKeys</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implement to return an object array of key
  strings from your storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#internalPut(java.lang.String, java.lang.Object)">internalPut</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key,
            <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implement to put a value into the context storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#internalRemove(java.lang.Object)">internalRemove</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I mplement to remove an item from your storage.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#popCurrentMacroName()">popCurrentMacroName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove the current macro name from stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#popCurrentTemplateName()">popCurrentTemplateName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove the current template name from stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#pushCurrentMacroName(java.lang.String)">pushCurrentMacroName</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;s)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set the current macro name on top of stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#pushCurrentTemplateName(java.lang.String)">pushCurrentTemplateName</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;s)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set the current template name on top of stack</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#put(java.lang.String, java.lang.Object)">put</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key,
    <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a name/value pair to the context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the value associated with the specified key from the context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#setAllowRendering(boolean)">setAllowRendering</A></B>(boolean&nbsp;v)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set whether rendering is allowed.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#setCurrentResource(org.apache.velocity.runtime.resource.Resource)">setCurrentResource</A></B>(<A HREF="../../../../org/apache/velocity/runtime/resource/Resource.html" title="class in org.apache.velocity.runtime.resource">Resource</A>&nbsp;r)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/velocity/context/AbstractContext.html#setMacroLibraries(java.util.List)">setMacroLibraries</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&nbsp;macroLibraries)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the macro library list for the current template.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="AbstractContext()"><!-- --></A><H3>
AbstractContext</H3>
<PRE>
public <B>AbstractContext</B>()</PRE>
<DL>
<DD>default CTOR
<P>
</DL>
<HR>

<A NAME="AbstractContext(org.apache.velocity.context.Context)"><!-- --></A><H3>
AbstractContext</H3>
<PRE>
public <B>AbstractContext</B>(<A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A>&nbsp;inner)</PRE>
<DL>
<DD>Chaining constructor accepts a Context argument.
  It will relay get() operations into this Context
  in the even the 'local' get() returns null.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>inner</CODE> - context to be chained</DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="internalGet(java.lang.String)"><!-- --></A><H3>
internalGet</H3>
<PRE>
public abstract <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>internalGet</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</PRE>
<DL>
<DD>Implement to return a value from the context storage.
  <br><br>
  The implementation of this method is required for proper
  operation of a Context implementation in general
  Velocity use.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key whose associated value is to be returned
<DT><B>Returns:</B><DD>object stored in the context</DL>
</DD>
</DL>
<HR>

<A NAME="internalPut(java.lang.String, java.lang.Object)"><!-- --></A><H3>
internalPut</H3>
<PRE>
public abstract <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>internalPut</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key,
                                   <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Implement to put a value into the context storage.
  <br><br>
  The implementation of this method is required for
  proper operation of a Context implementation in
  general Velocity use.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key with which to associate the value<DD><CODE>value</CODE> - value to be associated with the key
<DT><B>Returns:</B><DD>previously stored value if exists, or null</DL>
</DD>
</DL>
<HR>

<A NAME="internalContainsKey(java.lang.Object)"><!-- --></A><H3>
internalContainsKey</H3>
<PRE>
public abstract boolean <B>internalContainsKey</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Implement to determine if a key is in the storage.
  <br><br>
  Currently, this method is not used internally by
  the Velocity engine.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key to test for existance
<DT><B>Returns:</B><DD>true if found, false if not</DL>
</DD>
</DL>
<HR>

<A NAME="internalGetKeys()"><!-- --></A><H3>
internalGetKeys</H3>
<PRE>
public abstract <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>internalGetKeys</B>()</PRE>
<DL>
<DD>Implement to return an object array of key
  strings from your storage.
  <br><br>
  Currently, this method is not used internally by
  the Velocity engine.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>array of keys</DL>
</DD>
</DL>
<HR>

<A NAME="internalRemove(java.lang.Object)"><!-- --></A><H3>
internalRemove</H3>
<PRE>
public abstract <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>internalRemove</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>I mplement to remove an item from your storage.
  <br><br>
  Currently, this method is not used internally by
  the Velocity engine.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key to remove
<DT><B>Returns:</B><DD>object removed if exists, else null</DL>
</DD>
</DL>
<HR>

<A NAME="put(java.lang.String, java.lang.Object)"><!-- --></A><H3>
put</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>put</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key,
                  <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Adds a name/value pair to the context.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/Context.html#put(java.lang.String, java.lang.Object)">put</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The name to key the provided value with.<DD><CODE>value</CODE> - The corresponding value.
<DT><B>Returns:</B><DD>Object that was replaced in the the Context if
         applicable or null if not.</DL>
</DD>
</DL>
<HR>

<A NAME="get(java.lang.String)"><!-- --></A><H3>
get</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>get</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</PRE>
<DL>
<DD>Gets the value corresponding to the provided key from the context.

  Supports the chaining context mechanism.  If the 'local' context
  doesn't have the value, we try to get it from the chained context.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/Context.html#get(java.lang.String)">get</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The name of the desired value.
<DT><B>Returns:</B><DD>The value corresponding to the provided key or null if
             the key param is null.</DL>
</DD>
</DL>
<HR>

<A NAME="containsKey(java.lang.Object)"><!-- --></A><H3>
containsKey</H3>
<PRE>
public boolean <B>containsKey</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Indicates whether the specified key is in the context.  Provided for
  debugging purposes.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/Context.html#containsKey(java.lang.Object)">containsKey</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The key to look for.
<DT><B>Returns:</B><DD>true if the key is in the context, false if not.</DL>
</DD>
</DL>
<HR>

<A NAME="getKeys()"><!-- --></A><H3>
getKeys</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>getKeys</B>()</PRE>
<DL>
<DD>Get all the keys for the values in the context
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/Context.html#getKeys()">getKeys</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Object[] of keys in the Context. Does not return
          keys in chained context.</DL>
</DD>
</DL>
<HR>

<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Removes the value associated with the specified key from the context.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/Context.html#remove(java.lang.Object)">remove</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - The name of the value to remove.
<DT><B>Returns:</B><DD>The value that the key was mapped to, or <code>null</code>
            if unmapped.</DL>
</DD>
</DL>
<HR>

<A NAME="getChainedContext()"><!-- --></A><H3>
getChainedContext</H3>
<PRE>
public <A HREF="../../../../org/apache/velocity/context/Context.html" title="interface in org.apache.velocity.context">Context</A> <B>getChainedContext</B>()</PRE>
<DL>
<DD>returns innerContext if one is chained
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Context if chained, <code>null</code> if not</DL>
</DD>
</DL>
<HR>

<A NAME="pushCurrentTemplateName(java.lang.String)"><!-- --></A><H3>
pushCurrentTemplateName</H3>
<PRE>
public void <B>pushCurrentTemplateName</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;s)</PRE>
<DL>
<DD>set the current template name on top of stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>s</CODE> - current template name</DL>
</DD>
</DL>
<HR>

<A NAME="popCurrentTemplateName()"><!-- --></A><H3>
popCurrentTemplateName</H3>
<PRE>
public void <B>popCurrentTemplateName</B>()</PRE>
<DL>
<DD>remove the current template name from stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentTemplateName()"><!-- --></A><H3>
getCurrentTemplateName</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getCurrentTemplateName</B>()</PRE>
<DL>
<DD>get the current template name
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>String current template name</DL>
</DD>
</DL>
<HR>

<A NAME="getTemplateNameStack()"><!-- --></A><H3>
getTemplateNameStack</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>getTemplateNameStack</B>()</PRE>
<DL>
<DD>get the current template name stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Object[] with the template name stack contents.</DL>
</DD>
</DL>
<HR>

<A NAME="pushCurrentMacroName(java.lang.String)"><!-- --></A><H3>
pushCurrentMacroName</H3>
<PRE>
public void <B>pushCurrentMacroName</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;s)</PRE>
<DL>
<DD>set the current macro name on top of stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>s</CODE> - current macro name</DL>
</DD>
</DL>
<HR>

<A NAME="popCurrentMacroName()"><!-- --></A><H3>
popCurrentMacroName</H3>
<PRE>
public void <B>popCurrentMacroName</B>()</PRE>
<DL>
<DD>remove the current macro name from stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentMacroName()"><!-- --></A><H3>
getCurrentMacroName</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getCurrentMacroName</B>()</PRE>
<DL>
<DD>get the current macro name
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>String current macro name</DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentMacroCallDepth()"><!-- --></A><H3>
getCurrentMacroCallDepth</H3>
<PRE>
public int <B>getCurrentMacroCallDepth</B>()</PRE>
<DL>
<DD>get the current macro call depth
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>int current macro call depth</DL>
</DD>
</DL>
<HR>

<A NAME="getMacroNameStack()"><!-- --></A><H3>
getMacroNameStack</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>[] <B>getMacroNameStack</B>()</PRE>
<DL>
<DD>get the current macro name stack
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Object[] with the macro name stack contents.</DL>
</DD>
</DL>
<HR>

<A NAME="icacheGet(java.lang.Object)"><!-- --></A><H3>
icacheGet</H3>
<PRE>
public <A HREF="../../../../org/apache/velocity/util/introspection/IntrospectionCacheData.html" title="class in org.apache.velocity.util.introspection">IntrospectionCacheData</A> <B>icacheGet</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>returns an IntrospectionCache Data (@see IntrospectionCacheData)
  object if exists for the key
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key to find in cache
<DT><B>Returns:</B><DD>cache object</DL>
</DD>
</DL>
<HR>

<A NAME="icachePut(java.lang.Object, org.apache.velocity.util.introspection.IntrospectionCacheData)"><!-- --></A><H3>
icachePut</H3>
<PRE>
public void <B>icachePut</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;key,
                      <A HREF="../../../../org/apache/velocity/util/introspection/IntrospectionCacheData.html" title="class in org.apache.velocity.util.introspection">IntrospectionCacheData</A>&nbsp;o)</PRE>
<DL>
<DD>places an IntrospectionCache Data (@see IntrospectionCacheData)
  element in the cache for specified key
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - key<DD><CODE>o</CODE> - IntrospectionCacheData object to place in cache</DL>
</DD>
</DL>
<HR>

<A NAME="setCurrentResource(org.apache.velocity.runtime.resource.Resource)"><!-- --></A><H3>
setCurrentResource</H3>
<PRE>
public void <B>setCurrentResource</B>(<A HREF="../../../../org/apache/velocity/runtime/resource/Resource.html" title="class in org.apache.velocity.runtime.resource">Resource</A>&nbsp;r)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.setCurrentResource(org.apache.velocity.runtime.resource.Resource)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentResource()"><!-- --></A><H3>
getCurrentResource</H3>
<PRE>
public <A HREF="../../../../org/apache/velocity/runtime/resource/Resource.html" title="class in org.apache.velocity.runtime.resource">Resource</A> <B>getCurrentResource</B>()</PRE>
<DL>
<DD>temporary fix to enable #include() to figure out
  current encoding.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The current resource.<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.getCurrentResource()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getAllowRendering()"><!-- --></A><H3>
getAllowRendering</H3>
<PRE>
public boolean <B>getAllowRendering</B>()</PRE>
<DL>
<DD>Checks to see if rendering should be allowed.  Defaults to true but will
 return false after a #stop directive.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if rendering is allowed, false if no rendering should occur<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.getAllowRendering()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setAllowRendering(boolean)"><!-- --></A><H3>
setAllowRendering</H3>
<PRE>
public void <B>setAllowRendering</B>(boolean&nbsp;v)</PRE>
<DL>
<DD>Set whether rendering is allowed.  Defaults to true but is set to
 false after a #stop directive.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.setAllowRendering(boolean)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="setMacroLibraries(java.util.List)"><!-- --></A><H3>
setMacroLibraries</H3>
<PRE>
public void <B>setMacroLibraries</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&nbsp;macroLibraries)</PRE>
<DL>
<DD>Set the macro library list for the current template.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>macroLibraries</CODE> - list of macro libraries to set<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.setMacroLibraries(List)</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getMacroLibraries()"><!-- --></A><H3>
getMacroLibraries</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A> <B>getMacroLibraries</B>()</PRE>
<DL>
<DD>Get the macro library list for the current template.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>List of macro library names<DT><B>See Also:</B><DD><CODE>InternalHousekeepingContext.getMacroLibraries()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="attachEventCartridge(org.apache.velocity.app.event.EventCartridge)"><!-- --></A><H3>
attachEventCartridge</H3>
<PRE>
public <A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A> <B>attachEventCartridge</B>(<A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A>&nbsp;ec)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html#attachEventCartridge(org.apache.velocity.app.event.EventCartridge)">attachEventCartridge</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html" title="interface in org.apache.velocity.context">InternalEventContext</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The old EventCartridge.<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html#attachEventCartridge(org.apache.velocity.app.event.EventCartridge)"><CODE>InternalEventContext.attachEventCartridge(org.apache.velocity.app.event.EventCartridge)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getEventCartridge()"><!-- --></A><H3>
getEventCartridge</H3>
<PRE>
public <A HREF="../../../../org/apache/velocity/app/event/EventCartridge.html" title="class in org.apache.velocity.app.event">EventCartridge</A> <B>getEventCartridge</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html#getEventCartridge()">getEventCartridge</A></CODE> in interface <CODE><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html" title="interface in org.apache.velocity.context">InternalEventContext</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>The current EventCartridge.<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/velocity/context/InternalEventContext.html#getEventCartridge()"><CODE>InternalEventContext.getEventCartridge()</CODE></A></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AbstractContext.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../org/apache/velocity/context/ChainedInternalContextAdapter.html" title="class in org.apache.velocity.context"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/velocity/context/AbstractContext.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AbstractContext.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2000-2008 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
