<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>RuntimeSingleton xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/velocity/runtime/RuntimeSingleton.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.runtime;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <em class="jxr_comment">/*</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> * under the License.    </em>
<a name="20" href="#20">20</a>  <em class="jxr_comment"> */</em>
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.Reader;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.collections.ExtendedProperties;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.Template;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.app.event.EventCartridge;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.ParseErrorException;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.ResourceNotFoundException;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.directive.Directive;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.log.Log;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.ParseException;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.node.SimpleNode;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.resource.ContentResource;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.introspection.Introspector;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.introspection.Uberspect;
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment">/**</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * This is the Runtime system for Velocity. It is the</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * single access point for all functionality in Velocity.</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * It adheres to the mediator pattern and is the only</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * structure that developers need to be familiar with</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * in order to get Velocity to perform.</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> *</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * The Runtime will also cooperate with external</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * systems like Turbine. Runtime properties can</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * set and then the Runtime is initialized.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> *</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * Turbine for example knows where the templates</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * are to be loaded from, and where the velocity</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * log file should be placed.</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> *</em>
<a name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * So in the case of Velocity cooperating with Turbine</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * the code might look something like the following:</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> *</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * RuntimeSingleton.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatePath);</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * RuntimeSingleton.setProperty(RuntimeConstants.RUNTIME_LOG, pathToVelocityLog);</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * RuntimeSingleton.init();</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> *</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * -----------------------------------------------------------------------</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * N O T E S  O N  R U N T I M E  I N I T I A L I Z A T I O N</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * -----------------------------------------------------------------------</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * RuntimeSingleton.init()</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> *</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment"> * If Runtime.init() is called by itself the Runtime will</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment"> * initialize with a set of default values.</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment"> * -----------------------------------------------------------------------</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment"> * RuntimeSingleton.init(String/Properties)</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment"> *</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment"> * In this case the default velocity properties are layed down</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment"> * first to provide a solid base, then any properties provided</em>
<a name="75" href="#75">75</a>  <em class="jxr_javadoccomment"> * in the given properties object will override the corresponding</em>
<a name="76" href="#76">76</a>  <em class="jxr_javadoccomment"> * default property.</em>
<a name="77" href="#77">77</a>  <em class="jxr_javadoccomment"> * -----------------------------------------------------------------------</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment"> *</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:jvanzyl@apache.org" target="alexandria_uri">mailto:jvanzyl@apache.org</a>"&gt;Jason van Zyl&lt;/a&gt;</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:jlb@houseofdistraction.com" target="alexandria_uri">mailto:jlb@houseofdistraction.com</a>"&gt;Jeff Bowden&lt;/a&gt;</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:geirm@optonline.net" target="alexandria_uri">mailto:geirm@optonline.net</a>"&gt;Geir Magusson Jr.&lt;/a&gt;</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:dlr@finemaltcoding.com" target="alexandria_uri">mailto:dlr@finemaltcoding.com</a>"&gt;Daniel Rall&lt;/a&gt;</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment"> *</em>
<a name="85" href="#85">85</a>  <em class="jxr_javadoccomment"> * @see org.apache.velocity.runtime.RuntimeInstance</em>
<a name="86" href="#86">86</a>  <em class="jxr_javadoccomment"> *</em>
<a name="87" href="#87">87</a>  <em class="jxr_javadoccomment"> * @version $Id: RuntimeSingleton.java 463298 2006-10-12 16:10:32Z henning $</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment"> */</em>
<a name="89" href="#89">89</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/velocity/runtime/RuntimeSingleton.html">RuntimeSingleton</a> implements <a href="../../../../org/apache/velocity/runtime/RuntimeConstants.html">RuntimeConstants</a>
<a name="90" href="#90">90</a>  {
<a name="91" href="#91">91</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/RuntimeInstance.html">RuntimeInstance</a> ri = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/velocity/runtime/RuntimeInstance.html">RuntimeInstance</a>();
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>      <em class="jxr_javadoccomment">/**</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     * This is the primary initialization method in the Velocity</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * Runtime. The systems that are setup/initialized here are</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * as follows:</em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     *</em>
<a name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     * &lt;ul&gt;</em>
<a name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     *   &lt;li&gt;Logging System&lt;/li&gt;</em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;ResourceManager&lt;/li&gt;</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;Event Handlers&lt;/li&gt;</em>
<a name="102" href="#102">102</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;Parser Pool&lt;/li&gt;</em>
<a name="103" href="#103">103</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;Global Cache&lt;/li&gt;</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;Static Content Include System&lt;/li&gt;</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     *   &lt;li&gt;Velocimacro System&lt;/li&gt;</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * &lt;/ul&gt;</em>
<a name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * @throws Exception When an error occured during initialization.</em>
<a name="108" href="#108">108</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#init()</em>
<a name="109" href="#109">109</a> <em class="jxr_javadoccomment">     */</em>
<a name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> init()
<a name="111" href="#111">111</a>         <strong class="jxr_keyword">throws</strong> Exception
<a name="112" href="#112">112</a>     {
<a name="113" href="#113">113</a>         ri.init();
<a name="114" href="#114">114</a>     }
<a name="115" href="#115">115</a> 
<a name="116" href="#116">116</a>     <em class="jxr_javadoccomment">/**</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * Returns true if the RuntimeInstance has been successfully initialized.</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * @return True if the RuntimeInstance has been successfully initialized.</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#isInitialized()</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">     */</em>
<a name="121" href="#121">121</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isInitialized()
<a name="122" href="#122">122</a>     {
<a name="123" href="#123">123</a>         <strong class="jxr_keyword">return</strong> ri.isInitialized();
<a name="124" href="#124">124</a>     }
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>     <em class="jxr_javadoccomment">/**</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">     * Returns the RuntimeServices Instance used by this wrapper.</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">     *</em>
<a name="129" href="#129">129</a> <em class="jxr_javadoccomment">     * @return The RuntimeServices Instance used by this wrapper.</em>
<a name="130" href="#130">130</a> <em class="jxr_javadoccomment">     */</em>
<a name="131" href="#131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> getRuntimeServices()
<a name="132" href="#132">132</a>     {
<a name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> ri;
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a> 
<a name="137" href="#137">137</a>     <em class="jxr_javadoccomment">/**</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     * Allows an external system to set a property in</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * the Velocity Runtime.</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">     *</em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">     * @param key property key</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     * @param  value property value</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#setProperty(String, Object)</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">     */</em>
<a name="145" href="#145">145</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setProperty(String key, Object value)
<a name="146" href="#146">146</a>     {
<a name="147" href="#147">147</a>         ri.setProperty( key, value );
<a name="148" href="#148">148</a>     }
<a name="149" href="#149">149</a> 
<a name="150" href="#150">150</a>     <em class="jxr_javadoccomment">/**</em>
<a name="151" href="#151">151</a> <em class="jxr_javadoccomment">     * Allow an external system to set an ExtendedProperties</em>
<a name="152" href="#152">152</a> <em class="jxr_javadoccomment">     * object to use. This is useful where the external</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     * system also uses the ExtendedProperties class and</em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">     * the velocity configuration is a subset of</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * parent application's configuration. This is</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">     * the case with Turbine.</em>
<a name="157" href="#157">157</a> <em class="jxr_javadoccomment">     *</em>
<a name="158" href="#158">158</a> <em class="jxr_javadoccomment">     * @param configuration</em>
<a name="159" href="#159">159</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#setConfiguration(ExtendedProperties)</em>
<a name="160" href="#160">160</a> <em class="jxr_javadoccomment">     */</em>
<a name="161" href="#161">161</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setConfiguration( ExtendedProperties configuration)
<a name="162" href="#162">162</a>     {
<a name="163" href="#163">163</a>         ri.setConfiguration( configuration );
<a name="164" href="#164">164</a>     }
<a name="165" href="#165">165</a> 
<a name="166" href="#166">166</a>     <em class="jxr_javadoccomment">/**</em>
<a name="167" href="#167">167</a> <em class="jxr_javadoccomment">     * Add a property to the configuration. If it already</em>
<a name="168" href="#168">168</a> <em class="jxr_javadoccomment">     * exists then the value stated here will be added</em>
<a name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * to the configuration entry. For example, if</em>
<a name="170" href="#170">170</a> <em class="jxr_javadoccomment">     *</em>
<a name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * resource.loader = file</em>
<a name="172" href="#172">172</a> <em class="jxr_javadoccomment">     *</em>
<a name="173" href="#173">173</a> <em class="jxr_javadoccomment">     * is already present in the configuration and you</em>
<a name="174" href="#174">174</a> <em class="jxr_javadoccomment">     *</em>
<a name="175" href="#175">175</a> <em class="jxr_javadoccomment">     * addProperty("resource.loader", "classpath")</em>
<a name="176" href="#176">176</a> <em class="jxr_javadoccomment">     *</em>
<a name="177" href="#177">177</a> <em class="jxr_javadoccomment">     * Then you will end up with a Vector like the</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * following:</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">     *</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * ["file", "classpath"]</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     *</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     * @param key</em>
<a name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * @param value</em>
<a name="184" href="#184">184</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#addProperty(String, Object)</em>
<a name="185" href="#185">185</a> <em class="jxr_javadoccomment">     */</em>
<a name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> addProperty(String key, Object value)
<a name="187" href="#187">187</a>     {
<a name="188" href="#188">188</a>         ri.addProperty( key, value );
<a name="189" href="#189">189</a>     }
<a name="190" href="#190">190</a> 
<a name="191" href="#191">191</a>     <em class="jxr_javadoccomment">/**</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * Clear the values pertaining to a particular</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * property.</em>
<a name="194" href="#194">194</a> <em class="jxr_javadoccomment">     *</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">     * @param key of property to clear</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#clearProperty(String)</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">     */</em>
<a name="198" href="#198">198</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> clearProperty(String key)
<a name="199" href="#199">199</a>     {
<a name="200" href="#200">200</a>         ri.clearProperty( key );
<a name="201" href="#201">201</a>     }
<a name="202" href="#202">202</a> 
<a name="203" href="#203">203</a>     <em class="jxr_javadoccomment">/**</em>
<a name="204" href="#204">204</a> <em class="jxr_javadoccomment">     *  Allows an external caller to get a property.  The calling</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     *  routine is required to know the type, as this routine</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">     *  will return an Object, as that is what properties can be.</em>
<a name="207" href="#207">207</a> <em class="jxr_javadoccomment">     *</em>
<a name="208" href="#208">208</a> <em class="jxr_javadoccomment">     *  @param key property to return</em>
<a name="209" href="#209">209</a> <em class="jxr_javadoccomment">     *  @return Value of the property or null if it does not exist.</em>
<a name="210" href="#210">210</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getProperty(String)</em>
<a name="211" href="#211">211</a> <em class="jxr_javadoccomment">     */</em>
<a name="212" href="#212">212</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object getProperty( String key )
<a name="213" href="#213">213</a>     {
<a name="214" href="#214">214</a>         <strong class="jxr_keyword">return</strong> ri.getProperty( key );
<a name="215" href="#215">215</a>     }
<a name="216" href="#216">216</a> 
<a name="217" href="#217">217</a>     <em class="jxr_javadoccomment">/**</em>
<a name="218" href="#218">218</a> <em class="jxr_javadoccomment">     * Initialize the Velocity Runtime with a Properties</em>
<a name="219" href="#219">219</a> <em class="jxr_javadoccomment">     * object.</em>
<a name="220" href="#220">220</a> <em class="jxr_javadoccomment">     *</em>
<a name="221" href="#221">221</a> <em class="jxr_javadoccomment">     * @param p</em>
<a name="222" href="#222">222</a> <em class="jxr_javadoccomment">     * @throws Exception When an error occurs during initialization.</em>
<a name="223" href="#223">223</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#init(Properties)</em>
<a name="224" href="#224">224</a> <em class="jxr_javadoccomment">     */</em>
<a name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> init(Properties p) <strong class="jxr_keyword">throws</strong> Exception
<a name="226" href="#226">226</a>     {
<a name="227" href="#227">227</a>         ri.init(p);
<a name="228" href="#228">228</a>     }
<a name="229" href="#229">229</a> 
<a name="230" href="#230">230</a>     <em class="jxr_javadoccomment">/**</em>
<a name="231" href="#231">231</a> <em class="jxr_javadoccomment">     * Initialize the Velocity Runtime with the name of</em>
<a name="232" href="#232">232</a> <em class="jxr_javadoccomment">     * ExtendedProperties object.</em>
<a name="233" href="#233">233</a> <em class="jxr_javadoccomment">     *</em>
<a name="234" href="#234">234</a> <em class="jxr_javadoccomment">     * @param configurationFile</em>
<a name="235" href="#235">235</a> <em class="jxr_javadoccomment">     * @throws Exception When an error occurs during initialization.</em>
<a name="236" href="#236">236</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#init(String)</em>
<a name="237" href="#237">237</a> <em class="jxr_javadoccomment">     */</em>
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> init(String configurationFile)
<a name="239" href="#239">239</a>         <strong class="jxr_keyword">throws</strong> Exception
<a name="240" href="#240">240</a>     {
<a name="241" href="#241">241</a>         ri.init( configurationFile );
<a name="242" href="#242">242</a>     }
<a name="243" href="#243">243</a> 
<a name="244" href="#244">244</a>     <em class="jxr_javadoccomment">/**</em>
<a name="245" href="#245">245</a> <em class="jxr_javadoccomment">     * Parse the input and return the root of</em>
<a name="246" href="#246">246</a> <em class="jxr_javadoccomment">     * AST node structure.</em>
<a name="247" href="#247">247</a> <em class="jxr_javadoccomment">     * &lt;br&gt;&lt;br&gt;</em>
<a name="248" href="#248">248</a> <em class="jxr_javadoccomment">     *  In the event that it runs out of parsers in the</em>
<a name="249" href="#249">249</a> <em class="jxr_javadoccomment">     *  pool, it will create and let them be GC'd</em>
<a name="250" href="#250">250</a> <em class="jxr_javadoccomment">     *  dynamically, logging that it has to do that.  This</em>
<a name="251" href="#251">251</a> <em class="jxr_javadoccomment">     *  is considered an exceptional condition.  It is</em>
<a name="252" href="#252">252</a> <em class="jxr_javadoccomment">     *  expected that the user will set the</em>
<a name="253" href="#253">253</a> <em class="jxr_javadoccomment">     *  PARSER_POOL_SIZE property appropriately for their</em>
<a name="254" href="#254">254</a> <em class="jxr_javadoccomment">     *  application.  We will revisit this.</em>
<a name="255" href="#255">255</a> <em class="jxr_javadoccomment">     *</em>
<a name="256" href="#256">256</a> <em class="jxr_javadoccomment">     * @param reader Reader retrieved by a resource loader</em>
<a name="257" href="#257">257</a> <em class="jxr_javadoccomment">     * @param templateName name of the template being parsed</em>
<a name="258" href="#258">258</a> <em class="jxr_javadoccomment">     * @return A root node representing the template as an AST tree.</em>
<a name="259" href="#259">259</a> <em class="jxr_javadoccomment">     * @throws ParseException When the template could not be parsed.</em>
<a name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#parse(Reader, String)</em>
<a name="261" href="#261">261</a> <em class="jxr_javadoccomment">     */</em>
<a name="262" href="#262">262</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/parser/node/SimpleNode.html">SimpleNode</a> parse( Reader reader, String templateName )
<a name="263" href="#263">263</a>         <strong class="jxr_keyword">throws</strong> <a href="../../../../org/apache/velocity/runtime/parser/ParseException.html">ParseException</a>
<a name="264" href="#264">264</a>     {
<a name="265" href="#265">265</a>         <strong class="jxr_keyword">return</strong> ri.parse( reader, templateName );
<a name="266" href="#266">266</a>     }
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>     <em class="jxr_javadoccomment">/**</em>
<a name="269" href="#269">269</a> <em class="jxr_javadoccomment">     *  Parse the input and return the root of the AST node structure.</em>
<a name="270" href="#270">270</a> <em class="jxr_javadoccomment">     *</em>
<a name="271" href="#271">271</a> <em class="jxr_javadoccomment">     * @param reader Reader retrieved by a resource loader</em>
<a name="272" href="#272">272</a> <em class="jxr_javadoccomment">     * @param templateName name of the template being parsed</em>
<a name="273" href="#273">273</a> <em class="jxr_javadoccomment">     * @param dumpNamespace flag to dump the Velocimacro namespace for this template</em>
<a name="274" href="#274">274</a> <em class="jxr_javadoccomment">     * @return A root node representing the template as an AST tree.</em>
<a name="275" href="#275">275</a> <em class="jxr_javadoccomment">     * @throws ParseException When the template could not be parsed.</em>
<a name="276" href="#276">276</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#parse(Reader, String, boolean)</em>
<a name="277" href="#277">277</a> <em class="jxr_javadoccomment">     */</em>
<a name="278" href="#278">278</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/parser/node/SimpleNode.html">SimpleNode</a> parse( Reader reader, String templateName, <strong class="jxr_keyword">boolean</strong> dumpNamespace )
<a name="279" href="#279">279</a>         <strong class="jxr_keyword">throws</strong> <a href="../../../../org/apache/velocity/runtime/parser/ParseException.html">ParseException</a>
<a name="280" href="#280">280</a>     {
<a name="281" href="#281">281</a>         <strong class="jxr_keyword">return</strong> ri.parse( reader, templateName, dumpNamespace );
<a name="282" href="#282">282</a>     }
<a name="283" href="#283">283</a> 
<a name="284" href="#284">284</a> 
<a name="285" href="#285">285</a>     <em class="jxr_javadoccomment">/**</em>
<a name="286" href="#286">286</a> <em class="jxr_javadoccomment">     * Returns a &lt;code&gt;Template&lt;/code&gt; from the resource manager.</em>
<a name="287" href="#287">287</a> <em class="jxr_javadoccomment">     * This method assumes that the character encoding of the</em>
<a name="288" href="#288">288</a> <em class="jxr_javadoccomment">     * template is set by the &lt;code&gt;input.encoding&lt;/code&gt;</em>
<a name="289" href="#289">289</a> <em class="jxr_javadoccomment">     * property.  The default is "ISO-8859-1"</em>
<a name="290" href="#290">290</a> <em class="jxr_javadoccomment">     *</em>
<a name="291" href="#291">291</a> <em class="jxr_javadoccomment">     * @param name The file name of the desired template.</em>
<a name="292" href="#292">292</a> <em class="jxr_javadoccomment">     * @return     The template.</em>
<a name="293" href="#293">293</a> <em class="jxr_javadoccomment">     * @throws ResourceNotFoundException if template not found</em>
<a name="294" href="#294">294</a> <em class="jxr_javadoccomment">     *          from any available source.</em>
<a name="295" href="#295">295</a> <em class="jxr_javadoccomment">     * @throws ParseErrorException if template cannot be parsed due</em>
<a name="296" href="#296">296</a> <em class="jxr_javadoccomment">     *          to syntax (or other) error.</em>
<a name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * @throws Exception if an error occurs in template initialization</em>
<a name="298" href="#298">298</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getTemplate(String)</em>
<a name="299" href="#299">299</a> <em class="jxr_javadoccomment">     */</em>
<a name="300" href="#300">300</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/Template.html">Template</a> getTemplate(String name)
<a name="301" href="#301">301</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException, ParseErrorException, Exception
<a name="302" href="#302">302</a>     {
<a name="303" href="#303">303</a>         <strong class="jxr_keyword">return</strong> ri.getTemplate( name );
<a name="304" href="#304">304</a>     }
<a name="305" href="#305">305</a> 
<a name="306" href="#306">306</a>     <em class="jxr_javadoccomment">/**</em>
<a name="307" href="#307">307</a> <em class="jxr_javadoccomment">     * Returns a &lt;code&gt;Template&lt;/code&gt; from the resource manager</em>
<a name="308" href="#308">308</a> <em class="jxr_javadoccomment">     *</em>
<a name="309" href="#309">309</a> <em class="jxr_javadoccomment">     * @param name The  name of the desired template.</em>
<a name="310" href="#310">310</a> <em class="jxr_javadoccomment">     * @param encoding Character encoding of the template</em>
<a name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * @return     The template.</em>
<a name="312" href="#312">312</a> <em class="jxr_javadoccomment">     * @throws ResourceNotFoundException if template not found</em>
<a name="313" href="#313">313</a> <em class="jxr_javadoccomment">     *          from any available source.</em>
<a name="314" href="#314">314</a> <em class="jxr_javadoccomment">     * @throws ParseErrorException if template cannot be parsed due</em>
<a name="315" href="#315">315</a> <em class="jxr_javadoccomment">     *          to syntax (or other) error.</em>
<a name="316" href="#316">316</a> <em class="jxr_javadoccomment">     * @throws Exception if an error occurs in template initialization</em>
<a name="317" href="#317">317</a> <em class="jxr_javadoccomment">     * @throws ParseErrorException When the template could not be parsed.</em>
<a name="318" href="#318">318</a> <em class="jxr_javadoccomment">     * @throws Exception Any other error.</em>
<a name="319" href="#319">319</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getTemplate(String, String)</em>
<a name="320" href="#320">320</a> <em class="jxr_javadoccomment">     */</em>
<a name="321" href="#321">321</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/Template.html">Template</a> getTemplate(String name, String  encoding)
<a name="322" href="#322">322</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException, ParseErrorException, Exception
<a name="323" href="#323">323</a>     {
<a name="324" href="#324">324</a>         <strong class="jxr_keyword">return</strong> ri.getTemplate( name, encoding );
<a name="325" href="#325">325</a>     }
<a name="326" href="#326">326</a> 
<a name="327" href="#327">327</a>     <em class="jxr_javadoccomment">/**</em>
<a name="328" href="#328">328</a> <em class="jxr_javadoccomment">     * Returns a static content resource from the</em>
<a name="329" href="#329">329</a> <em class="jxr_javadoccomment">     * resource manager.  Uses the current value</em>
<a name="330" href="#330">330</a> <em class="jxr_javadoccomment">     * if INPUT_ENCODING as the character encoding.</em>
<a name="331" href="#331">331</a> <em class="jxr_javadoccomment">     *</em>
<a name="332" href="#332">332</a> <em class="jxr_javadoccomment">     * @param name Name of content resource to get</em>
<a name="333" href="#333">333</a> <em class="jxr_javadoccomment">     * @return parsed ContentResource object ready for use</em>
<a name="334" href="#334">334</a> <em class="jxr_javadoccomment">     * @throws ResourceNotFoundException if template not found</em>
<a name="335" href="#335">335</a> <em class="jxr_javadoccomment">     *          from any available source.</em>
<a name="336" href="#336">336</a> <em class="jxr_javadoccomment">     * @throws ParseErrorException When the template could not be parsed.</em>
<a name="337" href="#337">337</a> <em class="jxr_javadoccomment">     * @throws Exception Any other error.</em>
<a name="338" href="#338">338</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getContent(String)</em>
<a name="339" href="#339">339</a> <em class="jxr_javadoccomment">     */</em>
<a name="340" href="#340">340</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/resource/ContentResource.html">ContentResource</a> getContent(String name)
<a name="341" href="#341">341</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException, ParseErrorException, Exception
<a name="342" href="#342">342</a>     {
<a name="343" href="#343">343</a>         <strong class="jxr_keyword">return</strong> ri.getContent( name );
<a name="344" href="#344">344</a>     }
<a name="345" href="#345">345</a> 
<a name="346" href="#346">346</a>     <em class="jxr_javadoccomment">/**</em>
<a name="347" href="#347">347</a> <em class="jxr_javadoccomment">     * Returns a static content resource from the</em>
<a name="348" href="#348">348</a> <em class="jxr_javadoccomment">     * resource manager.</em>
<a name="349" href="#349">349</a> <em class="jxr_javadoccomment">     *</em>
<a name="350" href="#350">350</a> <em class="jxr_javadoccomment">     * @param name Name of content resource to get</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">     * @param encoding Character encoding to use</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">     * @return parsed ContentResource object ready for use</em>
<a name="353" href="#353">353</a> <em class="jxr_javadoccomment">     * @throws ResourceNotFoundException if template not found</em>
<a name="354" href="#354">354</a> <em class="jxr_javadoccomment">     *          from any available source.</em>
<a name="355" href="#355">355</a> <em class="jxr_javadoccomment">     * @throws ParseErrorException When the template could not be parsed.</em>
<a name="356" href="#356">356</a> <em class="jxr_javadoccomment">     * @throws Exception Any other error.</em>
<a name="357" href="#357">357</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getContent(String, String)</em>
<a name="358" href="#358">358</a> <em class="jxr_javadoccomment">     */</em>
<a name="359" href="#359">359</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/resource/ContentResource.html">ContentResource</a> getContent( String name, String encoding )
<a name="360" href="#360">360</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException, ParseErrorException, Exception
<a name="361" href="#361">361</a>     {
<a name="362" href="#362">362</a>         <strong class="jxr_keyword">return</strong> ri.getContent( name, encoding );
<a name="363" href="#363">363</a>     }
<a name="364" href="#364">364</a> 
<a name="365" href="#365">365</a> 
<a name="366" href="#366">366</a>     <em class="jxr_javadoccomment">/**</em>
<a name="367" href="#367">367</a> <em class="jxr_javadoccomment">     *  Determines is a template exists, and returns name of the loader that</em>
<a name="368" href="#368">368</a> <em class="jxr_javadoccomment">     *  provides it.  This is a slightly less hokey way to support</em>
<a name="369" href="#369">369</a> <em class="jxr_javadoccomment">     *  the Velocity.templateExists() utility method, which was broken</em>
<a name="370" href="#370">370</a> <em class="jxr_javadoccomment">     *  when per-template encoding was introduced.  We can revisit this.</em>
<a name="371" href="#371">371</a> <em class="jxr_javadoccomment">     *</em>
<a name="372" href="#372">372</a> <em class="jxr_javadoccomment">     *  @param resourceName Name of template or content resource</em>
<a name="373" href="#373">373</a> <em class="jxr_javadoccomment">     *  @return class name of loader than can provide it</em>
<a name="374" href="#374">374</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getLoaderNameForResource(String)</em>
<a name="375" href="#375">375</a> <em class="jxr_javadoccomment">     */</em>
<a name="376" href="#376">376</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getLoaderNameForResource( String resourceName )
<a name="377" href="#377">377</a>     {
<a name="378" href="#378">378</a>         <strong class="jxr_keyword">return</strong> ri.getLoaderNameForResource( resourceName );
<a name="379" href="#379">379</a>     }
<a name="380" href="#380">380</a> 
<a name="381" href="#381">381</a> 
<a name="382" href="#382">382</a>     <em class="jxr_javadoccomment">/**</em>
<a name="383" href="#383">383</a> <em class="jxr_javadoccomment">     * Returns a convenient Log instance that wraps the current LogChute.</em>
<a name="384" href="#384">384</a> <em class="jxr_javadoccomment">     *</em>
<a name="385" href="#385">385</a> <em class="jxr_javadoccomment">     * @return A convenience Log instance that wraps the current LogChute.</em>
<a name="386" href="#386">386</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getLog()</em>
<a name="387" href="#387">387</a> <em class="jxr_javadoccomment">     */</em>
<a name="388" href="#388">388</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/log/Log.html">Log</a> getLog()
<a name="389" href="#389">389</a>     {
<a name="390" href="#390">390</a>         <strong class="jxr_keyword">return</strong> ri.getLog();
<a name="391" href="#391">391</a>     }
<a name="392" href="#392">392</a> 
<a name="393" href="#393">393</a>     <em class="jxr_javadoccomment">/**</em>
<a name="394" href="#394">394</a> <em class="jxr_javadoccomment">     * @deprecated Use getLog() and call warn() on it.</em>
<a name="395" href="#395">395</a> <em class="jxr_javadoccomment">     * @see Log#warn(Object)</em>
<a name="396" href="#396">396</a> <em class="jxr_javadoccomment">     * @param message The message to log.</em>
<a name="397" href="#397">397</a> <em class="jxr_javadoccomment">     */</em>
<a name="398" href="#398">398</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> warn(Object message)
<a name="399" href="#399">399</a>     {
<a name="400" href="#400">400</a>         getLog().warn(message);
<a name="401" href="#401">401</a>     }
<a name="402" href="#402">402</a> 
<a name="403" href="#403">403</a>     <em class="jxr_javadoccomment">/**</em>
<a name="404" href="#404">404</a> <em class="jxr_javadoccomment">     * @deprecated Use getLog() and call info() on it.</em>
<a name="405" href="#405">405</a> <em class="jxr_javadoccomment">     * @see Log#info(Object)</em>
<a name="406" href="#406">406</a> <em class="jxr_javadoccomment">     * @param message The message to log.</em>
<a name="407" href="#407">407</a> <em class="jxr_javadoccomment">     */</em>
<a name="408" href="#408">408</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> info(Object message)
<a name="409" href="#409">409</a>     {
<a name="410" href="#410">410</a>         getLog().info(message);
<a name="411" href="#411">411</a>     }
<a name="412" href="#412">412</a> 
<a name="413" href="#413">413</a>     <em class="jxr_javadoccomment">/**</em>
<a name="414" href="#414">414</a> <em class="jxr_javadoccomment">     * @deprecated Use getLog() and call error() on it.</em>
<a name="415" href="#415">415</a> <em class="jxr_javadoccomment">     * @see Log#error(Object)</em>
<a name="416" href="#416">416</a> <em class="jxr_javadoccomment">     * @param message The message to log.</em>
<a name="417" href="#417">417</a> <em class="jxr_javadoccomment">     */</em>
<a name="418" href="#418">418</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> error(Object message)
<a name="419" href="#419">419</a>     {
<a name="420" href="#420">420</a>         getLog().error(message);
<a name="421" href="#421">421</a>     }
<a name="422" href="#422">422</a> 
<a name="423" href="#423">423</a>     <em class="jxr_javadoccomment">/**</em>
<a name="424" href="#424">424</a> <em class="jxr_javadoccomment">     * @deprecated Use getLog() and call debug() on it.</em>
<a name="425" href="#425">425</a> <em class="jxr_javadoccomment">     * @see Log#debug(Object)</em>
<a name="426" href="#426">426</a> <em class="jxr_javadoccomment">     * @param message The message to log.</em>
<a name="427" href="#427">427</a> <em class="jxr_javadoccomment">     */</em>
<a name="428" href="#428">428</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> debug(Object message)
<a name="429" href="#429">429</a>     {
<a name="430" href="#430">430</a>         getLog().debug(message);
<a name="431" href="#431">431</a>     }
<a name="432" href="#432">432</a> 
<a name="433" href="#433">433</a>     <em class="jxr_javadoccomment">/**</em>
<a name="434" href="#434">434</a> <em class="jxr_javadoccomment">     * String property accessor method with default to hide the</em>
<a name="435" href="#435">435</a> <em class="jxr_javadoccomment">     * configuration implementation.</em>
<a name="436" href="#436">436</a> <em class="jxr_javadoccomment">     *</em>
<a name="437" href="#437">437</a> <em class="jxr_javadoccomment">     * @param key property key</em>
<a name="438" href="#438">438</a> <em class="jxr_javadoccomment">     * @param defaultValue  default value to return if key not</em>
<a name="439" href="#439">439</a> <em class="jxr_javadoccomment">     *               found in resource manager.</em>
<a name="440" href="#440">440</a> <em class="jxr_javadoccomment">     * @return value of key or default</em>
<a name="441" href="#441">441</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getString(String, String)</em>
<a name="442" href="#442">442</a> <em class="jxr_javadoccomment">     */</em>
<a name="443" href="#443">443</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getString( String key, String defaultValue)
<a name="444" href="#444">444</a>     {
<a name="445" href="#445">445</a>         <strong class="jxr_keyword">return</strong> ri.getString( key, defaultValue );
<a name="446" href="#446">446</a>     }
<a name="447" href="#447">447</a> 
<a name="448" href="#448">448</a>     <em class="jxr_javadoccomment">/**</em>
<a name="449" href="#449">449</a> <em class="jxr_javadoccomment">     * Returns the appropriate VelocimacroProxy object if strVMname</em>
<a name="450" href="#450">450</a> <em class="jxr_javadoccomment">     * is a valid current Velocimacro.</em>
<a name="451" href="#451">451</a> <em class="jxr_javadoccomment">     *</em>
<a name="452" href="#452">452</a> <em class="jxr_javadoccomment">     * @param vmName Name of velocimacro requested</em>
<a name="453" href="#453">453</a> <em class="jxr_javadoccomment">     * @param templateName Name of the template that contains the velocimacro.</em>
<a name="454" href="#454">454</a> <em class="jxr_javadoccomment">     * @return The requested VelocimacroProxy.</em>
<a name="455" href="#455">455</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getVelocimacro(String, String)</em>
<a name="456" href="#456">456</a> <em class="jxr_javadoccomment">     */</em>
<a name="457" href="#457">457</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/directive/Directive.html">Directive</a> getVelocimacro( String vmName, String templateName  )
<a name="458" href="#458">458</a>     {
<a name="459" href="#459">459</a>         <strong class="jxr_keyword">return</strong> ri.getVelocimacro( vmName, templateName );
<a name="460" href="#460">460</a>     }
<a name="461" href="#461">461</a> 
<a name="462" href="#462">462</a>    <em class="jxr_javadoccomment">/**</em>
<a name="463" href="#463">463</a> <em class="jxr_javadoccomment">    * Adds a new Velocimacro. Usually called by Macro only while parsing.</em>
<a name="464" href="#464">464</a> <em class="jxr_javadoccomment">    *</em>
<a name="465" href="#465">465</a> <em class="jxr_javadoccomment">    * @param name Name of velocimacro</em>
<a name="466" href="#466">466</a> <em class="jxr_javadoccomment">    * @param macro String form of macro body</em>
<a name="467" href="#467">467</a> <em class="jxr_javadoccomment">    * @param argArray Array of strings, containing the</em>
<a name="468" href="#468">468</a> <em class="jxr_javadoccomment">    *                         #macro() arguments.  the 0th is the name.</em>
<a name="469" href="#469">469</a> <em class="jxr_javadoccomment">    * @param sourceTemplate Name of the template that contains the velocimacro.</em>
<a name="470" href="#470">470</a> <em class="jxr_javadoccomment">    * @return True if added, false if rejected for some</em>
<a name="471" href="#471">471</a> <em class="jxr_javadoccomment">    *                  reason (either parameters or permission settings)</em>
<a name="472" href="#472">472</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#addVelocimacro(String, String, String[], String)</em>
<a name="473" href="#473">473</a> <em class="jxr_javadoccomment">    */</em>
<a name="474" href="#474">474</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> addVelocimacro( String name,
<a name="475" href="#475">475</a>                                           String macro,
<a name="476" href="#476">476</a>                                           String argArray[],
<a name="477" href="#477">477</a>                                           String sourceTemplate )
<a name="478" href="#478">478</a>     {
<a name="479" href="#479">479</a>         <strong class="jxr_keyword">return</strong> ri.addVelocimacro( name, macro, argArray, sourceTemplate );
<a name="480" href="#480">480</a>     }
<a name="481" href="#481">481</a> 
<a name="482" href="#482">482</a>     <em class="jxr_javadoccomment">/**</em>
<a name="483" href="#483">483</a> <em class="jxr_javadoccomment">     *  Checks to see if a VM exists</em>
<a name="484" href="#484">484</a> <em class="jxr_javadoccomment">     *</em>
<a name="485" href="#485">485</a> <em class="jxr_javadoccomment">     * @param vmName Name of the Velocimacro.</em>
<a name="486" href="#486">486</a> <em class="jxr_javadoccomment">     * @param templateName Template on which to look for the Macro.</em>
<a name="487" href="#487">487</a> <em class="jxr_javadoccomment">     * @return True if VM by that name exists, false if not</em>
<a name="488" href="#488">488</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#isVelocimacro(String, String)</em>
<a name="489" href="#489">489</a> <em class="jxr_javadoccomment">     */</em>
<a name="490" href="#490">490</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isVelocimacro( String vmName, String templateName )
<a name="491" href="#491">491</a>     {
<a name="492" href="#492">492</a>         <strong class="jxr_keyword">return</strong> ri.isVelocimacro( vmName, templateName );
<a name="493" href="#493">493</a>     }
<a name="494" href="#494">494</a> 
<a name="495" href="#495">495</a>     <em class="jxr_javadoccomment">/**</em>
<a name="496" href="#496">496</a> <em class="jxr_javadoccomment">     * tells the vmFactory to dump the specified namespace.  This is to support</em>
<a name="497" href="#497">497</a> <em class="jxr_javadoccomment">     * clearing the VM list when in inline-VM-local-scope mode</em>
<a name="498" href="#498">498</a> <em class="jxr_javadoccomment">     * @param namespace Namespace to dump.</em>
<a name="499" href="#499">499</a> <em class="jxr_javadoccomment">     * @return True if namespace was dumped successfully.</em>
<a name="500" href="#500">500</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#dumpVMNamespace(String)</em>
<a name="501" href="#501">501</a> <em class="jxr_javadoccomment">     */</em>
<a name="502" href="#502">502</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> dumpVMNamespace( String namespace )
<a name="503" href="#503">503</a>     {
<a name="504" href="#504">504</a>         <strong class="jxr_keyword">return</strong> ri.dumpVMNamespace( namespace );
<a name="505" href="#505">505</a>     }
<a name="506" href="#506">506</a> 
<a name="507" href="#507">507</a>     <em class="jxr_comment">/*<em class="jxr_comment"> --------------------------------------------------------------------</em></em>
<a name="508" href="#508">508</a> <em class="jxr_comment">     * R U N T I M E  A C C E S S O R  M E T H O D S</em>
<a name="509" href="#509">509</a> <em class="jxr_comment">     * --------------------------------------------------------------------</em>
<a name="510" href="#510">510</a> <em class="jxr_comment">     * These are the getXXX() methods that are a simple wrapper</em>
<a name="511" href="#511">511</a> <em class="jxr_comment">     * around the configuration object. This is an attempt</em>
<a name="512" href="#512">512</a> <em class="jxr_comment">     * to make a the Velocity Runtime the single access point</em>
<a name="513" href="#513">513</a> <em class="jxr_comment">     * for all things Velocity, and allow the Runtime to</em>
<a name="514" href="#514">514</a> <em class="jxr_comment">     * adhere as closely as possible the the Mediator pattern</em>
<a name="515" href="#515">515</a> <em class="jxr_comment">     * which is the ultimate goal.</em>
<a name="516" href="#516">516</a> <em class="jxr_comment">     * --------------------------------------------------------------------</em>
<a name="517" href="#517">517</a> <em class="jxr_comment">     */</em>
<a name="518" href="#518">518</a> 
<a name="519" href="#519">519</a>     <em class="jxr_javadoccomment">/**</em>
<a name="520" href="#520">520</a> <em class="jxr_javadoccomment">     * String property accessor method to hide the configuration implementation</em>
<a name="521" href="#521">521</a> <em class="jxr_javadoccomment">     * @param key  property key</em>
<a name="522" href="#522">522</a> <em class="jxr_javadoccomment">     * @return   value of key or null</em>
<a name="523" href="#523">523</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getString(String)</em>
<a name="524" href="#524">524</a> <em class="jxr_javadoccomment">     */</em>
<a name="525" href="#525">525</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getString(String key)
<a name="526" href="#526">526</a>     {
<a name="527" href="#527">527</a>         <strong class="jxr_keyword">return</strong> ri.getString( key );
<a name="528" href="#528">528</a>     }
<a name="529" href="#529">529</a> 
<a name="530" href="#530">530</a>     <em class="jxr_javadoccomment">/**</em>
<a name="531" href="#531">531</a> <em class="jxr_javadoccomment">     * Int property accessor method to hide the configuration implementation.</em>
<a name="532" href="#532">532</a> <em class="jxr_javadoccomment">     *</em>
<a name="533" href="#533">533</a> <em class="jxr_javadoccomment">     * @param key Property key</em>
<a name="534" href="#534">534</a> <em class="jxr_javadoccomment">     * @return value</em>
<a name="535" href="#535">535</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getInt(String)</em>
<a name="536" href="#536">536</a> <em class="jxr_javadoccomment">     */</em>
<a name="537" href="#537">537</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> getInt( String key )
<a name="538" href="#538">538</a>     {
<a name="539" href="#539">539</a>         <strong class="jxr_keyword">return</strong> ri.getInt( key );
<a name="540" href="#540">540</a>     }
<a name="541" href="#541">541</a> 
<a name="542" href="#542">542</a>     <em class="jxr_javadoccomment">/**</em>
<a name="543" href="#543">543</a> <em class="jxr_javadoccomment">     * Int property accessor method to hide the configuration implementation.</em>
<a name="544" href="#544">544</a> <em class="jxr_javadoccomment">     *</em>
<a name="545" href="#545">545</a> <em class="jxr_javadoccomment">     * @param key  property key</em>
<a name="546" href="#546">546</a> <em class="jxr_javadoccomment">     * @param defaultValue The default value.</em>
<a name="547" href="#547">547</a> <em class="jxr_javadoccomment">     * @return value</em>
<a name="548" href="#548">548</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getInt(String, int)</em>
<a name="549" href="#549">549</a> <em class="jxr_javadoccomment">     */</em>
<a name="550" href="#550">550</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> getInt( String key, <strong class="jxr_keyword">int</strong> defaultValue )
<a name="551" href="#551">551</a>     {
<a name="552" href="#552">552</a>         <strong class="jxr_keyword">return</strong> ri.getInt( key, defaultValue );
<a name="553" href="#553">553</a>     }
<a name="554" href="#554">554</a> 
<a name="555" href="#555">555</a>     <em class="jxr_javadoccomment">/**</em>
<a name="556" href="#556">556</a> <em class="jxr_javadoccomment">     * Boolean property accessor method to hide the configuration implementation.</em>
<a name="557" href="#557">557</a> <em class="jxr_javadoccomment">     *</em>
<a name="558" href="#558">558</a> <em class="jxr_javadoccomment">     * @param key property key</em>
<a name="559" href="#559">559</a> <em class="jxr_javadoccomment">     * @param def The default value if property not found.</em>
<a name="560" href="#560">560</a> <em class="jxr_javadoccomment">     * @return value of key or default value</em>
<a name="561" href="#561">561</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getBoolean(String, boolean)</em>
<a name="562" href="#562">562</a> <em class="jxr_javadoccomment">     */</em>
<a name="563" href="#563">563</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> getBoolean( String key, <strong class="jxr_keyword">boolean</strong> def )
<a name="564" href="#564">564</a>     {
<a name="565" href="#565">565</a>         <strong class="jxr_keyword">return</strong> ri.getBoolean( key, def );
<a name="566" href="#566">566</a>     }
<a name="567" href="#567">567</a> 
<a name="568" href="#568">568</a>     <em class="jxr_javadoccomment">/**</em>
<a name="569" href="#569">569</a> <em class="jxr_javadoccomment">     * Return the velocity runtime configuration object.</em>
<a name="570" href="#570">570</a> <em class="jxr_javadoccomment">     *</em>
<a name="571" href="#571">571</a> <em class="jxr_javadoccomment">     * @return ExtendedProperties configuration object which houses</em>
<a name="572" href="#572">572</a> <em class="jxr_javadoccomment">     *                       the velocity runtime properties.</em>
<a name="573" href="#573">573</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getConfiguration()</em>
<a name="574" href="#574">574</a> <em class="jxr_javadoccomment">     */</em>
<a name="575" href="#575">575</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> ExtendedProperties getConfiguration()
<a name="576" href="#576">576</a>     {
<a name="577" href="#577">577</a>         <strong class="jxr_keyword">return</strong> ri.getConfiguration();
<a name="578" href="#578">578</a>     }
<a name="579" href="#579">579</a> 
<a name="580" href="#580">580</a>     <em class="jxr_javadoccomment">/**</em>
<a name="581" href="#581">581</a> <em class="jxr_javadoccomment">     *  Return the Introspector for this RuntimeInstance</em>
<a name="582" href="#582">582</a> <em class="jxr_javadoccomment">     *</em>
<a name="583" href="#583">583</a> <em class="jxr_javadoccomment">     *  @return Introspector object for this runtime instance</em>
<a name="584" href="#584">584</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getIntrospector()</em>
<a name="585" href="#585">585</a> <em class="jxr_javadoccomment">     */</em>
<a name="586" href="#586">586</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/util/introspection/Introspector.html">Introspector</a> getIntrospector()
<a name="587" href="#587">587</a>     {
<a name="588" href="#588">588</a>         <strong class="jxr_keyword">return</strong> ri.getIntrospector();
<a name="589" href="#589">589</a>     }
<a name="590" href="#590">590</a> 
<a name="591" href="#591">591</a>     <em class="jxr_javadoccomment">/**</em>
<a name="592" href="#592">592</a> <em class="jxr_javadoccomment">     * Returns the event handlers for the application.</em>
<a name="593" href="#593">593</a> <em class="jxr_javadoccomment">     * @return The event handlers for the application.</em>
<a name="594" href="#594">594</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getApplicationEventCartridge()</em>
<a name="595" href="#595">595</a> <em class="jxr_javadoccomment">     */</em>
<a name="596" href="#596">596</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> getEventCartridge()
<a name="597" href="#597">597</a>      {
<a name="598" href="#598">598</a>          <strong class="jxr_keyword">return</strong> ri.getApplicationEventCartridge();
<a name="599" href="#599">599</a>      }
<a name="600" href="#600">600</a> 
<a name="601" href="#601">601</a>     <em class="jxr_javadoccomment">/**</em>
<a name="602" href="#602">602</a> <em class="jxr_javadoccomment">     *  Gets the application attribute for the given key</em>
<a name="603" href="#603">603</a> <em class="jxr_javadoccomment">     *</em>
<a name="604" href="#604">604</a> <em class="jxr_javadoccomment">     * @see org.apache.velocity.runtime.RuntimeServices#getApplicationAttribute(Object)</em>
<a name="605" href="#605">605</a> <em class="jxr_javadoccomment">     * @param key</em>
<a name="606" href="#606">606</a> <em class="jxr_javadoccomment">     * @return The application attribute for the given key.</em>
<a name="607" href="#607">607</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getApplicationAttribute(Object)</em>
<a name="608" href="#608">608</a> <em class="jxr_javadoccomment">     */</em>
<a name="609" href="#609">609</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object getApplicationAttribute(Object key)
<a name="610" href="#610">610</a>     {
<a name="611" href="#611">611</a>         <strong class="jxr_keyword">return</strong> ri.getApplicationAttribute(key);
<a name="612" href="#612">612</a>     }
<a name="613" href="#613">613</a> 
<a name="614" href="#614">614</a>     <em class="jxr_javadoccomment">/**</em>
<a name="615" href="#615">615</a> <em class="jxr_javadoccomment">     * Returns the Uberspect object for this Instance.</em>
<a name="616" href="#616">616</a> <em class="jxr_javadoccomment">     *</em>
<a name="617" href="#617">617</a> <em class="jxr_javadoccomment">     * @return The Uberspect object for this Instance.</em>
<a name="618" href="#618">618</a> <em class="jxr_javadoccomment">     * @see org.apache.velocity.runtime.RuntimeServices#getUberspect()</em>
<a name="619" href="#619">619</a> <em class="jxr_javadoccomment">     * @see RuntimeInstance#getUberspect()</em>
<a name="620" href="#620">620</a> <em class="jxr_javadoccomment">     */</em>
<a name="621" href="#621">621</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/util/introspection/Uberspect.html">Uberspect</a> getUberspect()
<a name="622" href="#622">622</a>     {
<a name="623" href="#623">623</a>         <strong class="jxr_keyword">return</strong> ri.getUberspect();
<a name="624" href="#624">624</a>     }
<a name="625" href="#625">625</a> 
<a name="626" href="#626">626</a>     <em class="jxr_javadoccomment">/**</em>
<a name="627" href="#627">627</a> <em class="jxr_javadoccomment">     * @deprecated Use getRuntimeServices() instead.</em>
<a name="628" href="#628">628</a> <em class="jxr_javadoccomment">     * @return The RuntimeInstance used by this Singleton.</em>
<a name="629" href="#629">629</a> <em class="jxr_javadoccomment">     */</em>
<a name="630" href="#630">630</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/velocity/runtime/RuntimeInstance.html">RuntimeInstance</a> getRuntimeInstance()
<a name="631" href="#631">631</a>     {
<a name="632" href="#632">632</a>         <strong class="jxr_keyword">return</strong> ri;
<a name="633" href="#633">633</a>     }
<a name="634" href="#634">634</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

