<!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>LocationInfo xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/log4j/spi/LocationInfo.html">View Javadoc</a></div><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>  
<a name="18" href="#18">18</a>  <em class="jxr_comment">// Contributors: Mathias Rupprecht &lt;mmathias.rupprecht@fja.com&gt;</em>
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.log4j.spi;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.Layout;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.helpers.LogLog;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.PrintWriter;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.io.StringWriter;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.io.InterruptedIOException;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.Method;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.InvocationTargetException;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment">/**</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment">   The internal representation of caller location information.</em>
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">   @since 0.8.3</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment">*/</em>
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/spi/LocationInfo.html">LocationInfo</a> implements java.io.Serializable {
<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">     Caller's line number.</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment">  */</em>
<a name="41" href="#41">41</a>    <strong class="jxr_keyword">transient</strong> String lineNumber;
<a name="42" href="#42">42</a>    <em class="jxr_javadoccomment">/**</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment">     Caller's file name.</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment">  */</em>
<a name="45" href="#45">45</a>    <strong class="jxr_keyword">transient</strong> String fileName;
<a name="46" href="#46">46</a>    <em class="jxr_javadoccomment">/**</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">     Caller's fully qualified class name.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">  */</em>
<a name="49" href="#49">49</a>    <strong class="jxr_keyword">transient</strong> String className;
<a name="50" href="#50">50</a>    <em class="jxr_javadoccomment">/**</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     Caller's method name.</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment">  */</em>
<a name="53" href="#53">53</a>    <strong class="jxr_keyword">transient</strong> String methodName;
<a name="54" href="#54">54</a>    <em class="jxr_javadoccomment">/**</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     All available caller information, in the format</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     &lt;code&gt;fully.qualified.classname.of.caller.methodName(Filename.java:line)&lt;/code&gt;</em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment">    */</em>
<a name="58" href="#58">58</a>    <strong class="jxr_keyword">public</strong> String fullInfo;
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> StringWriter sw = <strong class="jxr_keyword">new</strong> StringWriter();
<a name="61" href="#61">61</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> PrintWriter pw = <strong class="jxr_keyword">new</strong> PrintWriter(sw);
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Method getStackTraceMethod;
<a name="64" href="#64">64</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Method getClassNameMethod;
<a name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Method getMethodNameMethod;
<a name="66" href="#66">66</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Method getFileNameMethod;
<a name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Method getLineNumberMethod;
<a name="68" href="#68">68</a>  
<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">     When location information is not available the constant</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     &lt;code&gt;NA&lt;/code&gt; is returned. Current value of this string</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     constant is &lt;b&gt;?&lt;/b&gt;.  */</em>
<a name="74" href="#74">74</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String NA = <span class="jxr_string">"?"</span>;
<a name="75" href="#75">75</a>  
<a name="76" href="#76">76</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = -1325822038990805636L;
<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">     * NA_LOCATION_INFO is provided for compatibility with log4j 1.3.</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     * @since 1.2.15</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     */</em>
<a name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/log4j/spi/LocationInfo.html">LocationInfo</a> NA_LOCATION_INFO =
<a name="83" href="#83">83</a>              <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/spi/LocationInfo.html">LocationInfo</a>(NA, NA, NA, NA);
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>    <em class="jxr_comment">// Check if we are running in IBM's visual age.</em>
<a name="88" href="#88">88</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> inVisualAge = false;
<a name="89" href="#89">89</a>    <strong class="jxr_keyword">static</strong> {
<a name="90" href="#90">90</a>      <strong class="jxr_keyword">try</strong> {
<a name="91" href="#91">91</a>        inVisualAge = Class.forName(<span class="jxr_string">"com.ibm.uvm.tools.DebugSupport"</span>) != <strong class="jxr_keyword">null</strong>;
<a name="92" href="#92">92</a>        LogLog.debug(<span class="jxr_string">"Detected IBM VisualAge environment."</span>);
<a name="93" href="#93">93</a>      } <strong class="jxr_keyword">catch</strong>(Throwable e) {
<a name="94" href="#94">94</a>        <em class="jxr_comment">// nothing to do</em>
<a name="95" href="#95">95</a>      }
<a name="96" href="#96">96</a>        <strong class="jxr_keyword">try</strong> {
<a name="97" href="#97">97</a>            Class[] noArgs = <strong class="jxr_keyword">null</strong>;
<a name="98" href="#98">98</a>            getStackTraceMethod = Throwable.<strong class="jxr_keyword">class</strong>.getMethod(<span class="jxr_string">"getStackTrace"</span>, noArgs);
<a name="99" href="#99">99</a>            Class stackTraceElementClass = Class.forName(<span class="jxr_string">"java.lang.StackTraceElement"</span>);
<a name="100" href="#100">100</a>           getClassNameMethod = stackTraceElementClass.getMethod(<span class="jxr_string">"getClassName"</span>, noArgs);
<a name="101" href="#101">101</a>           getMethodNameMethod = stackTraceElementClass.getMethod(<span class="jxr_string">"getMethodName"</span>, noArgs);
<a name="102" href="#102">102</a>           getFileNameMethod = stackTraceElementClass.getMethod(<span class="jxr_string">"getFileName"</span>, noArgs);
<a name="103" href="#103">103</a>           getLineNumberMethod = stackTraceElementClass.getMethod(<span class="jxr_string">"getLineNumber"</span>, noArgs);
<a name="104" href="#104">104</a>       } <strong class="jxr_keyword">catch</strong>(ClassNotFoundException ex) {
<a name="105" href="#105">105</a>           LogLog.debug(<span class="jxr_string">"LocationInfo will use pre-JDK 1.4 methods to determine location."</span>);
<a name="106" href="#106">106</a>       } <strong class="jxr_keyword">catch</strong>(NoSuchMethodException ex) {
<a name="107" href="#107">107</a>           LogLog.debug(<span class="jxr_string">"LocationInfo will use pre-JDK 1.4 methods to determine location."</span>);
<a name="108" href="#108">108</a>       }
<a name="109" href="#109">109</a>   }
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>   <em class="jxr_javadoccomment">/**</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     Instantiate location information based on a Throwable. We</em>
<a name="113" href="#113">113</a> <em class="jxr_javadoccomment">     expect the Throwable &lt;code&gt;t&lt;/code&gt;, to be in the format</em>
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">       &lt;pre&gt;</em>
<a name="116" href="#116">116</a> <em class="jxr_javadoccomment">        java.lang.Throwable</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">        ...</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">          at org.apache.log4j.PatternLayout.format(PatternLayout.java:413)</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">          at org.apache.log4j.FileAppender.doAppend(FileAppender.java:183)</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">        at org.apache.log4j.Category.callAppenders(Category.java:131)</em>
<a name="121" href="#121">121</a> <em class="jxr_javadoccomment">        at org.apache.log4j.Category.log(Category.java:512)</em>
<a name="122" href="#122">122</a> <em class="jxr_javadoccomment">        at callers.fully.qualified.className.methodName(FileName.java:74)</em>
<a name="123" href="#123">123</a> <em class="jxr_javadoccomment">	...</em>
<a name="124" href="#124">124</a> <em class="jxr_javadoccomment">       &lt;/pre&gt;</em>
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a> <em class="jxr_javadoccomment">       &lt;p&gt;However, we can also deal with JIT compilers that "lose" the</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">       location information, especially between the parentheses.</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">        @param t throwable used to determine location, may be null.</em>
<a name="129" href="#129">129</a> <em class="jxr_javadoccomment">        @param fqnOfCallingClass class name of first class considered part of</em>
<a name="130" href="#130">130</a> <em class="jxr_javadoccomment">           the logging framework.  Location will be site that calls a method on this class.</em>
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a> <em class="jxr_javadoccomment">    */</em>
<a name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/spi/LocationInfo.html">LocationInfo</a>(Throwable t, String fqnOfCallingClass) {
<a name="134" href="#134">134</a>       <strong class="jxr_keyword">if</strong>(t == <strong class="jxr_keyword">null</strong> || fqnOfCallingClass == <strong class="jxr_keyword">null</strong>)
<a name="135" href="#135">135</a> 	<strong class="jxr_keyword">return</strong>;
<a name="136" href="#136">136</a>       <strong class="jxr_keyword">if</strong> (getLineNumberMethod != <strong class="jxr_keyword">null</strong>) {
<a name="137" href="#137">137</a>           <strong class="jxr_keyword">try</strong> {
<a name="138" href="#138">138</a>               Object[] noArgs = <strong class="jxr_keyword">null</strong>;
<a name="139" href="#139">139</a>               Object[] elements =  (Object[]) getStackTraceMethod.invoke(t, noArgs);
<a name="140" href="#140">140</a>               String prevClass = NA;
<a name="141" href="#141">141</a>               <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> i = elements.length - 1; i &gt;= 0; i--) {
<a name="142" href="#142">142</a>                   String thisClass = (String) getClassNameMethod.invoke(elements[i], noArgs);
<a name="143" href="#143">143</a>                   <strong class="jxr_keyword">if</strong>(fqnOfCallingClass.equals(thisClass)) {
<a name="144" href="#144">144</a>                       <strong class="jxr_keyword">int</strong> caller = i + 1;
<a name="145" href="#145">145</a>                       <strong class="jxr_keyword">if</strong> (caller &lt; elements.length) {
<a name="146" href="#146">146</a>                           className = prevClass;
<a name="147" href="#147">147</a>                           methodName = (String) getMethodNameMethod.invoke(elements[caller], noArgs);
<a name="148" href="#148">148</a>                           fileName = (String) getFileNameMethod.invoke(elements[caller], noArgs);
<a name="149" href="#149">149</a>                           <strong class="jxr_keyword">if</strong> (fileName == <strong class="jxr_keyword">null</strong>) {
<a name="150" href="#150">150</a>                               fileName = NA;
<a name="151" href="#151">151</a>                           }
<a name="152" href="#152">152</a>                           <strong class="jxr_keyword">int</strong> line = ((Integer) getLineNumberMethod.invoke(elements[caller], noArgs)).intValue();
<a name="153" href="#153">153</a>                           <strong class="jxr_keyword">if</strong> (line &lt; 0) {
<a name="154" href="#154">154</a>                               lineNumber = NA;
<a name="155" href="#155">155</a>                           } <strong class="jxr_keyword">else</strong> {
<a name="156" href="#156">156</a>                               lineNumber = String.valueOf(line);
<a name="157" href="#157">157</a>                           }
<a name="158" href="#158">158</a>                           StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="159" href="#159">159</a>                           buf.append(className);
<a name="160" href="#160">160</a>                           buf.append(<span class="jxr_string">"."</span>);
<a name="161" href="#161">161</a>                           buf.append(methodName);
<a name="162" href="#162">162</a>                           buf.append(<span class="jxr_string">"("</span>);
<a name="163" href="#163">163</a>                           buf.append(fileName);
<a name="164" href="#164">164</a>                           buf.append(<span class="jxr_string">":"</span>);
<a name="165" href="#165">165</a>                           buf.append(lineNumber);
<a name="166" href="#166">166</a>                           buf.append(<span class="jxr_string">")"</span>);
<a name="167" href="#167">167</a>                           <strong class="jxr_keyword">this</strong>.fullInfo = buf.toString();
<a name="168" href="#168">168</a>                       }
<a name="169" href="#169">169</a>                       <strong class="jxr_keyword">return</strong>;
<a name="170" href="#170">170</a>                   }
<a name="171" href="#171">171</a>                   prevClass = thisClass;
<a name="172" href="#172">172</a>               }
<a name="173" href="#173">173</a>               <strong class="jxr_keyword">return</strong>;
<a name="174" href="#174">174</a>           } <strong class="jxr_keyword">catch</strong>(IllegalAccessException ex) {
<a name="175" href="#175">175</a>               LogLog.debug(<span class="jxr_string">"LocationInfo failed using JDK 1.4 methods"</span>, ex);
<a name="176" href="#176">176</a>           } <strong class="jxr_keyword">catch</strong>(InvocationTargetException ex) {
<a name="177" href="#177">177</a>               <strong class="jxr_keyword">if</strong> (ex.getTargetException() instanceof InterruptedException
<a name="178" href="#178">178</a>                       || ex.getTargetException() instanceof InterruptedIOException) {
<a name="179" href="#179">179</a>                   Thread.currentThread().interrupt();
<a name="180" href="#180">180</a>               }
<a name="181" href="#181">181</a>               LogLog.debug(<span class="jxr_string">"LocationInfo failed using JDK 1.4 methods"</span>, ex);
<a name="182" href="#182">182</a>           } <strong class="jxr_keyword">catch</strong>(RuntimeException ex) {
<a name="183" href="#183">183</a>               LogLog.debug(<span class="jxr_string">"LocationInfo failed using JDK 1.4 methods"</span>, ex);
<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>       String s;
<a name="188" href="#188">188</a>       <em class="jxr_comment">// Protect against multiple access to sw.</em>
<a name="189" href="#189">189</a>       <strong class="jxr_keyword">synchronized</strong>(sw) {
<a name="190" href="#190">190</a> 	t.printStackTrace(pw);
<a name="191" href="#191">191</a> 	s = sw.toString();
<a name="192" href="#192">192</a> 	sw.getBuffer().setLength(0);
<a name="193" href="#193">193</a>       }
<a name="194" href="#194">194</a>       <em class="jxr_comment">//System.out.println("s is ["+s+"].");</em>
<a name="195" href="#195">195</a>       <strong class="jxr_keyword">int</strong> ibegin, iend;
<a name="196" href="#196">196</a> 
<a name="197" href="#197">197</a>       <em class="jxr_comment">// Given the current structure of the package, the line</em>
<a name="198" href="#198">198</a>       <em class="jxr_comment">// containing "org.apache.log4j.Category." should be printed just</em>
<a name="199" href="#199">199</a>       <em class="jxr_comment">// before the caller.</em>
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>       <em class="jxr_comment">// This method of searching may not be fastest but it's safer</em>
<a name="202" href="#202">202</a>       <em class="jxr_comment">// than counting the stack depth which is not guaranteed to be</em>
<a name="203" href="#203">203</a>       <em class="jxr_comment">// constant across JVM implementations.</em>
<a name="204" href="#204">204</a>       ibegin = s.lastIndexOf(fqnOfCallingClass);
<a name="205" href="#205">205</a>       <strong class="jxr_keyword">if</strong>(ibegin == -1)
<a name="206" href="#206">206</a> 	<strong class="jxr_keyword">return</strong>;
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>       <em class="jxr_comment">//</em>
<a name="209" href="#209">209</a>       <em class="jxr_comment">//   if the next character after the class name exists</em>
<a name="210" href="#210">210</a>       <em class="jxr_comment">//       but is not a period, see if the classname is</em>
<a name="211" href="#211">211</a>       <em class="jxr_comment">//       followed by a period earlier in the trace.</em>
<a name="212" href="#212">212</a>       <em class="jxr_comment">//       Minimizes mistakeningly matching on a class whose</em>
<a name="213" href="#213">213</a>       <em class="jxr_comment">//       name is a substring of the desired class.</em>
<a name="214" href="#214">214</a>       <em class="jxr_comment">//       See bug 44888.</em>
<a name="215" href="#215">215</a>       <strong class="jxr_keyword">if</strong> (ibegin + fqnOfCallingClass.length() &lt; s.length() &amp;&amp;
<a name="216" href="#216">216</a>               s.charAt(ibegin + fqnOfCallingClass.length()) != '.') {
<a name="217" href="#217">217</a>           <strong class="jxr_keyword">int</strong> i = s.lastIndexOf(fqnOfCallingClass + <span class="jxr_string">"."</span>);
<a name="218" href="#218">218</a>           <strong class="jxr_keyword">if</strong> (i != -1) {
<a name="219" href="#219">219</a>               ibegin = i;
<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> 
<a name="224" href="#224">224</a>       ibegin = s.indexOf(Layout.LINE_SEP, ibegin);
<a name="225" href="#225">225</a>       <strong class="jxr_keyword">if</strong>(ibegin == -1)
<a name="226" href="#226">226</a> 	<strong class="jxr_keyword">return</strong>;
<a name="227" href="#227">227</a>       ibegin+= Layout.LINE_SEP_LEN;
<a name="228" href="#228">228</a> 
<a name="229" href="#229">229</a>       <em class="jxr_comment">// determine end of line</em>
<a name="230" href="#230">230</a>       iend = s.indexOf(Layout.LINE_SEP, ibegin);
<a name="231" href="#231">231</a>       <strong class="jxr_keyword">if</strong>(iend == -1)
<a name="232" href="#232">232</a> 	<strong class="jxr_keyword">return</strong>;
<a name="233" href="#233">233</a> 
<a name="234" href="#234">234</a>       <em class="jxr_comment">// VA has a different stack trace format which doesn't</em>
<a name="235" href="#235">235</a>       <em class="jxr_comment">// need to skip the inital 'at'</em>
<a name="236" href="#236">236</a>       <strong class="jxr_keyword">if</strong>(!inVisualAge) {
<a name="237" href="#237">237</a> 	<em class="jxr_comment">// back up to first blank character</em>
<a name="238" href="#238">238</a> 	ibegin = s.lastIndexOf(<span class="jxr_string">"at "</span>, iend);
<a name="239" href="#239">239</a> 	<strong class="jxr_keyword">if</strong>(ibegin == -1)
<a name="240" href="#240">240</a> 	  <strong class="jxr_keyword">return</strong>;
<a name="241" href="#241">241</a> 	<em class="jxr_comment">// Add 3 to skip "at ";</em>
<a name="242" href="#242">242</a> 	ibegin += 3;
<a name="243" href="#243">243</a>       }
<a name="244" href="#244">244</a>       <em class="jxr_comment">// everything between is the requested stack item</em>
<a name="245" href="#245">245</a>       <strong class="jxr_keyword">this</strong>.fullInfo = s.substring(ibegin, iend);
<a name="246" href="#246">246</a>     }
<a name="247" href="#247">247</a> 
<a name="248" href="#248">248</a>     <em class="jxr_javadoccomment">/**</em>
<a name="249" href="#249">249</a> <em class="jxr_javadoccomment">     *   Appends a location fragment to a buffer to build the </em>
<a name="250" href="#250">250</a> <em class="jxr_javadoccomment">     *     full location info.</em>
<a name="251" href="#251">251</a> <em class="jxr_javadoccomment">     *    @param buf StringBuffer to receive content.</em>
<a name="252" href="#252">252</a> <em class="jxr_javadoccomment">     *    @param fragment fragment of location (class, method, file, line),</em>
<a name="253" href="#253">253</a> <em class="jxr_javadoccomment">     *        if null the value of NA will be appended.</em>
<a name="254" href="#254">254</a> <em class="jxr_javadoccomment">     *    @since 1.2.15</em>
<a name="255" href="#255">255</a> <em class="jxr_javadoccomment">     */</em>
<a name="256" href="#256">256</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> appendFragment(<strong class="jxr_keyword">final</strong> StringBuffer buf,
<a name="257" href="#257">257</a>                                              <strong class="jxr_keyword">final</strong> String fragment) {
<a name="258" href="#258">258</a>           <strong class="jxr_keyword">if</strong> (fragment == <strong class="jxr_keyword">null</strong>) {
<a name="259" href="#259">259</a>              buf.append(NA);
<a name="260" href="#260">260</a>           } <strong class="jxr_keyword">else</strong> {
<a name="261" href="#261">261</a>              buf.append(fragment);
<a name="262" href="#262">262</a>           }
<a name="263" href="#263">263</a>     }
<a name="264" href="#264">264</a> 
<a name="265" href="#265">265</a>     <em class="jxr_javadoccomment">/**</em>
<a name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * Create new instance.</em>
<a name="267" href="#267">267</a> <em class="jxr_javadoccomment">     * @param file source file name</em>
<a name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @param classname class name</em>
<a name="269" href="#269">269</a> <em class="jxr_javadoccomment">     * @param method method</em>
<a name="270" href="#270">270</a> <em class="jxr_javadoccomment">     * @param line source line number</em>
<a name="271" href="#271">271</a> <em class="jxr_javadoccomment">     *</em>
<a name="272" href="#272">272</a> <em class="jxr_javadoccomment">     * @since 1.2.15</em>
<a name="273" href="#273">273</a> <em class="jxr_javadoccomment">     */</em>
<a name="274" href="#274">274</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/spi/LocationInfo.html">LocationInfo</a>(
<a name="275" href="#275">275</a>       <strong class="jxr_keyword">final</strong> String file,
<a name="276" href="#276">276</a>       <strong class="jxr_keyword">final</strong> String classname,
<a name="277" href="#277">277</a>       <strong class="jxr_keyword">final</strong> String method,
<a name="278" href="#278">278</a>       <strong class="jxr_keyword">final</strong> String line) {
<a name="279" href="#279">279</a>       <strong class="jxr_keyword">this</strong>.fileName = file;
<a name="280" href="#280">280</a>       <strong class="jxr_keyword">this</strong>.className = classname;
<a name="281" href="#281">281</a>       <strong class="jxr_keyword">this</strong>.methodName = method;
<a name="282" href="#282">282</a>       <strong class="jxr_keyword">this</strong>.lineNumber = line;
<a name="283" href="#283">283</a>       StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="284" href="#284">284</a> 	  appendFragment(buf, classname);
<a name="285" href="#285">285</a> 	  buf.append(<span class="jxr_string">"."</span>);
<a name="286" href="#286">286</a> 	  appendFragment(buf, method);
<a name="287" href="#287">287</a> 	  buf.append(<span class="jxr_string">"("</span>);
<a name="288" href="#288">288</a> 	  appendFragment(buf, file);
<a name="289" href="#289">289</a> 	  buf.append(<span class="jxr_string">":"</span>);
<a name="290" href="#290">290</a> 	  appendFragment(buf, line);
<a name="291" href="#291">291</a> 	  buf.append(<span class="jxr_string">")"</span>);
<a name="292" href="#292">292</a> 	  <strong class="jxr_keyword">this</strong>.fullInfo = buf.toString();
<a name="293" href="#293">293</a>     }
<a name="294" href="#294">294</a> 
<a name="295" href="#295">295</a>     <em class="jxr_javadoccomment">/**</em>
<a name="296" href="#296">296</a> <em class="jxr_javadoccomment">       Return the fully qualified class name of the caller making the</em>
<a name="297" href="#297">297</a> <em class="jxr_javadoccomment">       logging request.</em>
<a name="298" href="#298">298</a> <em class="jxr_javadoccomment">    */</em>
<a name="299" href="#299">299</a>     <strong class="jxr_keyword">public</strong>
<a name="300" href="#300">300</a>     String getClassName() {
<a name="301" href="#301">301</a>       <strong class="jxr_keyword">if</strong>(fullInfo == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> NA;
<a name="302" href="#302">302</a>       <strong class="jxr_keyword">if</strong>(className == <strong class="jxr_keyword">null</strong>) {
<a name="303" href="#303">303</a> 	<em class="jxr_comment">// Starting the search from '(' is safer because there is</em>
<a name="304" href="#304">304</a> 	<em class="jxr_comment">// potentially a dot between the parentheses.</em>
<a name="305" href="#305">305</a> 	<strong class="jxr_keyword">int</strong> iend = fullInfo.lastIndexOf('(');
<a name="306" href="#306">306</a> 	<strong class="jxr_keyword">if</strong>(iend == -1)
<a name="307" href="#307">307</a> 	  className = NA;
<a name="308" href="#308">308</a> 	<strong class="jxr_keyword">else</strong> {
<a name="309" href="#309">309</a> 	  iend =fullInfo.lastIndexOf('.', iend);
<a name="310" href="#310">310</a> 
<a name="311" href="#311">311</a> 	  <em class="jxr_comment">// This is because a stack trace in VisualAge looks like:</em>
<a name="312" href="#312">312</a> 
<a name="313" href="#313">313</a>           <em class="jxr_comment">//java.lang.RuntimeException</em>
<a name="314" href="#314">314</a> 	  <em class="jxr_comment">//  java.lang.Throwable()</em>
<a name="315" href="#315">315</a> 	  <em class="jxr_comment">//  java.lang.Exception()</em>
<a name="316" href="#316">316</a> 	  <em class="jxr_comment">//  java.lang.RuntimeException()</em>
<a name="317" href="#317">317</a> 	  <em class="jxr_comment">//  void test.test.B.print()</em>
<a name="318" href="#318">318</a> 	  <em class="jxr_comment">//  void test.test.A.printIndirect()</em>
<a name="319" href="#319">319</a> 	  <em class="jxr_comment">//  void test.test.Run.main(java.lang.String [])</em>
<a name="320" href="#320">320</a>           <strong class="jxr_keyword">int</strong> ibegin = 0;
<a name="321" href="#321">321</a> 	  <strong class="jxr_keyword">if</strong> (inVisualAge) {
<a name="322" href="#322">322</a> 	    ibegin = fullInfo.lastIndexOf(' ', iend)+1;
<a name="323" href="#323">323</a>           }
<a name="324" href="#324">324</a> 
<a name="325" href="#325">325</a> 	  <strong class="jxr_keyword">if</strong>(iend == -1)
<a name="326" href="#326">326</a> 	    className = NA;
<a name="327" href="#327">327</a> 	  <strong class="jxr_keyword">else</strong>
<a name="328" href="#328">328</a> 	    className = <strong class="jxr_keyword">this</strong>.fullInfo.substring(ibegin, iend);
<a name="329" href="#329">329</a> 	}
<a name="330" href="#330">330</a>       }
<a name="331" href="#331">331</a>       <strong class="jxr_keyword">return</strong> className;
<a name="332" href="#332">332</a>     }
<a name="333" href="#333">333</a> 
<a name="334" href="#334">334</a>     <em class="jxr_javadoccomment">/**</em>
<a name="335" href="#335">335</a> <em class="jxr_javadoccomment">       Return the file name of the caller.</em>
<a name="336" href="#336">336</a> 
<a name="337" href="#337">337</a> <em class="jxr_javadoccomment">       &lt;p&gt;This information is not always available.</em>
<a name="338" href="#338">338</a> <em class="jxr_javadoccomment">    */</em>
<a name="339" href="#339">339</a>     <strong class="jxr_keyword">public</strong>
<a name="340" href="#340">340</a>     String getFileName() {
<a name="341" href="#341">341</a>       <strong class="jxr_keyword">if</strong>(fullInfo == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> NA;
<a name="342" href="#342">342</a> 
<a name="343" href="#343">343</a>       <strong class="jxr_keyword">if</strong>(fileName == <strong class="jxr_keyword">null</strong>) {
<a name="344" href="#344">344</a> 	<strong class="jxr_keyword">int</strong> iend = fullInfo.lastIndexOf(':');
<a name="345" href="#345">345</a> 	<strong class="jxr_keyword">if</strong>(iend == -1)
<a name="346" href="#346">346</a> 	  fileName = NA;
<a name="347" href="#347">347</a> 	<strong class="jxr_keyword">else</strong> {
<a name="348" href="#348">348</a> 	  <strong class="jxr_keyword">int</strong> ibegin = fullInfo.lastIndexOf('(', iend - 1);
<a name="349" href="#349">349</a> 	  fileName = <strong class="jxr_keyword">this</strong>.fullInfo.substring(ibegin + 1, iend);
<a name="350" href="#350">350</a> 	}
<a name="351" href="#351">351</a>       }
<a name="352" href="#352">352</a>       <strong class="jxr_keyword">return</strong> fileName;
<a name="353" href="#353">353</a>     }
<a name="354" href="#354">354</a> 
<a name="355" href="#355">355</a>     <em class="jxr_javadoccomment">/**</em>
<a name="356" href="#356">356</a> <em class="jxr_javadoccomment">       Returns the line number of the caller.</em>
<a name="357" href="#357">357</a> 
<a name="358" href="#358">358</a> <em class="jxr_javadoccomment">       &lt;p&gt;This information is not always available.</em>
<a name="359" href="#359">359</a> <em class="jxr_javadoccomment">    */</em>
<a name="360" href="#360">360</a>     <strong class="jxr_keyword">public</strong>
<a name="361" href="#361">361</a>     String getLineNumber() {
<a name="362" href="#362">362</a>       <strong class="jxr_keyword">if</strong>(fullInfo == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> NA;
<a name="363" href="#363">363</a> 
<a name="364" href="#364">364</a>       <strong class="jxr_keyword">if</strong>(lineNumber == <strong class="jxr_keyword">null</strong>) {
<a name="365" href="#365">365</a> 	<strong class="jxr_keyword">int</strong> iend = fullInfo.lastIndexOf(')');
<a name="366" href="#366">366</a> 	<strong class="jxr_keyword">int</strong> ibegin = fullInfo.lastIndexOf(':', iend -1);
<a name="367" href="#367">367</a> 	<strong class="jxr_keyword">if</strong>(ibegin == -1)
<a name="368" href="#368">368</a> 	  lineNumber = NA;
<a name="369" href="#369">369</a> 	<strong class="jxr_keyword">else</strong>
<a name="370" href="#370">370</a> 	  lineNumber = <strong class="jxr_keyword">this</strong>.fullInfo.substring(ibegin + 1, iend);
<a name="371" href="#371">371</a>       }
<a name="372" href="#372">372</a>       <strong class="jxr_keyword">return</strong> lineNumber;
<a name="373" href="#373">373</a>     }
<a name="374" href="#374">374</a> 
<a name="375" href="#375">375</a>     <em class="jxr_javadoccomment">/**</em>
<a name="376" href="#376">376</a> <em class="jxr_javadoccomment">       Returns the method name of the caller.</em>
<a name="377" href="#377">377</a> <em class="jxr_javadoccomment">    */</em>
<a name="378" href="#378">378</a>     <strong class="jxr_keyword">public</strong>
<a name="379" href="#379">379</a>     String getMethodName() {
<a name="380" href="#380">380</a>       <strong class="jxr_keyword">if</strong>(fullInfo == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> NA;
<a name="381" href="#381">381</a>       <strong class="jxr_keyword">if</strong>(methodName == <strong class="jxr_keyword">null</strong>) {
<a name="382" href="#382">382</a> 	<strong class="jxr_keyword">int</strong> iend = fullInfo.lastIndexOf('(');
<a name="383" href="#383">383</a> 	<strong class="jxr_keyword">int</strong> ibegin = fullInfo.lastIndexOf('.', iend);
<a name="384" href="#384">384</a> 	<strong class="jxr_keyword">if</strong>(ibegin == -1)
<a name="385" href="#385">385</a> 	  methodName = NA;
<a name="386" href="#386">386</a> 	<strong class="jxr_keyword">else</strong>
<a name="387" href="#387">387</a> 	  methodName = <strong class="jxr_keyword">this</strong>.fullInfo.substring(ibegin + 1, iend);
<a name="388" href="#388">388</a>       }
<a name="389" href="#389">389</a>       <strong class="jxr_keyword">return</strong> methodName;
<a name="390" href="#390">390</a>     }
<a name="391" href="#391">391</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

