<!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>ResourceManagerImpl xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/velocity/runtime/resource/ResourceManagerImpl.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.runtime.resource;
<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.IOException;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Vector;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.collections.ExtendedProperties;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.ParseErrorException;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.ResourceNotFoundException;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.RuntimeConstants;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.RuntimeServices;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.log.Log;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.resource.loader.ResourceLoader;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.resource.loader.ResourceLoaderFactory;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.ClassUtils;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.StringUtils;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>  
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">/**</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * Class to manage the text resource for the Velocity Runtime.</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> *</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * @author  &lt;a href="<a href="mailto:wglass@forio.com" target="alexandria_uri">mailto:wglass@forio.com</a>"&gt;Will Glass-Husain&lt;/a&gt;</em>
<a name="45" href="#45">45</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="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * @author  &lt;a href="<a href="mailto:paulo.gaspar@krankikom.de" target="alexandria_uri">mailto:paulo.gaspar@krankikom.de</a>"&gt;Paulo Gaspar&lt;/a&gt;</em>
<a name="47" href="#47">47</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 Magnusson Jr.&lt;/a&gt;</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * @author  &lt;a href="<a href="mailto:henning@apache.org" target="alexandria_uri">mailto:henning@apache.org</a>"&gt;Henning P. Schmiedehausen&lt;/a&gt;</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * @version  $Id: ResourceManagerImpl.java 490011 2006-12-24 12:19:09Z henning $</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> */</em>
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/velocity/runtime/resource/ResourceManagerImpl.html">ResourceManagerImpl</a>
<a name="52" href="#52">52</a>      implements <a href="../../../../../org/apache/velocity/runtime/resource/ResourceManager.html">ResourceManager</a>
<a name="53" href="#53">53</a>  {
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> A template resources. */</em>
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> RESOURCE_TEMPLATE = 1;
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> A static content resource. */</em>
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> RESOURCE_CONTENT = 2;
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> token used to identify the loader internally. */</em>
<a name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String RESOURCE_LOADER_IDENTIFIER = <span class="jxr_string">"_RESOURCE_LOADER_IDENTIFIER_"</span>;
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Object implementing <a href="../../../../../org/apache/velocity/runtime/resource/ResourceCache.html">ResourceCache</a> to be our resource manager's <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> cache. */</em>
<a name="65" href="#65">65</a>      <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/velocity/runtime/resource/ResourceCache.html">ResourceCache</a> globalCache = <strong class="jxr_keyword">null</strong>;
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The List of templateLoaders that the <a href="../../../../../org/apache/velocity/runtime/Runtime.html">Runtime</a> will use to locate the InputStream source of a template. */</em>
<a name="68" href="#68">68</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> List resourceLoaders = <strong class="jxr_keyword">new</strong> ArrayList();
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>      <em class="jxr_javadoccomment">/**</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * This is a list of the template input stream source initializers, basically properties for a particular template stream</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * source. The order in this list reflects numbering of the properties i.e.</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     *</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     * &lt;p&gt;&amp;lt;loader-id&amp;gt;.resource.loader.&amp;lt;property&amp;gt; = &amp;lt;value&amp;gt;&lt;/p&gt;</em>
<a name="75" href="#75">75</a>  <em class="jxr_javadoccomment">     */</em>
<a name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List sourceInitializerList = <strong class="jxr_keyword">new</strong> ArrayList();
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>      <em class="jxr_javadoccomment">/**</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     * Has this Manager been initialized?</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     */</em>
<a name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isInit = false;
<a name="82" href="#82">82</a>  
<a name="83" href="#83">83</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> switch to turn off log notice when a resource is found for the first time. */</em>
<a name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> logWhenFound = <strong class="jxr_keyword">true</strong>;
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The internal <a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> object. */</em>
<a name="87" href="#87">87</a>      <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc = <strong class="jxr_keyword">null</strong>;
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Logging. */</em>
<a name="90" href="#90">90</a>      <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/velocity/runtime/log/Log.html">Log</a> log = <strong class="jxr_keyword">null</strong>;
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>      <em class="jxr_javadoccomment">/**</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * Initialize the ResourceManager.</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     *</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * @param  rsvc  The Runtime Services object which is associated with this Resource Manager.</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     *</em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     * @throws  Exception</em>
<a name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     */</em>
<a name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> initialize(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc)
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">throws</strong> Exception
<a name="101" href="#101">101</a>     {
<a name="102" href="#102">102</a> 	<strong class="jxr_keyword">if</strong> (isInit)
<a name="103" href="#103">103</a> 	{
<a name="104" href="#104">104</a> 	    log.warn(<span class="jxr_string">"Re-initialization of ResourceLoader attempted!"</span>);
<a name="105" href="#105">105</a> 	    <strong class="jxr_keyword">return</strong>;
<a name="106" href="#106">106</a> 	}
<a name="107" href="#107">107</a> 	
<a name="108" href="#108">108</a>         <a href="../../../../../org/apache/velocity/runtime/resource/loader/ResourceLoader.html">ResourceLoader</a> resourceLoader = <strong class="jxr_keyword">null</strong>;
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>         <strong class="jxr_keyword">this</strong>.rsvc = rsvc;
<a name="111" href="#111">111</a>         log = rsvc.getLog();
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>         log.debug(<span class="jxr_string">"Default ResourceManager initializing. ("</span> + <strong class="jxr_keyword">this</strong>.getClass() + <span class="jxr_string">")"</span>);
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a>         assembleResourceLoaderInitializers();
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>         <strong class="jxr_keyword">for</strong> (Iterator it = sourceInitializerList.iterator(); it.hasNext();)
<a name="118" href="#118">118</a>         {
<a name="119" href="#119">119</a>             <em class="jxr_javadoccomment">/**</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">             * Resource loader can be loaded either via class name or be passed</em>
<a name="121" href="#121">121</a> <em class="jxr_javadoccomment">             * in as an instance.</em>
<a name="122" href="#122">122</a> <em class="jxr_javadoccomment">             */</em>
<a name="123" href="#123">123</a>             ExtendedProperties configuration = (ExtendedProperties) it.next();
<a name="124" href="#124">124</a> 
<a name="125" href="#125">125</a>             String loaderClass = StringUtils.nullTrim(configuration.getString(<span class="jxr_string">"class"</span>));
<a name="126" href="#126">126</a>             <a href="../../../../../org/apache/velocity/runtime/resource/loader/ResourceLoader.html">ResourceLoader</a> loaderInstance = (ResourceLoader) configuration.get(<span class="jxr_string">"instance"</span>);
<a name="127" href="#127">127</a> 
<a name="128" href="#128">128</a>             <strong class="jxr_keyword">if</strong> (loaderInstance != <strong class="jxr_keyword">null</strong>)
<a name="129" href="#129">129</a>             {
<a name="130" href="#130">130</a>                 resourceLoader = loaderInstance;
<a name="131" href="#131">131</a>             }
<a name="132" href="#132">132</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (loaderClass != <strong class="jxr_keyword">null</strong>)
<a name="133" href="#133">133</a>             {
<a name="134" href="#134">134</a>                 resourceLoader = ResourceLoaderFactory.getLoader(rsvc, loaderClass);
<a name="135" href="#135">135</a>             }
<a name="136" href="#136">136</a>             <strong class="jxr_keyword">else</strong>
<a name="137" href="#137">137</a>             {
<a name="138" href="#138">138</a>                 log.error(<span class="jxr_string">"Unable to find '"</span> +
<a name="139" href="#139">139</a>                           configuration.getString(RESOURCE_LOADER_IDENTIFIER) +
<a name="140" href="#140">140</a>                           <span class="jxr_string">".resource.loader.class' specification in configuration."</span> +
<a name="141" href="#141">141</a>                           <span class="jxr_string">" This is a critical value.  Please adjust configuration."</span>);
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>                 <strong class="jxr_keyword">continue</strong>; <em class="jxr_comment">// for(...</em>
<a name="144" href="#144">144</a>             }
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>             resourceLoader.commonInit(rsvc, configuration);
<a name="147" href="#147">147</a>             resourceLoader.init(configuration);
<a name="148" href="#148">148</a>             resourceLoaders.add(resourceLoader);
<a name="149" href="#149">149</a>         }
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>         <em class="jxr_comment">/*</em>
<a name="152" href="#152">152</a> <em class="jxr_comment">         * now see if this is overridden by configuration</em>
<a name="153" href="#153">153</a> <em class="jxr_comment">         */</em>
<a name="154" href="#154">154</a> 
<a name="155" href="#155">155</a>         logWhenFound = rsvc.getBoolean(RuntimeConstants.RESOURCE_MANAGER_LOGWHENFOUND, <strong class="jxr_keyword">true</strong>);
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>         <em class="jxr_comment">/*</em>
<a name="158" href="#158">158</a> <em class="jxr_comment">         *  now, is a global cache specified?</em>
<a name="159" href="#159">159</a> <em class="jxr_comment">         */</em>
<a name="160" href="#160">160</a> 
<a name="161" href="#161">161</a>         String cacheClassName = rsvc.getString(RuntimeConstants.RESOURCE_MANAGER_CACHE_CLASS);
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>         Object cacheObject = <strong class="jxr_keyword">null</strong>;
<a name="164" href="#164">164</a> 
<a name="165" href="#165">165</a>         <strong class="jxr_keyword">if</strong> (org.apache.commons.lang.StringUtils.isNotEmpty(cacheClassName))
<a name="166" href="#166">166</a>         {
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>             <strong class="jxr_keyword">try</strong>
<a name="169" href="#169">169</a>             {
<a name="170" href="#170">170</a>                 cacheObject = ClassUtils.getNewInstance(cacheClassName);
<a name="171" href="#171">171</a>             }
<a name="172" href="#172">172</a>             <strong class="jxr_keyword">catch</strong> (ClassNotFoundException cnfe)
<a name="173" href="#173">173</a>             {
<a name="174" href="#174">174</a>                 log.error(<span class="jxr_string">"The specified class for ResourceCache ("</span> + cacheClassName +
<a name="175" href="#175">175</a>                           <span class="jxr_string">") does not exist or is not accessible to the current classloader."</span>);
<a name="176" href="#176">176</a>                 cacheObject = <strong class="jxr_keyword">null</strong>;
<a name="177" href="#177">177</a>             }
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>             <strong class="jxr_keyword">if</strong> (!(cacheObject instanceof ResourceCache))
<a name="180" href="#180">180</a>             {
<a name="181" href="#181">181</a>                 log.error(<span class="jxr_string">"The specified class for ResourceCache ("</span> + cacheClassName +
<a name="182" href="#182">182</a>                           <span class="jxr_string">") does not implement "</span> + ResourceCache.<strong class="jxr_keyword">class</strong>.getName() +
<a name="183" href="#183">183</a>                           <span class="jxr_string">" ResourceManager. Using default ResourceCache implementation."</span>);
<a name="184" href="#184">184</a>                 cacheObject = <strong class="jxr_keyword">null</strong>;
<a name="185" href="#185">185</a>             }
<a name="186" href="#186">186</a>         }
<a name="187" href="#187">187</a> 
<a name="188" href="#188">188</a>         <em class="jxr_comment">/*</em>
<a name="189" href="#189">189</a> <em class="jxr_comment">         *  if we didn't get through that, just use the default.</em>
<a name="190" href="#190">190</a> <em class="jxr_comment">         */</em>
<a name="191" href="#191">191</a>         <strong class="jxr_keyword">if</strong> (cacheObject == <strong class="jxr_keyword">null</strong>)
<a name="192" href="#192">192</a>         {
<a name="193" href="#193">193</a>             cacheObject = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/velocity/runtime/resource/ResourceCacheImpl.html">ResourceCacheImpl</a>();
<a name="194" href="#194">194</a>         }
<a name="195" href="#195">195</a> 
<a name="196" href="#196">196</a>         globalCache = (ResourceCache) cacheObject;
<a name="197" href="#197">197</a> 
<a name="198" href="#198">198</a>         globalCache.initialize(rsvc);
<a name="199" href="#199">199</a> 
<a name="200" href="#200">200</a>         log.trace(<span class="jxr_string">"Default ResourceManager initialization complete."</span>);
<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">     * This will produce a List of Hashtables, each hashtable contains the intialization info for a particular resource loader. This</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     * Hashtable will be passed in when initializing the the template loader.</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">     */</em>
<a name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> assembleResourceLoaderInitializers()
<a name="208" href="#208">208</a>     {
<a name="209" href="#209">209</a>         Vector resourceLoaderNames = rsvc.getConfiguration().getVector(RuntimeConstants.RESOURCE_LOADER);
<a name="210" href="#210">210</a>         StringUtils.trimStrings(resourceLoaderNames);
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>         <strong class="jxr_keyword">for</strong> (Iterator it = resourceLoaderNames.iterator(); it.hasNext(); )
<a name="213" href="#213">213</a>         {
<a name="214" href="#214">214</a> 
<a name="215" href="#215">215</a>             <em class="jxr_comment">/*</em>
<a name="216" href="#216">216</a> <em class="jxr_comment">             * The loader id might look something like the following:</em>
<a name="217" href="#217">217</a> <em class="jxr_comment">             *</em>
<a name="218" href="#218">218</a> <em class="jxr_comment">             * file.resource.loader</em>
<a name="219" href="#219">219</a> <em class="jxr_comment">             *</em>
<a name="220" href="#220">220</a> <em class="jxr_comment">             * The loader id is the prefix used for all properties</em>
<a name="221" href="#221">221</a> <em class="jxr_comment">             * pertaining to a particular loader.</em>
<a name="222" href="#222">222</a> <em class="jxr_comment">             */</em>
<a name="223" href="#223">223</a>             String loaderName = (String) it.next();
<a name="224" href="#224">224</a>             StringBuffer loaderID = <strong class="jxr_keyword">new</strong> StringBuffer(loaderName);
<a name="225" href="#225">225</a>             loaderID.append(<span class="jxr_string">"."</span>).append(RuntimeConstants.RESOURCE_LOADER);
<a name="226" href="#226">226</a> 
<a name="227" href="#227">227</a>             ExtendedProperties loaderConfiguration = 
<a name="228" href="#228">228</a>         		rsvc.getConfiguration().subset(loaderID.toString());
<a name="229" href="#229">229</a> 
<a name="230" href="#230">230</a>             <em class="jxr_comment">/*</em>
<a name="231" href="#231">231</a> <em class="jxr_comment">             *  we can't really count on ExtendedProperties to give us an empty set</em>
<a name="232" href="#232">232</a> <em class="jxr_comment">             */</em>
<a name="233" href="#233">233</a> 
<a name="234" href="#234">234</a>             <strong class="jxr_keyword">if</strong> (loaderConfiguration == <strong class="jxr_keyword">null</strong>)
<a name="235" href="#235">235</a>             {
<a name="236" href="#236">236</a>                 log.warn(<span class="jxr_string">"ResourceManager : No configuration information for resource loader named '"</span> +
<a name="237" href="#237">237</a>                          loaderName + <span class="jxr_string">"'. Skipping."</span>);
<a name="238" href="#238">238</a> 
<a name="239" href="#239">239</a>                 <strong class="jxr_keyword">continue</strong>;
<a name="240" href="#240">240</a>             }
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>             <em class="jxr_comment">/*</em>
<a name="243" href="#243">243</a> <em class="jxr_comment">             *  add the loader name token to the initializer if we need it</em>
<a name="244" href="#244">244</a> <em class="jxr_comment">             *  for reference later. We can't count on the user to fill</em>
<a name="245" href="#245">245</a> <em class="jxr_comment">             *  in the 'name' field</em>
<a name="246" href="#246">246</a> <em class="jxr_comment">             */</em>
<a name="247" href="#247">247</a> 
<a name="248" href="#248">248</a>             loaderConfiguration.setProperty(RESOURCE_LOADER_IDENTIFIER, loaderName);
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>             <em class="jxr_comment">/*</em>
<a name="251" href="#251">251</a> <em class="jxr_comment">             * Add resources to the list of resource loader</em>
<a name="252" href="#252">252</a> <em class="jxr_comment">             * initializers.</em>
<a name="253" href="#253">253</a> <em class="jxr_comment">             */</em>
<a name="254" href="#254">254</a>             sourceInitializerList.add(loaderConfiguration);
<a name="255" href="#255">255</a>         }
<a name="256" href="#256">256</a>     }
<a name="257" href="#257">257</a> 
<a name="258" href="#258">258</a>     <em class="jxr_javadoccomment">/**</em>
<a name="259" href="#259">259</a> <em class="jxr_javadoccomment">     * Gets the named resource. Returned class type corresponds to specified type (i.e. &lt;code&gt;Template&lt;/code&gt; to &lt;code&gt;</em>
<a name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * RESOURCE_TEMPLATE&lt;/code&gt;).</em>
<a name="261" href="#261">261</a> <em class="jxr_javadoccomment">     *</em>
<a name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * @param  resourceName  The name of the resource to retrieve.</em>
<a name="263" href="#263">263</a> <em class="jxr_javadoccomment">     * @param  resourceType  The type of resource (&lt;code&gt;RESOURCE_TEMPLATE&lt;/code&gt;, &lt;code&gt;RESOURCE_CONTENT&lt;/code&gt;, etc.).</em>
<a name="264" href="#264">264</a> <em class="jxr_javadoccomment">     * @param  encoding  The character encoding to use.</em>
<a name="265" href="#265">265</a> <em class="jxr_javadoccomment">     *</em>
<a name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * @return  Resource with the template parsed and ready.</em>
<a name="267" href="#267">267</a> <em class="jxr_javadoccomment">     *</em>
<a name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @throws  ResourceNotFoundException  if template not found from any available source.</em>
<a name="269" href="#269">269</a> <em class="jxr_javadoccomment">     * @throws  ParseErrorException  if template cannot be parsed due to syntax (or other) error.</em>
<a name="270" href="#270">270</a> <em class="jxr_javadoccomment">     * @throws  Exception  if a problem in parse</em>
<a name="271" href="#271">271</a> <em class="jxr_javadoccomment">     */</em>
<a name="272" href="#272">272</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> getResource(<strong class="jxr_keyword">final</strong> String resourceName, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> resourceType, <strong class="jxr_keyword">final</strong> String encoding)
<a name="273" href="#273">273</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException,
<a name="274" href="#274">274</a>             ParseErrorException,
<a name="275" href="#275">275</a>             Exception
<a name="276" href="#276">276</a>     {
<a name="277" href="#277">277</a>         <em class="jxr_comment">/*</em>
<a name="278" href="#278">278</a> <em class="jxr_comment">         * Check to see if the resource was placed in the cache.</em>
<a name="279" href="#279">279</a> <em class="jxr_comment">         * If it was placed in the cache then we will use</em>
<a name="280" href="#280">280</a> <em class="jxr_comment">         * the cached version of the resource. If not we</em>
<a name="281" href="#281">281</a> <em class="jxr_comment">         * will load it.</em>
<a name="282" href="#282">282</a> <em class="jxr_comment">         *</em>
<a name="283" href="#283">283</a> <em class="jxr_comment">         * Note: the type is included in the key to differentiate ContentResource</em>
<a name="284" href="#284">284</a> <em class="jxr_comment">         * (static content from #include) with a Template.</em>
<a name="285" href="#285">285</a> <em class="jxr_comment">         */</em>
<a name="286" href="#286">286</a> 
<a name="287" href="#287">287</a>         String resourceKey = resourceType + resourceName;
<a name="288" href="#288">288</a>         <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> resource = globalCache.get(resourceKey);
<a name="289" href="#289">289</a> 
<a name="290" href="#290">290</a>         <strong class="jxr_keyword">if</strong> (resource != <strong class="jxr_keyword">null</strong>)
<a name="291" href="#291">291</a>         {
<a name="292" href="#292">292</a>             <em class="jxr_comment">/*</em>
<a name="293" href="#293">293</a> <em class="jxr_comment">             *  refresh the resource</em>
<a name="294" href="#294">294</a> <em class="jxr_comment">             */</em>
<a name="295" href="#295">295</a> 
<a name="296" href="#296">296</a>             <strong class="jxr_keyword">try</strong>
<a name="297" href="#297">297</a>             {
<a name="298" href="#298">298</a>                 refreshResource(resource, encoding);
<a name="299" href="#299">299</a>             }
<a name="300" href="#300">300</a>             <strong class="jxr_keyword">catch</strong> (ResourceNotFoundException rnfe)
<a name="301" href="#301">301</a>             {
<a name="302" href="#302">302</a>                 <em class="jxr_comment">/*</em>
<a name="303" href="#303">303</a> <em class="jxr_comment">                 *  something exceptional happened to that resource</em>
<a name="304" href="#304">304</a> <em class="jxr_comment">                 *  this could be on purpose,</em>
<a name="305" href="#305">305</a> <em class="jxr_comment">                 *  so clear the cache and try again</em>
<a name="306" href="#306">306</a> <em class="jxr_comment">                 */</em>
<a name="307" href="#307">307</a> 
<a name="308" href="#308">308</a>                 globalCache.remove(resourceKey);
<a name="309" href="#309">309</a> 
<a name="310" href="#310">310</a>                 <strong class="jxr_keyword">return</strong> getResource(resourceName, resourceType, encoding);
<a name="311" href="#311">311</a>             }
<a name="312" href="#312">312</a>             <strong class="jxr_keyword">catch</strong> (ParseErrorException pee)
<a name="313" href="#313">313</a>             {
<a name="314" href="#314">314</a>                 log.error(<span class="jxr_string">"ResourceManager.getResource() exception"</span>, pee);
<a name="315" href="#315">315</a>                 <strong class="jxr_keyword">throw</strong> pee;
<a name="316" href="#316">316</a>             }
<a name="317" href="#317">317</a>             <strong class="jxr_keyword">catch</strong> (RuntimeException re)
<a name="318" href="#318">318</a>             {
<a name="319" href="#319">319</a>         	<strong class="jxr_keyword">throw</strong> re;
<a name="320" href="#320">320</a>             }
<a name="321" href="#321">321</a>             <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="322" href="#322">322</a>             {
<a name="323" href="#323">323</a>                 log.error(<span class="jxr_string">"ResourceManager.getResource() exception"</span>, e);
<a name="324" href="#324">324</a>                 <strong class="jxr_keyword">throw</strong> e;
<a name="325" href="#325">325</a>             }
<a name="326" href="#326">326</a>         }
<a name="327" href="#327">327</a>         <strong class="jxr_keyword">else</strong>
<a name="328" href="#328">328</a>         {
<a name="329" href="#329">329</a>             <strong class="jxr_keyword">try</strong>
<a name="330" href="#330">330</a>             {
<a name="331" href="#331">331</a>                 <em class="jxr_comment">/*</em>
<a name="332" href="#332">332</a> <em class="jxr_comment">                 *  it's not in the cache, so load it.</em>
<a name="333" href="#333">333</a> <em class="jxr_comment">                 */</em>
<a name="334" href="#334">334</a> 
<a name="335" href="#335">335</a>                 resource = loadResource(resourceName, resourceType, encoding);
<a name="336" href="#336">336</a> 
<a name="337" href="#337">337</a>                 <strong class="jxr_keyword">if</strong> (resource.getResourceLoader().isCachingOn())
<a name="338" href="#338">338</a>                 {
<a name="339" href="#339">339</a>                     globalCache.put(resourceKey, resource);
<a name="340" href="#340">340</a>                 }
<a name="341" href="#341">341</a>             }
<a name="342" href="#342">342</a>             <strong class="jxr_keyword">catch</strong> (ResourceNotFoundException rnfe)
<a name="343" href="#343">343</a>             {
<a name="344" href="#344">344</a>                 log.error(<span class="jxr_string">"ResourceManager : unable to find resource '"</span> +
<a name="345" href="#345">345</a>                           resourceName + <span class="jxr_string">"' in any resource loader."</span>);
<a name="346" href="#346">346</a>                 <strong class="jxr_keyword">throw</strong> rnfe;
<a name="347" href="#347">347</a>             }
<a name="348" href="#348">348</a>             <strong class="jxr_keyword">catch</strong> (ParseErrorException pee)
<a name="349" href="#349">349</a>             {
<a name="350" href="#350">350</a>                 log.error(<span class="jxr_string">"ResourceManager.getResource() parse exception"</span>, pee);
<a name="351" href="#351">351</a>                 <strong class="jxr_keyword">throw</strong> pee;
<a name="352" href="#352">352</a>             }
<a name="353" href="#353">353</a>             <strong class="jxr_keyword">catch</strong> (RuntimeException re)
<a name="354" href="#354">354</a>             {
<a name="355" href="#355">355</a>     		<strong class="jxr_keyword">throw</strong> re;
<a name="356" href="#356">356</a>             }
<a name="357" href="#357">357</a>             <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="358" href="#358">358</a>             {
<a name="359" href="#359">359</a>                 log.error(<span class="jxr_string">"ResourceManager.getResource() exception new"</span>, e);
<a name="360" href="#360">360</a>                 <strong class="jxr_keyword">throw</strong> e;
<a name="361" href="#361">361</a>             }
<a name="362" href="#362">362</a>         }
<a name="363" href="#363">363</a> 
<a name="364" href="#364">364</a>         <strong class="jxr_keyword">return</strong> resource;
<a name="365" href="#365">365</a>     }
<a name="366" href="#366">366</a> 
<a name="367" href="#367">367</a>     <em class="jxr_javadoccomment">/**</em>
<a name="368" href="#368">368</a> <em class="jxr_javadoccomment">     * Loads a resource from the current set of resource loaders.</em>
<a name="369" href="#369">369</a> <em class="jxr_javadoccomment">     *</em>
<a name="370" href="#370">370</a> <em class="jxr_javadoccomment">     * @param  resourceName  The name of the resource to retrieve.</em>
<a name="371" href="#371">371</a> <em class="jxr_javadoccomment">     * @param  resourceType  The type of resource (&lt;code&gt;RESOURCE_TEMPLATE&lt;/code&gt;, &lt;code&gt;RESOURCE_CONTENT&lt;/code&gt;, etc.).</em>
<a name="372" href="#372">372</a> <em class="jxr_javadoccomment">     * @param  encoding  The character encoding to use.</em>
<a name="373" href="#373">373</a> <em class="jxr_javadoccomment">     *</em>
<a name="374" href="#374">374</a> <em class="jxr_javadoccomment">     * @return  Resource with the template parsed and ready.</em>
<a name="375" href="#375">375</a> <em class="jxr_javadoccomment">     *</em>
<a name="376" href="#376">376</a> <em class="jxr_javadoccomment">     * @throws  ResourceNotFoundException  if template not found from any available source.</em>
<a name="377" href="#377">377</a> <em class="jxr_javadoccomment">     * @throws  ParseErrorException  if template cannot be parsed due to syntax (or other) error.</em>
<a name="378" href="#378">378</a> <em class="jxr_javadoccomment">     * @throws  Exception  if a problem in parse</em>
<a name="379" href="#379">379</a> <em class="jxr_javadoccomment">     */</em>
<a name="380" href="#380">380</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> loadResource(String resourceName, <strong class="jxr_keyword">int</strong> resourceType, String encoding)
<a name="381" href="#381">381</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException,
<a name="382" href="#382">382</a>             ParseErrorException,
<a name="383" href="#383">383</a>             Exception
<a name="384" href="#384">384</a>     {
<a name="385" href="#385">385</a>         <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> resource = ResourceFactory.getResource(resourceName, resourceType);
<a name="386" href="#386">386</a> 
<a name="387" href="#387">387</a>         resource.setRuntimeServices(rsvc);
<a name="388" href="#388">388</a> 
<a name="389" href="#389">389</a>         resource.setName(resourceName);
<a name="390" href="#390">390</a>         resource.setEncoding(encoding);
<a name="391" href="#391">391</a> 
<a name="392" href="#392">392</a>         <em class="jxr_comment">/*</em>
<a name="393" href="#393">393</a> <em class="jxr_comment">         * Now we have to try to find the appropriate</em>
<a name="394" href="#394">394</a> <em class="jxr_comment">         * loader for this resource. We have to cycle through</em>
<a name="395" href="#395">395</a> <em class="jxr_comment">         * the list of available resource loaders and see</em>
<a name="396" href="#396">396</a> <em class="jxr_comment">         * which one gives us a stream that we can use to</em>
<a name="397" href="#397">397</a> <em class="jxr_comment">         * make a resource with.</em>
<a name="398" href="#398">398</a> <em class="jxr_comment">         */</em>
<a name="399" href="#399">399</a> 
<a name="400" href="#400">400</a>         <strong class="jxr_keyword">long</strong> howOldItWas = 0;
<a name="401" href="#401">401</a> 
<a name="402" href="#402">402</a>         <strong class="jxr_keyword">for</strong> (Iterator it = resourceLoaders.iterator(); it.hasNext();)
<a name="403" href="#403">403</a>         {
<a name="404" href="#404">404</a>             <a href="../../../../../org/apache/velocity/runtime/resource/loader/ResourceLoader.html">ResourceLoader</a> resourceLoader = (ResourceLoader) it.next();
<a name="405" href="#405">405</a>             resource.setResourceLoader(resourceLoader);
<a name="406" href="#406">406</a> 
<a name="407" href="#407">407</a>             <em class="jxr_comment">/*</em>
<a name="408" href="#408">408</a> <em class="jxr_comment">             *  catch the ResourceNotFound exception</em>
<a name="409" href="#409">409</a> <em class="jxr_comment">             *  as that is ok in our new multi-loader environment</em>
<a name="410" href="#410">410</a> <em class="jxr_comment">             */</em>
<a name="411" href="#411">411</a> 
<a name="412" href="#412">412</a>             <strong class="jxr_keyword">try</strong>
<a name="413" href="#413">413</a>             {
<a name="414" href="#414">414</a> 
<a name="415" href="#415">415</a>                 <strong class="jxr_keyword">if</strong> (resource.process())
<a name="416" href="#416">416</a>                 {
<a name="417" href="#417">417</a>                     <em class="jxr_comment">/*</em>
<a name="418" href="#418">418</a> <em class="jxr_comment">                     *  FIXME  (gmj)</em>
<a name="419" href="#419">419</a> <em class="jxr_comment">                     *  moved in here - technically still</em>
<a name="420" href="#420">420</a> <em class="jxr_comment">                     *  a problem - but the resource needs to be</em>
<a name="421" href="#421">421</a> <em class="jxr_comment">                     *  processed before the loader can figure</em>
<a name="422" href="#422">422</a> <em class="jxr_comment">                     *  it out due to to the new</em>
<a name="423" href="#423">423</a> <em class="jxr_comment">                     *  multi-path support - will revisit and fix</em>
<a name="424" href="#424">424</a> <em class="jxr_comment">                     */</em>
<a name="425" href="#425">425</a> 
<a name="426" href="#426">426</a>                     <strong class="jxr_keyword">if</strong> (logWhenFound &amp;&amp; log.isDebugEnabled())
<a name="427" href="#427">427</a>                     {
<a name="428" href="#428">428</a>                         log.debug(<span class="jxr_string">"ResourceManager : found "</span> + resourceName +
<a name="429" href="#429">429</a>                                   <span class="jxr_string">" with loader "</span> +
<a name="430" href="#430">430</a>                                   resourceLoader.getClassName());
<a name="431" href="#431">431</a>                     }
<a name="432" href="#432">432</a> 
<a name="433" href="#433">433</a>                     howOldItWas = resourceLoader.getLastModified(resource);
<a name="434" href="#434">434</a> 
<a name="435" href="#435">435</a>                     <strong class="jxr_keyword">break</strong>;
<a name="436" href="#436">436</a>                 }
<a name="437" href="#437">437</a>             }
<a name="438" href="#438">438</a>             <strong class="jxr_keyword">catch</strong> (ResourceNotFoundException rnfe)
<a name="439" href="#439">439</a>             {
<a name="440" href="#440">440</a>                 <em class="jxr_comment">/*</em>
<a name="441" href="#441">441</a> <em class="jxr_comment">                 *  that's ok - it's possible to fail in</em>
<a name="442" href="#442">442</a> <em class="jxr_comment">                 *  multi-loader environment</em>
<a name="443" href="#443">443</a> <em class="jxr_comment">                 */</em>
<a name="444" href="#444">444</a>             }
<a name="445" href="#445">445</a>         }
<a name="446" href="#446">446</a> 
<a name="447" href="#447">447</a>         <em class="jxr_comment">/*</em>
<a name="448" href="#448">448</a> <em class="jxr_comment">         * Return null if we can't find a resource.</em>
<a name="449" href="#449">449</a> <em class="jxr_comment">         */</em>
<a name="450" href="#450">450</a>         <strong class="jxr_keyword">if</strong> (resource.getData() == <strong class="jxr_keyword">null</strong>)
<a name="451" href="#451">451</a>         {
<a name="452" href="#452">452</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/velocity/exception/ResourceNotFoundException.html">ResourceNotFoundException</a>(<span class="jxr_string">"Unable to find resource '"</span> + resourceName + <span class="jxr_string">"'"</span>);
<a name="453" href="#453">453</a>         }
<a name="454" href="#454">454</a> 
<a name="455" href="#455">455</a>         <em class="jxr_comment">/*</em>
<a name="456" href="#456">456</a> <em class="jxr_comment">         *  some final cleanup</em>
<a name="457" href="#457">457</a> <em class="jxr_comment">         */</em>
<a name="458" href="#458">458</a> 
<a name="459" href="#459">459</a>         resource.setLastModified(howOldItWas);
<a name="460" href="#460">460</a>         resource.setModificationCheckInterval(resource.getResourceLoader().getModificationCheckInterval());
<a name="461" href="#461">461</a> 
<a name="462" href="#462">462</a>         resource.touch();
<a name="463" href="#463">463</a> 
<a name="464" href="#464">464</a>         <strong class="jxr_keyword">return</strong> resource;
<a name="465" href="#465">465</a>     }
<a name="466" href="#466">466</a> 
<a name="467" href="#467">467</a>     <em class="jxr_javadoccomment">/**</em>
<a name="468" href="#468">468</a> <em class="jxr_javadoccomment">     * Takes an existing resource, and 'refreshes' it. This generally means that the source of the resource is checked for changes</em>
<a name="469" href="#469">469</a> <em class="jxr_javadoccomment">     * according to some cache/check algorithm and if the resource changed, then the resource data is reloaded and re-parsed.</em>
<a name="470" href="#470">470</a> <em class="jxr_javadoccomment">     *</em>
<a name="471" href="#471">471</a> <em class="jxr_javadoccomment">     * @param  resource  resource to refresh</em>
<a name="472" href="#472">472</a> <em class="jxr_javadoccomment">     * @param  encoding  character encoding of the resource to refresh.</em>
<a name="473" href="#473">473</a> <em class="jxr_javadoccomment">     *</em>
<a name="474" href="#474">474</a> <em class="jxr_javadoccomment">     * @throws  ResourceNotFoundException  if template not found from current source for this Resource</em>
<a name="475" href="#475">475</a> <em class="jxr_javadoccomment">     * @throws  ParseErrorException  if template cannot be parsed due to syntax (or other) error.</em>
<a name="476" href="#476">476</a> <em class="jxr_javadoccomment">     * @throws  Exception  if a problem in parse</em>
<a name="477" href="#477">477</a> <em class="jxr_javadoccomment">     */</em>
<a name="478" href="#478">478</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> refreshResource(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> resource, <strong class="jxr_keyword">final</strong> String encoding)
<a name="479" href="#479">479</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException,
<a name="480" href="#480">480</a>             ParseErrorException,
<a name="481" href="#481">481</a>             Exception
<a name="482" href="#482">482</a>     {
<a name="483" href="#483">483</a> 
<a name="484" href="#484">484</a>         <em class="jxr_comment">/*</em>
<a name="485" href="#485">485</a> <em class="jxr_comment">         * The resource knows whether it needs to be checked</em>
<a name="486" href="#486">486</a> <em class="jxr_comment">         * or not, and the resource's loader can check to</em>
<a name="487" href="#487">487</a> <em class="jxr_comment">         * see if the source has been modified. If both</em>
<a name="488" href="#488">488</a> <em class="jxr_comment">         * these conditions are true then we must reload</em>
<a name="489" href="#489">489</a> <em class="jxr_comment">         * the input stream and parse it to make a new</em>
<a name="490" href="#490">490</a> <em class="jxr_comment">         * AST for the resource.</em>
<a name="491" href="#491">491</a> <em class="jxr_comment">         */</em>
<a name="492" href="#492">492</a>         <strong class="jxr_keyword">if</strong> (resource.requiresChecking())
<a name="493" href="#493">493</a>         {
<a name="494" href="#494">494</a>             <em class="jxr_comment">/*</em>
<a name="495" href="#495">495</a> <em class="jxr_comment">             *  touch() the resource to reset the counters</em>
<a name="496" href="#496">496</a> <em class="jxr_comment">             */</em>
<a name="497" href="#497">497</a> 
<a name="498" href="#498">498</a>             resource.touch();
<a name="499" href="#499">499</a> 
<a name="500" href="#500">500</a>             <strong class="jxr_keyword">if</strong> (resource.isSourceModified())
<a name="501" href="#501">501</a>             {
<a name="502" href="#502">502</a>                 <em class="jxr_comment">/*</em>
<a name="503" href="#503">503</a> <em class="jxr_comment">                 *  now check encoding info.  It's possible that the newly declared</em>
<a name="504" href="#504">504</a> <em class="jxr_comment">                 *  encoding is different than the encoding already in the resource</em>
<a name="505" href="#505">505</a> <em class="jxr_comment">                 *  this strikes me as bad...</em>
<a name="506" href="#506">506</a> <em class="jxr_comment">                 */</em>
<a name="507" href="#507">507</a> 
<a name="508" href="#508">508</a>                 <strong class="jxr_keyword">if</strong> (!org.apache.commons.lang.StringUtils.equals(resource.getEncoding(), encoding))
<a name="509" href="#509">509</a>                 {
<a name="510" href="#510">510</a>                     log.warn(<span class="jxr_string">"Declared encoding for template '"</span> +
<a name="511" href="#511">511</a>                              resource.getName() +
<a name="512" href="#512">512</a>                              <span class="jxr_string">"' is different on reload. Old = '"</span> +
<a name="513" href="#513">513</a>                              resource.getEncoding() + <span class="jxr_string">"' New = '"</span> + encoding);
<a name="514" href="#514">514</a> 
<a name="515" href="#515">515</a>                     resource.setEncoding(encoding);
<a name="516" href="#516">516</a>                 }
<a name="517" href="#517">517</a> 
<a name="518" href="#518">518</a>                 <em class="jxr_comment">/*</em>
<a name="519" href="#519">519</a> <em class="jxr_comment">                 *  read how old the resource is _before_</em>
<a name="520" href="#520">520</a> <em class="jxr_comment">                 *  processing (=&gt;reading) it</em>
<a name="521" href="#521">521</a> <em class="jxr_comment">                 */</em>
<a name="522" href="#522">522</a>                 <strong class="jxr_keyword">long</strong> howOldItWas = resource.getResourceLoader().getLastModified(resource);
<a name="523" href="#523">523</a> 
<a name="524" href="#524">524</a>                 <em class="jxr_comment">/*</em>
<a name="525" href="#525">525</a> <em class="jxr_comment">                 *  read in the fresh stream and parse</em>
<a name="526" href="#526">526</a> <em class="jxr_comment">                 */</em>
<a name="527" href="#527">527</a> 
<a name="528" href="#528">528</a>                 resource.process();
<a name="529" href="#529">529</a> 
<a name="530" href="#530">530</a>                 <em class="jxr_comment">/*</em>
<a name="531" href="#531">531</a> <em class="jxr_comment">                 *  now set the modification info and reset</em>
<a name="532" href="#532">532</a> <em class="jxr_comment">                 *  the modification check counters</em>
<a name="533" href="#533">533</a> <em class="jxr_comment">                 */</em>
<a name="534" href="#534">534</a> 
<a name="535" href="#535">535</a>                 resource.setLastModified(howOldItWas);
<a name="536" href="#536">536</a>             }
<a name="537" href="#537">537</a>         }
<a name="538" href="#538">538</a>     }
<a name="539" href="#539">539</a> 
<a name="540" href="#540">540</a>     <em class="jxr_javadoccomment">/**</em>
<a name="541" href="#541">541</a> <em class="jxr_javadoccomment">     * Gets the named resource. Returned class type corresponds to specified type (i.e. &lt;code&gt;Template&lt;/code&gt; to &lt;code&gt;</em>
<a name="542" href="#542">542</a> <em class="jxr_javadoccomment">     * RESOURCE_TEMPLATE&lt;/code&gt;).</em>
<a name="543" href="#543">543</a> <em class="jxr_javadoccomment">     *</em>
<a name="544" href="#544">544</a> <em class="jxr_javadoccomment">     * @param  resourceName  The name of the resource to retrieve.</em>
<a name="545" href="#545">545</a> <em class="jxr_javadoccomment">     * @param  resourceType  The type of resource (&lt;code&gt;RESOURCE_TEMPLATE&lt;/code&gt;, &lt;code&gt;RESOURCE_CONTENT&lt;/code&gt;, etc.).</em>
<a name="546" href="#546">546</a> <em class="jxr_javadoccomment">     *</em>
<a name="547" href="#547">547</a> <em class="jxr_javadoccomment">     * @return  Resource with the template parsed and ready.</em>
<a name="548" href="#548">548</a> <em class="jxr_javadoccomment">     *</em>
<a name="549" href="#549">549</a> <em class="jxr_javadoccomment">     * @throws  ResourceNotFoundException  if template not found from any available source.</em>
<a name="550" href="#550">550</a> <em class="jxr_javadoccomment">     * @throws  ParseErrorException  if template cannot be parsed due to syntax (or other) error.</em>
<a name="551" href="#551">551</a> <em class="jxr_javadoccomment">     * @throws  Exception  if a problem in parse</em>
<a name="552" href="#552">552</a> <em class="jxr_javadoccomment">     *</em>
<a name="553" href="#553">553</a> <em class="jxr_javadoccomment">     * @deprecated  Use {@link #getResource(String resourceName, int resourceType, String encoding )}</em>
<a name="554" href="#554">554</a> <em class="jxr_javadoccomment">     */</em>
<a name="555" href="#555">555</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/velocity/runtime/resource/Resource.html">Resource</a> getResource(String resourceName, <strong class="jxr_keyword">int</strong> resourceType)
<a name="556" href="#556">556</a>         <strong class="jxr_keyword">throws</strong> ResourceNotFoundException,
<a name="557" href="#557">557</a>             ParseErrorException,
<a name="558" href="#558">558</a>             Exception
<a name="559" href="#559">559</a>     {
<a name="560" href="#560">560</a>         <strong class="jxr_keyword">return</strong> getResource(resourceName, resourceType, RuntimeConstants.ENCODING_DEFAULT);
<a name="561" href="#561">561</a>     }
<a name="562" href="#562">562</a> 
<a name="563" href="#563">563</a>     <em class="jxr_javadoccomment">/**</em>
<a name="564" href="#564">564</a> <em class="jxr_javadoccomment">     * Determines if a template exists, and returns name of the loader that provides it. This is a slightly less hokey way to</em>
<a name="565" href="#565">565</a> <em class="jxr_javadoccomment">     * support the Velocity.templateExists() utility method, which was broken when per-template encoding was introduced. We can</em>
<a name="566" href="#566">566</a> <em class="jxr_javadoccomment">     * revisit this.</em>
<a name="567" href="#567">567</a> <em class="jxr_javadoccomment">     *</em>
<a name="568" href="#568">568</a> <em class="jxr_javadoccomment">     * @param  resourceName  Name of template or content resource</em>
<a name="569" href="#569">569</a> <em class="jxr_javadoccomment">     *</em>
<a name="570" href="#570">570</a> <em class="jxr_javadoccomment">     * @return  class name of loader than can provide it</em>
<a name="571" href="#571">571</a> <em class="jxr_javadoccomment">     */</em>
<a name="572" href="#572">572</a>     <strong class="jxr_keyword">public</strong> String getLoaderNameForResource(String resourceName)
<a name="573" href="#573">573</a>     {
<a name="574" href="#574">574</a>         <em class="jxr_comment">/*</em>
<a name="575" href="#575">575</a> <em class="jxr_comment">         *  loop through our loaders...</em>
<a name="576" href="#576">576</a> <em class="jxr_comment">         */</em>
<a name="577" href="#577">577</a>         <strong class="jxr_keyword">for</strong> (Iterator it = resourceLoaders.iterator(); it.hasNext(); )
<a name="578" href="#578">578</a>         {
<a name="579" href="#579">579</a>             <a href="../../../../../org/apache/velocity/runtime/resource/loader/ResourceLoader.html">ResourceLoader</a> resourceLoader = (ResourceLoader) it.next();
<a name="580" href="#580">580</a> 
<a name="581" href="#581">581</a>             InputStream is = <strong class="jxr_keyword">null</strong>;
<a name="582" href="#582">582</a> 
<a name="583" href="#583">583</a>             <em class="jxr_comment">/*</em>
<a name="584" href="#584">584</a> <em class="jxr_comment">             *  if we find one that can provide the resource,</em>
<a name="585" href="#585">585</a> <em class="jxr_comment">             *  return the name of the loaders's Class</em>
<a name="586" href="#586">586</a> <em class="jxr_comment">             */</em>
<a name="587" href="#587">587</a>             <strong class="jxr_keyword">try</strong>
<a name="588" href="#588">588</a>             {
<a name="589" href="#589">589</a>                 is = resourceLoader.getResourceStream(resourceName);
<a name="590" href="#590">590</a> 
<a name="591" href="#591">591</a>                 <strong class="jxr_keyword">if</strong> (is != <strong class="jxr_keyword">null</strong>)
<a name="592" href="#592">592</a>                 {
<a name="593" href="#593">593</a>                     <strong class="jxr_keyword">return</strong> resourceLoader.getClass().toString();
<a name="594" href="#594">594</a>                 }
<a name="595" href="#595">595</a>             }
<a name="596" href="#596">596</a>             <strong class="jxr_keyword">catch</strong> (ResourceNotFoundException rnfe)
<a name="597" href="#597">597</a>             {
<a name="598" href="#598">598</a>                 <em class="jxr_comment">/*</em>
<a name="599" href="#599">599</a> <em class="jxr_comment">                 * this isn't a problem.  keep going</em>
<a name="600" href="#600">600</a> <em class="jxr_comment">                 */</em>
<a name="601" href="#601">601</a>             }
<a name="602" href="#602">602</a>             <strong class="jxr_keyword">finally</strong>
<a name="603" href="#603">603</a>             {
<a name="604" href="#604">604</a> 
<a name="605" href="#605">605</a>                 <em class="jxr_comment">/*</em>
<a name="606" href="#606">606</a> <em class="jxr_comment">                 *  if we did find one, clean up because we were</em>
<a name="607" href="#607">607</a> <em class="jxr_comment">                 *  returned an open stream</em>
<a name="608" href="#608">608</a> <em class="jxr_comment">                 */</em>
<a name="609" href="#609">609</a>                 <strong class="jxr_keyword">if</strong> (is != <strong class="jxr_keyword">null</strong>)
<a name="610" href="#610">610</a>                 {
<a name="611" href="#611">611</a> 
<a name="612" href="#612">612</a>                     <strong class="jxr_keyword">try</strong>
<a name="613" href="#613">613</a>                     {
<a name="614" href="#614">614</a>                         is.close();
<a name="615" href="#615">615</a>                     }
<a name="616" href="#616">616</a>                     <strong class="jxr_keyword">catch</strong> (IOException supressed)
<a name="617" href="#617">617</a>                     { }
<a name="618" href="#618">618</a>                 }
<a name="619" href="#619">619</a>             }
<a name="620" href="#620">620</a>         }
<a name="621" href="#621">621</a> 
<a name="622" href="#622">622</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="623" href="#623">623</a>     }
<a name="624" href="#624">624</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

