<!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>TestLogChute xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.test.misc;
<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> org.apache.velocity.runtime.RuntimeServices;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.log.LogChute;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment">/**</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> * LogChute implementation that creates a String in memory.  Used to test</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> * log information.</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> *</em>
<a name="29" href="#29">29</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="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * @version $Id: TestLogChute.java 490718 2006-12-28 13:35:49Z wglass $</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> */</em>
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/velocity/test/misc/TestLogChute.html">TestLogChute</a> implements LogChute
<a name="33" href="#33">33</a>  {
<a name="34" href="#34">34</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_LOGGER_LEVEL = <span class="jxr_string">"runtime.log.logsystem.test.level"</span>;
<a name="35" href="#35">35</a>  
<a name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> StringBuffer log = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> logLevel;
<a name="39" href="#39">39</a>      
<a name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(RuntimeServices rs) <strong class="jxr_keyword">throws</strong> Exception
<a name="41" href="#41">41</a>      {
<a name="42" href="#42">42</a>          String level = rs.getString(TEST_LOGGER_LEVEL, <span class="jxr_string">"debug"</span>);
<a name="43" href="#43">43</a>          logLevel = getLevelNumber(level, LogChute.DEBUG_ID);
<a name="44" href="#44">44</a>      }
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(<strong class="jxr_keyword">int</strong> level, String message)
<a name="47" href="#47">47</a>      {
<a name="48" href="#48">48</a>          <strong class="jxr_keyword">if</strong> (level &gt;= logLevel)
<a name="49" href="#49">49</a>          {
<a name="50" href="#50">50</a>              String levelName;
<a name="51" href="#51">51</a>              levelName = getLevelName(level);
<a name="52" href="#52">52</a>              log.append(<span class="jxr_string">" ["</span>).append(levelName).append(<span class="jxr_string">"] "</span>);
<a name="53" href="#53">53</a>              log.append(message);
<a name="54" href="#54">54</a>              log.append(<span class="jxr_string">"\n"</span>);
<a name="55" href="#55">55</a>          }
<a name="56" href="#56">56</a>      }
<a name="57" href="#57">57</a>      
<a name="58" href="#58">58</a>      <em class="jxr_javadoccomment">/**</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     * Return the stored log messages to date.</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     * @return log messages</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     */</em>
<a name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> String getLog()
<a name="63" href="#63">63</a>      {
<a name="64" href="#64">64</a>          <strong class="jxr_keyword">return</strong> log.toString();
<a name="65" href="#65">65</a>      }
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>      <em class="jxr_javadoccomment">/**</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * Return the name corresponding to each level</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * @param level integer level</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * @return String level name</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
<a name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> String getLevelName(<strong class="jxr_keyword">int</strong> level)
<a name="73" href="#73">73</a>      {
<a name="74" href="#74">74</a>          String levelName;
<a name="75" href="#75">75</a>          <strong class="jxr_keyword">if</strong> (level == LogChute.DEBUG_ID)
<a name="76" href="#76">76</a>          {
<a name="77" href="#77">77</a>              levelName = <span class="jxr_string">"debug"</span>;
<a name="78" href="#78">78</a>          }
<a name="79" href="#79">79</a>          <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level == LogChute.INFO_ID)
<a name="80" href="#80">80</a>          {
<a name="81" href="#81">81</a>              levelName = <span class="jxr_string">"info"</span>;
<a name="82" href="#82">82</a>          }
<a name="83" href="#83">83</a>          <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level == LogChute.TRACE_ID)
<a name="84" href="#84">84</a>          {
<a name="85" href="#85">85</a>              levelName = <span class="jxr_string">"trace"</span>;
<a name="86" href="#86">86</a>          }
<a name="87" href="#87">87</a>          <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level == LogChute.WARN_ID)
<a name="88" href="#88">88</a>          {
<a name="89" href="#89">89</a>              levelName = <span class="jxr_string">"warn"</span>;
<a name="90" href="#90">90</a>          }
<a name="91" href="#91">91</a>          <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level == LogChute.ERROR_ID)
<a name="92" href="#92">92</a>          {
<a name="93" href="#93">93</a>              levelName = <span class="jxr_string">"error"</span>;
<a name="94" href="#94">94</a>          }
<a name="95" href="#95">95</a>          <strong class="jxr_keyword">else</strong> 
<a name="96" href="#96">96</a>          {
<a name="97" href="#97">97</a>              levelName = <span class="jxr_string">""</span>;
<a name="98" href="#98">98</a>          }
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> levelName;
<a name="101" href="#101">101</a>     }
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <em class="jxr_javadoccomment">/**</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     * Return the integer level correspoding to the string number, or use the default</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @param level name</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * @param defaultLevel the default if the name does not exist</em>
<a name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * @return integer level</em>
<a name="108" href="#108">108</a> <em class="jxr_javadoccomment">     */</em>
<a name="109" href="#109">109</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> getLevelNumber(String level, <strong class="jxr_keyword">int</strong> defaultLevel)
<a name="110" href="#110">110</a>     {
<a name="111" href="#111">111</a>         <strong class="jxr_keyword">if</strong> (level == <strong class="jxr_keyword">null</strong>)
<a name="112" href="#112">112</a>         {
<a name="113" href="#113">113</a>             <strong class="jxr_keyword">return</strong> defaultLevel;
<a name="114" href="#114">114</a>         }
<a name="115" href="#115">115</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level.equalsIgnoreCase(<span class="jxr_string">"DEBUG"</span>))
<a name="116" href="#116">116</a>         {
<a name="117" href="#117">117</a>             <strong class="jxr_keyword">return</strong> LogChute.DEBUG_ID;
<a name="118" href="#118">118</a>         }
<a name="119" href="#119">119</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level.equalsIgnoreCase(<span class="jxr_string">"ERROR"</span>))
<a name="120" href="#120">120</a>         {
<a name="121" href="#121">121</a>             <strong class="jxr_keyword">return</strong> LogChute.ERROR_ID;
<a name="122" href="#122">122</a>         }
<a name="123" href="#123">123</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level.equalsIgnoreCase(<span class="jxr_string">"INFO"</span>))
<a name="124" href="#124">124</a>         {
<a name="125" href="#125">125</a>             <strong class="jxr_keyword">return</strong> LogChute.INFO_ID;
<a name="126" href="#126">126</a>         }
<a name="127" href="#127">127</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level.equalsIgnoreCase(<span class="jxr_string">"TRACE"</span>))
<a name="128" href="#128">128</a>         {
<a name="129" href="#129">129</a>             <strong class="jxr_keyword">return</strong> LogChute.TRACE_ID;
<a name="130" href="#130">130</a>         }
<a name="131" href="#131">131</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (level.equalsIgnoreCase(<span class="jxr_string">"WARN"</span>))
<a name="132" href="#132">132</a>         {
<a name="133" href="#133">133</a>             <strong class="jxr_keyword">return</strong> LogChute.WARN_ID;
<a name="134" href="#134">134</a>         }
<a name="135" href="#135">135</a>         <strong class="jxr_keyword">else</strong> 
<a name="136" href="#136">136</a>         {
<a name="137" href="#137">137</a>             <strong class="jxr_keyword">return</strong> defaultLevel;
<a name="138" href="#138">138</a>         }
<a name="139" href="#139">139</a>     }
<a name="140" href="#140">140</a>     
<a name="141" href="#141">141</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(<strong class="jxr_keyword">int</strong> level, String message, Throwable t)
<a name="142" href="#142">142</a>     {
<a name="143" href="#143">143</a>         <strong class="jxr_keyword">if</strong> (level &gt;= logLevel)
<a name="144" href="#144">144</a>         {
<a name="145" href="#145">145</a>             String levelName;
<a name="146" href="#146">146</a>             levelName = getLevelName(level);
<a name="147" href="#147">147</a>             log.append(<span class="jxr_string">" ["</span>).append(levelName).append(<span class="jxr_string">"] "</span>);
<a name="148" href="#148">148</a>             log.append(message);
<a name="149" href="#149">149</a>             log.append(<span class="jxr_string">"\n"</span>);
<a name="150" href="#150">150</a>             log.append(t.toString());
<a name="151" href="#151">151</a>             log.append(<span class="jxr_string">"\n"</span>);
<a name="152" href="#152">152</a>         }
<a name="153" href="#153">153</a>     }
<a name="154" href="#154">154</a> 
<a name="155" href="#155">155</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isLevelEnabled(<strong class="jxr_keyword">int</strong> level)
<a name="156" href="#156">156</a>     {
<a name="157" href="#157">157</a>         <strong class="jxr_keyword">return</strong> level &gt;= logLevel;
<a name="158" href="#158">158</a>     }
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

