<!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>RewriteAppenderTest 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.rewrite;
<a name="18" href="#18">18</a>  
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">import</strong> junit.framework.*;
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.*;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.util.Compare;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.xml.*;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.TreeMap;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Hashtable;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> javax.xml.parsers.*;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.*;
<a name="31" href="#31">31</a>  
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">RewriteAppenderTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="33" href="#33">33</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">RewriteAppenderTest</a>(<strong class="jxr_keyword">final</strong> String name) {
<a name="34" href="#34">34</a>          <strong class="jxr_keyword">super</strong>(name);
<a name="35" href="#35">35</a>      }
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a name="38" href="#38">38</a>          LogManager.getLoggerRepository().resetConfiguration();
<a name="39" href="#39">39</a>          Hashtable context = MDC.getContext();
<a name="40" href="#40">40</a>          <strong class="jxr_keyword">if</strong> (context != <strong class="jxr_keyword">null</strong>) {
<a name="41" href="#41">41</a>              context.clear();
<a name="42" href="#42">42</a>          }
<a name="43" href="#43">43</a>      }
<a name="44" href="#44">44</a>  
<a name="45" href="#45">45</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a name="46" href="#46">46</a>          LogManager.getLoggerRepository().shutdown();
<a name="47" href="#47">47</a>      }
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> configure(<strong class="jxr_keyword">final</strong> String resourceName) <strong class="jxr_keyword">throws</strong> Exception {
<a name="50" href="#50">50</a>          InputStream is = RewriteAppenderTest.<strong class="jxr_keyword">class</strong>.getResourceAsStream(resourceName);
<a name="51" href="#51">51</a>          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
<a name="52" href="#52">52</a>          factory.setNamespaceAware(false);
<a name="53" href="#53">53</a>          DocumentBuilder builder = factory.newDocumentBuilder();
<a name="54" href="#54">54</a>          Document doc = builder.parse(is);
<a name="55" href="#55">55</a>          DOMConfigurator.configure(doc.getDocumentElement());
<a name="56" href="#56">56</a>      }
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>  
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMapPolicy() <strong class="jxr_keyword">throws</strong> Exception {
<a name="60" href="#60">60</a>          configure(<span class="jxr_string">"map.xml"</span>);
<a name="61" href="#61">61</a>          Logger logger = Logger.getLogger(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>);
<a name="62" href="#62">62</a>          logger.info(<span class="jxr_string">"Message 0"</span>);
<a name="63" href="#63">63</a>          MDC.put(<span class="jxr_string">"p1"</span>, <span class="jxr_string">"Hola"</span>);
<a name="64" href="#64">64</a>  
<a name="65" href="#65">65</a>          Map msg = <strong class="jxr_keyword">new</strong> TreeMap();
<a name="66" href="#66">66</a>          msg.put(<span class="jxr_string">"p1"</span>, <span class="jxr_string">"Hello"</span>);
<a name="67" href="#67">67</a>          msg.put(<span class="jxr_string">"p2"</span>, <span class="jxr_string">"World"</span>);
<a name="68" href="#68">68</a>          msg.put(<span class="jxr_string">"x1"</span>, <span class="jxr_string">"Mundo"</span>);
<a name="69" href="#69">69</a>          logger.info(msg);
<a name="70" href="#70">70</a>          msg.put(<span class="jxr_string">"message"</span>, <span class="jxr_string">"Message 1"</span>);
<a name="71" href="#71">71</a>          logger.info(msg);
<a name="72" href="#72">72</a>          assertTrue(Compare.compare(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"temp"</span>, <span class="jxr_string">"map.log"</span>));
<a name="73" href="#73">73</a>      }
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">BaseBean</a> {
<a name="76" href="#76">76</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Object p2;
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Object x1;
<a name="78" href="#78">78</a>  
<a name="79" href="#79">79</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">BaseBean</a>(<strong class="jxr_keyword">final</strong> Object p2,
<a name="80" href="#80">80</a>                          <strong class="jxr_keyword">final</strong> Object x1) {
<a name="81" href="#81">81</a>               <strong class="jxr_keyword">this</strong>.p2 = p2;
<a name="82" href="#82">82</a>               <strong class="jxr_keyword">this</strong>.x1 = x1;
<a name="83" href="#83">83</a>          }
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>          <strong class="jxr_keyword">public</strong> Object getP2() {
<a name="86" href="#86">86</a>              <strong class="jxr_keyword">return</strong> p2;
<a name="87" href="#87">87</a>          }
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>          <strong class="jxr_keyword">public</strong> Object getX1() {
<a name="90" href="#90">90</a>              <strong class="jxr_keyword">return</strong> x1;
<a name="91" href="#91">91</a>          }
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>          <strong class="jxr_keyword">public</strong> String toString() {
<a name="94" href="#94">94</a>              <strong class="jxr_keyword">return</strong> <span class="jxr_string">"I am bean."</span>;
<a name="95" href="#95">95</a>          }
<a name="96" href="#96">96</a>      }
<a name="97" href="#97">97</a>  
<a name="98" href="#98">98</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">MessageBean</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">BaseBean</a> {
<a name="99" href="#99">99</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Object msg;
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">MessageBean</a>(<strong class="jxr_keyword">final</strong> Object msg,
<a name="102" href="#102">102</a>                            <strong class="jxr_keyword">final</strong> Object p2,
<a name="103" href="#103">103</a>                            <strong class="jxr_keyword">final</strong> Object x1) {
<a name="104" href="#104">104</a>             <strong class="jxr_keyword">super</strong>(p2, x1);
<a name="105" href="#105">105</a>             <strong class="jxr_keyword">this</strong>.msg = msg;
<a name="106" href="#106">106</a>         }
<a name="107" href="#107">107</a> 
<a name="108" href="#108">108</a>         <strong class="jxr_keyword">public</strong> Object getMessage() {
<a name="109" href="#109">109</a>             <strong class="jxr_keyword">return</strong> msg;
<a name="110" href="#110">110</a>         }
<a name="111" href="#111">111</a>     }
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReflectionPolicy() <strong class="jxr_keyword">throws</strong> Exception {
<a name="114" href="#114">114</a>         configure(<span class="jxr_string">"reflection.xml"</span>);
<a name="115" href="#115">115</a>         Logger logger = Logger.getLogger(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>);
<a name="116" href="#116">116</a>         logger.info(<span class="jxr_string">"Message 0"</span>);
<a name="117" href="#117">117</a>         logger.info(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">BaseBean</a>(<span class="jxr_string">"Hello"</span>, <span class="jxr_string">"World"</span> ));
<a name="118" href="#118">118</a>         MDC.put(<span class="jxr_string">"p1"</span>, <span class="jxr_string">"Hola"</span>);
<a name="119" href="#119">119</a>         MDC.put(<span class="jxr_string">"p2"</span>, <span class="jxr_string">"p2"</span>);
<a name="120" href="#120">120</a>         logger.info(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/rewrite/RewriteAppenderTest.html">MessageBean</a>(<span class="jxr_string">"Welcome to The Hub"</span>, <span class="jxr_string">"Hello"</span>, <span class="jxr_string">"World"</span> ));
<a name="121" href="#121">121</a>         assertTrue(Compare.compare(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"temp"</span>, <span class="jxr_string">"reflection.log"</span>));
<a name="122" href="#122">122</a>     }
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPropertyPolicy() <strong class="jxr_keyword">throws</strong> Exception {
<a name="125" href="#125">125</a>         configure(<span class="jxr_string">"property.xml"</span>);
<a name="126" href="#126">126</a>         Logger logger = Logger.getLogger(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>);
<a name="127" href="#127">127</a>         logger.info(<span class="jxr_string">"Message 0"</span>);
<a name="128" href="#128">128</a>         MDC.put(<span class="jxr_string">"p1"</span>, <span class="jxr_string">"Hola"</span>);
<a name="129" href="#129">129</a>         logger.info(<span class="jxr_string">"Message 1"</span>);
<a name="130" href="#130">130</a>         assertTrue(Compare.compare(RewriteAppenderTest.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"temp"</span>, <span class="jxr_string">"property.log"</span>));
<a name="131" href="#131">131</a>     }
<a name="132" href="#132">132</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

