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

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * contributor license agreements.  See the NOTICE file distributed with</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * the License.  You may obtain a copy of the License at</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *</em>
<a name="9" href="#9">9</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="10" href="#10">10</a>  <em class="jxr_comment"> *</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * limitations under the License.</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> */</em>
<a name="17" href="#17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.log4j;
<a name="18" href="#18">18</a>  
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.FileInputStream;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.io.FileOutputStream;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.FileWriter;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.net.URL;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.zip.ZipEntry;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.zip.ZipOutputStream;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.Filter;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggingEvent;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.OptionHandler;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.ThrowableRenderer;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.ThrowableRendererSupport;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.varia.LevelRangeFilter;
<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"> * Test property configurator.</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> *</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> */</em>
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">PropertyConfiguratorTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">PropertyConfiguratorTest</a>(<strong class="jxr_keyword">final</strong> String testName) {
<a name="44" href="#44">44</a>          <strong class="jxr_keyword">super</strong>(testName);
<a name="45" href="#45">45</a>      }
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>      <em class="jxr_javadoccomment">/**</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     * Test for bug 40944.</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * Did not catch IllegalArgumentException on Properties.load</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * and close input stream.</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @throws IOException if IOException creating properties file.</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     */</em>
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBadUnicodeEscape() <strong class="jxr_keyword">throws</strong> IOException {
<a name="54" href="#54">54</a>          String fileName = <span class="jxr_string">"output/badescape.properties"</span>;
<a name="55" href="#55">55</a>          FileWriter writer = <strong class="jxr_keyword">new</strong> FileWriter(fileName);
<a name="56" href="#56">56</a>          writer.write(<span class="jxr_string">"log4j.rootLogger=&#92;&#92;uXX41"</span>);
<a name="57" href="#57">57</a>          writer.close();
<a name="58" href="#58">58</a>          PropertyConfigurator.configure(fileName);
<a name="59" href="#59">59</a>          File file = <strong class="jxr_keyword">new</strong> File(fileName);
<a name="60" href="#60">60</a>          assertTrue(file.delete()) ;
<a name="61" href="#61">61</a>          assertFalse(file.exists());
<a name="62" href="#62">62</a>      }
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>      <em class="jxr_javadoccomment">/**</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment">     * Test for bug 40944.</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     * configure(URL) never closed opened stream.</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * @throws IOException if IOException creating properties file.</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     */</em>
<a name="69" href="#69">69</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testURL() <strong class="jxr_keyword">throws</strong> IOException {
<a name="70" href="#70">70</a>          File file = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"output/unclosed.properties"</span>);
<a name="71" href="#71">71</a>          FileWriter writer = <strong class="jxr_keyword">new</strong> FileWriter(file);
<a name="72" href="#72">72</a>          writer.write(<span class="jxr_string">"log4j.rootLogger=debug"</span>);
<a name="73" href="#73">73</a>          writer.close();
<a name="74" href="#74">74</a>          URL url = file.toURL();
<a name="75" href="#75">75</a>          PropertyConfigurator.configure(url);
<a name="76" href="#76">76</a>          assertTrue(file.delete());
<a name="77" href="#77">77</a>          assertFalse(file.exists());
<a name="78" href="#78">78</a>      }
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>      <em class="jxr_javadoccomment">/**</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * Test for bug 40944.</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * configure(URL) did not catch IllegalArgumentException and</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * did not close stream.</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     * @throws IOException if IOException creating properties file.</em>
<a name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     */</em>
<a name="86" href="#86">86</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testURLBadEscape() <strong class="jxr_keyword">throws</strong> IOException {
<a name="87" href="#87">87</a>          File file = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"output/urlbadescape.properties"</span>);
<a name="88" href="#88">88</a>          FileWriter writer = <strong class="jxr_keyword">new</strong> FileWriter(file);
<a name="89" href="#89">89</a>          writer.write(<span class="jxr_string">"log4j.rootLogger=&#92;&#92;uXX41"</span>);
<a name="90" href="#90">90</a>          writer.close();
<a name="91" href="#91">91</a>          URL url = file.toURL();
<a name="92" href="#92">92</a>          PropertyConfigurator.configure(url);
<a name="93" href="#93">93</a>          assertTrue(file.delete());
<a name="94" href="#94">94</a>          assertFalse(file.exists());
<a name="95" href="#95">95</a>      }
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>      <em class="jxr_javadoccomment">/**</em>
<a name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     * Tests configuring Log4J from an InputStream.</em>
<a name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     * </em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">     * @since 1.2.17</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">     */</em>
<a name="102" href="#102">102</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testInputStream() <strong class="jxr_keyword">throws</strong> IOException {
<a name="103" href="#103">103</a>         File file = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"input/filter1.properties"</span>);
<a name="104" href="#104">104</a>         assertTrue(file.exists());
<a name="105" href="#105">105</a>         FileInputStream inputStream = <strong class="jxr_keyword">new</strong> FileInputStream(file);
<a name="106" href="#106">106</a>         <strong class="jxr_keyword">try</strong> {
<a name="107" href="#107">107</a>             PropertyConfigurator.configure(inputStream);
<a name="108" href="#108">108</a>         } <strong class="jxr_keyword">finally</strong> {
<a name="109" href="#109">109</a>             inputStream.close();
<a name="110" href="#110">110</a>         }
<a name="111" href="#111">111</a>         <strong class="jxr_keyword">this</strong>.validateNested();
<a name="112" href="#112">112</a>         LogManager.resetConfiguration();
<a name="113" href="#113">113</a>     }
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> validateNested() {
<a name="116" href="#116">116</a>         <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingFileAppender</a> rfa = (RollingFileAppender)
<a name="117" href="#117">117</a>                 Logger.getLogger(<span class="jxr_string">"org.apache.log4j.PropertyConfiguratorTest"</span>)
<a name="118" href="#118">118</a>                    .getAppender(<span class="jxr_string">"ROLLING"</span>);
<a name="119" href="#119">119</a>         <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FixedWindowRollingPolicy</a> rollingPolicy = (FixedWindowRollingPolicy) rfa.getRollingPolicy();
<a name="120" href="#120">120</a>         assertEquals(<span class="jxr_string">"filterBase-test1.log"</span>, rollingPolicy.getActiveFileName());
<a name="121" href="#121">121</a>         assertEquals(<span class="jxr_string">"filterBased-test1.%i"</span>, rollingPolicy.getFileNamePattern());
<a name="122" href="#122">122</a>         assertEquals(0, rollingPolicy.getMinIndex());
<a name="123" href="#123">123</a>         assertTrue(rollingPolicy.isActivated());
<a name="124" href="#124">124</a>         <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FilterBasedTriggeringPolicy</a> triggeringPolicy =
<a name="125" href="#125">125</a>                 (<a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FilterBasedTriggeringPolicy</a>) rfa.getTriggeringPolicy();
<a name="126" href="#126">126</a>         LevelRangeFilter filter = (LevelRangeFilter) triggeringPolicy.getFilter();
<a name="127" href="#127">127</a>         assertTrue(Level.INFO.equals(filter.getLevelMin()));        
<a name="128" href="#128">128</a>     }
<a name="129" href="#129">129</a>     
<a name="130" href="#130">130</a>     <em class="jxr_javadoccomment">/**</em>
<a name="131" href="#131">131</a> <em class="jxr_javadoccomment">     * Test for bug 47465.</em>
<a name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * configure(URL) did not close opened JarURLConnection.</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException creating properties jar.</em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     */</em>
<a name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testJarURL() <strong class="jxr_keyword">throws</strong> IOException {
<a name="136" href="#136">136</a>         File dir = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"output"</span>);
<a name="137" href="#137">137</a>         dir.mkdirs();
<a name="138" href="#138">138</a>         File file = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"output/properties.jar"</span>);
<a name="139" href="#139">139</a>         ZipOutputStream zos =
<a name="140" href="#140">140</a>             <strong class="jxr_keyword">new</strong> ZipOutputStream(<strong class="jxr_keyword">new</strong> FileOutputStream(file));
<a name="141" href="#141">141</a>         zos.putNextEntry(<strong class="jxr_keyword">new</strong> ZipEntry(LogManager.DEFAULT_CONFIGURATION_FILE));
<a name="142" href="#142">142</a>         zos.write(<span class="jxr_string">"log4j.rootLogger=debug"</span>.getBytes());
<a name="143" href="#143">143</a>         zos.closeEntry();
<a name="144" href="#144">144</a>         zos.close();
<a name="145" href="#145">145</a>         URL url = <strong class="jxr_keyword">new</strong> URL(<span class="jxr_string">"jar:"</span> + file.toURL() + <span class="jxr_string">"!/"</span> +
<a name="146" href="#146">146</a>                 LogManager.DEFAULT_CONFIGURATION_FILE);
<a name="147" href="#147">147</a>         PropertyConfigurator.configure(url);
<a name="148" href="#148">148</a>         assertTrue(file.delete());
<a name="149" href="#149">149</a>         assertFalse(file.exists());
<a name="150" href="#150">150</a>     }
<a name="151" href="#151">151</a> 
<a name="152" href="#152">152</a>     <em class="jxr_javadoccomment">/**</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     * Test processing of log4j.reset property, see bug 17531.</em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">     *</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     */</em>
<a name="156" href="#156">156</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReset() {
<a name="157" href="#157">157</a>         <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a>();
<a name="158" href="#158">158</a>         appender.setName(<span class="jxr_string">"A1"</span>);
<a name="159" href="#159">159</a>         Logger.getRootLogger().addAppender(appender);
<a name="160" href="#160">160</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="161" href="#161">161</a>         props.put(<span class="jxr_string">"log4j.reset"</span>, <span class="jxr_string">"true"</span>);
<a name="162" href="#162">162</a>         PropertyConfigurator.configure(props);
<a name="163" href="#163">163</a>         assertNull(Logger.getRootLogger().getAppender(<span class="jxr_string">"A1"</span>));
<a name="164" href="#164">164</a>         LogManager.resetConfiguration();
<a name="165" href="#165">165</a>     }
<a name="166" href="#166">166</a> 
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>     <em class="jxr_javadoccomment">/**</em>
<a name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * Mock definition of org.apache.log4j.rolling.RollingPolicy</em>
<a name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * from extras companion.</em>
<a name="171" href="#171">171</a> <em class="jxr_javadoccomment">     */</em>
<a name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a> implements OptionHandler {
<a name="173" href="#173">173</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> activated = false;
<a name="174" href="#174">174</a> 
<a name="175" href="#175">175</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a>() {
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>         }
<a name="178" href="#178">178</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> activateOptions() {
<a name="179" href="#179">179</a>             activated = <strong class="jxr_keyword">true</strong>;
<a name="180" href="#180">180</a>         }
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isActivated() {
<a name="183" href="#183">183</a>             <strong class="jxr_keyword">return</strong> activated;
<a name="184" href="#184">184</a>         }
<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_javadoccomment">/**</em>
<a name="189" href="#189">189</a> <em class="jxr_javadoccomment">     * Mock definition of FixedWindowRollingPolicy from extras companion.</em>
<a name="190" href="#190">190</a> <em class="jxr_javadoccomment">     */</em>
<a name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FixedWindowRollingPolicy</a> <strong class="jxr_keyword">extends</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a> {
<a name="192" href="#192">192</a>         <strong class="jxr_keyword">private</strong> String activeFileName;
<a name="193" href="#193">193</a>         <strong class="jxr_keyword">private</strong> String fileNamePattern;
<a name="194" href="#194">194</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> minIndex;
<a name="195" href="#195">195</a> 
<a name="196" href="#196">196</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FixedWindowRollingPolicy</a>() {
<a name="197" href="#197">197</a>             minIndex = -1;
<a name="198" href="#198">198</a>         }
<a name="199" href="#199">199</a> 
<a name="200" href="#200">200</a>         <strong class="jxr_keyword">public</strong> String getActiveFileName() {
<a name="201" href="#201">201</a>             <strong class="jxr_keyword">return</strong> activeFileName;
<a name="202" href="#202">202</a>         }
<a name="203" href="#203">203</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setActiveFileName(<strong class="jxr_keyword">final</strong> String val) {
<a name="204" href="#204">204</a>             activeFileName = val;
<a name="205" href="#205">205</a>         }
<a name="206" href="#206">206</a> 
<a name="207" href="#207">207</a>         <strong class="jxr_keyword">public</strong> String getFileNamePattern() {
<a name="208" href="#208">208</a>             <strong class="jxr_keyword">return</strong> fileNamePattern;
<a name="209" href="#209">209</a>         }
<a name="210" href="#210">210</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFileNamePattern(<strong class="jxr_keyword">final</strong> String val) {
<a name="211" href="#211">211</a>             fileNamePattern = val;
<a name="212" href="#212">212</a>         }
<a name="213" href="#213">213</a> 
<a name="214" href="#214">214</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getMinIndex() {
<a name="215" href="#215">215</a>             <strong class="jxr_keyword">return</strong> minIndex;
<a name="216" href="#216">216</a>         }
<a name="217" href="#217">217</a> 
<a name="218" href="#218">218</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMinIndex(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> val) {
<a name="219" href="#219">219</a>             minIndex = val;
<a name="220" href="#220">220</a>         }
<a name="221" href="#221">221</a>     }
<a name="222" href="#222">222</a> 
<a name="223" href="#223">223</a>     <em class="jxr_javadoccomment">/**</em>
<a name="224" href="#224">224</a> <em class="jxr_javadoccomment">     * Mock definition of TriggeringPolicy from extras companion.</em>
<a name="225" href="#225">225</a> <em class="jxr_javadoccomment">     */</em>
<a name="226" href="#226">226</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a> implements OptionHandler {
<a name="227" href="#227">227</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> activated = false;
<a name="228" href="#228">228</a> 
<a name="229" href="#229">229</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a>() {
<a name="230" href="#230">230</a> 
<a name="231" href="#231">231</a>         }
<a name="232" href="#232">232</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> activateOptions() {
<a name="233" href="#233">233</a>             activated = <strong class="jxr_keyword">true</strong>;
<a name="234" href="#234">234</a>         }
<a name="235" href="#235">235</a> 
<a name="236" href="#236">236</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isActivated() {
<a name="237" href="#237">237</a>             <strong class="jxr_keyword">return</strong> activated;
<a name="238" href="#238">238</a>         }
<a name="239" href="#239">239</a> 
<a name="240" href="#240">240</a>     }
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>     <em class="jxr_javadoccomment">/**</em>
<a name="243" href="#243">243</a> <em class="jxr_javadoccomment">     * Mock definition of FilterBasedTriggeringPolicy from extras companion.</em>
<a name="244" href="#244">244</a> <em class="jxr_javadoccomment">     */</em>
<a name="245" href="#245">245</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FilterBasedTriggeringPolicy</a> <strong class="jxr_keyword">extends</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a> {
<a name="246" href="#246">246</a>         <strong class="jxr_keyword">private</strong> Filter filter;
<a name="247" href="#247">247</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">FilterBasedTriggeringPolicy</a>() {
<a name="248" href="#248">248</a>         }
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(<strong class="jxr_keyword">final</strong> Filter val) {
<a name="251" href="#251">251</a>              filter = val;
<a name="252" href="#252">252</a>         }
<a name="253" href="#253">253</a> 
<a name="254" href="#254">254</a>         <strong class="jxr_keyword">public</strong> Filter getFilter() {
<a name="255" href="#255">255</a>             <strong class="jxr_keyword">return</strong> filter;
<a name="256" href="#256">256</a> 
<a name="257" href="#257">257</a>         }
<a name="258" href="#258">258</a>     }
<a name="259" href="#259">259</a> 
<a name="260" href="#260">260</a>     <em class="jxr_javadoccomment">/**</em>
<a name="261" href="#261">261</a> <em class="jxr_javadoccomment">     * Mock definition of org.apache.log4j.rolling.RollingFileAppender</em>
<a name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * from extras companion.</em>
<a name="263" href="#263">263</a> <em class="jxr_javadoccomment">     */</em>
<a name="264" href="#264">264</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingFileAppender</a> <strong class="jxr_keyword">extends</strong> AppenderSkeleton {
<a name="265" href="#265">265</a>         <strong class="jxr_keyword">private</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a> rollingPolicy;
<a name="266" href="#266">266</a>         <strong class="jxr_keyword">private</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a> triggeringPolicy;
<a name="267" href="#267">267</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> append;
<a name="268" href="#268">268</a> 
<a name="269" href="#269">269</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingFileAppender</a>() {
<a name="270" href="#270">270</a> 
<a name="271" href="#271">271</a>         }
<a name="272" href="#272">272</a> 
<a name="273" href="#273">273</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a> getRollingPolicy() {
<a name="274" href="#274">274</a>             <strong class="jxr_keyword">return</strong> rollingPolicy;
<a name="275" href="#275">275</a>         }
<a name="276" href="#276">276</a> 
<a name="277" href="#277">277</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRollingPolicy(<strong class="jxr_keyword">final</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">RollingPolicy</a> policy) {
<a name="278" href="#278">278</a>             rollingPolicy = policy;
<a name="279" href="#279">279</a>         }
<a name="280" href="#280">280</a> 
<a name="281" href="#281">281</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a> getTriggeringPolicy() {
<a name="282" href="#282">282</a>             <strong class="jxr_keyword">return</strong> triggeringPolicy;
<a name="283" href="#283">283</a>         }
<a name="284" href="#284">284</a> 
<a name="285" href="#285">285</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setTriggeringPolicy(<strong class="jxr_keyword">final</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">TriggeringPolicy</a> policy) {
<a name="286" href="#286">286</a>             triggeringPolicy = policy;
<a name="287" href="#287">287</a>         }
<a name="288" href="#288">288</a> 
<a name="289" href="#289">289</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getAppend() {
<a name="290" href="#290">290</a>             <strong class="jxr_keyword">return</strong> append;
<a name="291" href="#291">291</a>         }
<a name="292" href="#292">292</a> 
<a name="293" href="#293">293</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAppend(<strong class="jxr_keyword">boolean</strong> val) {
<a name="294" href="#294">294</a>             append = val;
<a name="295" href="#295">295</a>         }
<a name="296" href="#296">296</a> 
<a name="297" href="#297">297</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
<a name="298" href="#298">298</a> 
<a name="299" href="#299">299</a>         }
<a name="300" href="#300">300</a> 
<a name="301" href="#301">301</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> requiresLayout() {
<a name="302" href="#302">302</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="303" href="#303">303</a>         }
<a name="304" href="#304">304</a> 
<a name="305" href="#305">305</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> append(<strong class="jxr_keyword">final</strong> LoggingEvent event) {
<a name="306" href="#306">306</a> 
<a name="307" href="#307">307</a>         }
<a name="308" href="#308">308</a>     }
<a name="309" href="#309">309</a> 
<a name="310" href="#310">310</a>     <em class="jxr_javadoccomment">/**</em>
<a name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * Tests processing of nested objects, see bug 36384.</em>
<a name="312" href="#312">312</a> <em class="jxr_javadoccomment">     */</em>
<a name="313" href="#313">313</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNested() {
<a name="314" href="#314">314</a>         <strong class="jxr_keyword">try</strong> {
<a name="315" href="#315">315</a>             PropertyConfigurator.configure(<span class="jxr_string">"input/filter1.properties"</span>);
<a name="316" href="#316">316</a>             <strong class="jxr_keyword">this</strong>.validateNested();
<a name="317" href="#317">317</a>         } <strong class="jxr_keyword">finally</strong> {
<a name="318" href="#318">318</a>             LogManager.resetConfiguration();
<a name="319" href="#319">319</a>         }
<a name="320" href="#320">320</a>     }
<a name="321" href="#321">321</a> 
<a name="322" href="#322">322</a> 
<a name="323" href="#323">323</a>     <em class="jxr_javadoccomment">/**</em>
<a name="324" href="#324">324</a> <em class="jxr_javadoccomment">     * Mock ThrowableRenderer for testThrowableRenderer.  See bug 45721.</em>
<a name="325" href="#325">325</a> <em class="jxr_javadoccomment">     */</em>
<a name="326" href="#326">326</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">MockThrowableRenderer</a> implements ThrowableRenderer, OptionHandler {
<a name="327" href="#327">327</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> activated = false;
<a name="328" href="#328">328</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> showVersion = <strong class="jxr_keyword">true</strong>;
<a name="329" href="#329">329</a> 
<a name="330" href="#330">330</a>         <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">MockThrowableRenderer</a>() {
<a name="331" href="#331">331</a>         }
<a name="332" href="#332">332</a> 
<a name="333" href="#333">333</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> activateOptions() {
<a name="334" href="#334">334</a>             activated = <strong class="jxr_keyword">true</strong>;
<a name="335" href="#335">335</a>         }
<a name="336" href="#336">336</a> 
<a name="337" href="#337">337</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isActivated() {
<a name="338" href="#338">338</a>             <strong class="jxr_keyword">return</strong> activated;
<a name="339" href="#339">339</a>         }
<a name="340" href="#340">340</a> 
<a name="341" href="#341">341</a>         <strong class="jxr_keyword">public</strong> String[] doRender(<strong class="jxr_keyword">final</strong> Throwable t) {
<a name="342" href="#342">342</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> String[0];
<a name="343" href="#343">343</a>         }
<a name="344" href="#344">344</a> 
<a name="345" href="#345">345</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setShowVersion(<strong class="jxr_keyword">boolean</strong> v) {
<a name="346" href="#346">346</a>             showVersion = v;
<a name="347" href="#347">347</a>         }
<a name="348" href="#348">348</a> 
<a name="349" href="#349">349</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getShowVersion() {
<a name="350" href="#350">350</a>             <strong class="jxr_keyword">return</strong> showVersion;
<a name="351" href="#351">351</a>         }
<a name="352" href="#352">352</a>     }
<a name="353" href="#353">353</a> 
<a name="354" href="#354">354</a>     <em class="jxr_javadoccomment">/**</em>
<a name="355" href="#355">355</a> <em class="jxr_javadoccomment">     * Test of log4j.throwableRenderer support.  See bug 45721.</em>
<a name="356" href="#356">356</a> <em class="jxr_javadoccomment">     */</em>
<a name="357" href="#357">357</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testThrowableRenderer() {
<a name="358" href="#358">358</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="359" href="#359">359</a>         props.put(<span class="jxr_string">"log4j.throwableRenderer"</span>, <span class="jxr_string">"org.apache.log4j.PropertyConfiguratorTest$MockThrowableRenderer"</span>);
<a name="360" href="#360">360</a>         props.put(<span class="jxr_string">"log4j.throwableRenderer.showVersion"</span>, <span class="jxr_string">"false"</span>);
<a name="361" href="#361">361</a>         PropertyConfigurator.configure(props);
<a name="362" href="#362">362</a>         ThrowableRendererSupport repo = (ThrowableRendererSupport) LogManager.getLoggerRepository();
<a name="363" href="#363">363</a>         <a href="../../../org/apache/log4j/PropertyConfiguratorTest.html">MockThrowableRenderer</a> renderer = (MockThrowableRenderer) repo.getThrowableRenderer();
<a name="364" href="#364">364</a>         LogManager.resetConfiguration();
<a name="365" href="#365">365</a>         assertNotNull(renderer);
<a name="366" href="#366">366</a>         assertEquals(<strong class="jxr_keyword">true</strong>, renderer.isActivated());
<a name="367" href="#367">367</a>         assertEquals(false, renderer.getShowVersion());
<a name="368" href="#368">368</a>     }
<a name="369" href="#369">369</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

