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

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.app.event;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <em class="jxr_comment">/*</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> * under the License.    </em>
<a name="20" href="#20">20</a>  <em class="jxr_comment"> */</em>
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.context.InternalContextAdapter;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.RuntimeServices;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.ExceptionUtils;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.introspection.Info;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * Calls on request all registered event handlers for a particular event. Each</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * method accepts two event cartridges (typically one from the application and</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * one from the context). All appropriate event handlers are executed in order</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * until a stopping condition is met. See the docs for the individual methods to</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * see what the stopping condition is for that method.</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> *</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:wglass@wglass@forio.com" target="alexandria_uri">mailto:wglass@wglass@forio.com</a>"&gt;Will Glass-Husain &lt;/a&gt;</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * @version $Id: EventHandlerUtil.java 470256 2006-11-02 07:20:36Z wglass $</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> */</em>
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/velocity/app/event/EventHandlerUtil.html">EventHandlerUtil</a> {
<a name="41" href="#41">41</a>      
<a name="42" href="#42">42</a>      
<a name="43" href="#43">43</a>      <em class="jxr_javadoccomment">/**</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment">     * Called before a reference is inserted. All event handlers are called in</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment">     * sequence. The default implementation inserts the reference as is.</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment">     *</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">     * @param reference reference from template about to be inserted</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     * @param value value about to be inserted (after toString() )</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * @param context The internal context adapter.</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @return Object on which toString() should be called for output.</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">static</strong> Object referenceInsert(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="54" href="#54">54</a>              <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, String reference, Object value)
<a name="55" href="#55">55</a>      {
<a name="56" href="#56">56</a>          <em class="jxr_comment">// app level cartridges have already been initialized</em>
<a name="57" href="#57">57</a>          <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev1 = rsvc.getApplicationEventCartridge();
<a name="58" href="#58">58</a>          Iterator applicationEventHandlerIterator = 
<a name="59" href="#59">59</a>              (ev1 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev1.getReferenceInsertionEventHandlers();              
<a name="60" href="#60">60</a>          
<a name="61" href="#61">61</a>          <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev2 = context.getEventCartridge();
<a name="62" href="#62">62</a>          initializeEventCartridge(rsvc, ev2);
<a name="63" href="#63">63</a>          Iterator contextEventHandlerIterator = 
<a name="64" href="#64">64</a>              (ev2 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev2.getReferenceInsertionEventHandlers();              
<a name="65" href="#65">65</a>          
<a name="66" href="#66">66</a>          <strong class="jxr_keyword">try</strong> 
<a name="67" href="#67">67</a>          {
<a name="68" href="#68">68</a>              <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> methodExecutor = 
<a name="69" href="#69">69</a>                  <strong class="jxr_keyword">new</strong> ReferenceInsertionEventHandler.referenceInsertExecutor(context, reference, value);
<a name="70" href="#70">70</a>  
<a name="71" href="#71">71</a>              callEventHandlers(
<a name="72" href="#72">72</a>                      applicationEventHandlerIterator, 
<a name="73" href="#73">73</a>                      contextEventHandlerIterator, methodExecutor);
<a name="74" href="#74">74</a>              
<a name="75" href="#75">75</a>              <strong class="jxr_keyword">return</strong> methodExecutor.getReturnValue();   
<a name="76" href="#76">76</a>          }
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">catch</strong> (RuntimeException e)
<a name="78" href="#78">78</a>          {
<a name="79" href="#79">79</a>              <strong class="jxr_keyword">throw</strong> e;
<a name="80" href="#80">80</a>          }
<a name="81" href="#81">81</a>          <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="82" href="#82">82</a>          {
<a name="83" href="#83">83</a>              <strong class="jxr_keyword">throw</strong> ExceptionUtils.createRuntimeException(<span class="jxr_string">"Exception in event handler."</span>,e);
<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_javadoccomment">/**</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * Called when a null is evaluated during a #set. All event handlers are</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * called in sequence until a false is returned. The default implementation</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     * always returns true.</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     *</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     * @param lhs Left hand side of the expression.</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * @param rhs Right hand side of the expression.</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * @param context The internal context adapter.</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * @return true if to be logged, false otherwise</em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     */</em>
<a name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> shouldLogOnNullSet(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="99" href="#99">99</a>              <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, String lhs, String rhs)
<a name="100" href="#100">100</a>     {
<a name="101" href="#101">101</a>         <em class="jxr_comment">// app level cartridges have already been initialized</em>
<a name="102" href="#102">102</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev1 = rsvc.getApplicationEventCartridge();
<a name="103" href="#103">103</a>         Iterator applicationEventHandlerIterator = 
<a name="104" href="#104">104</a>             (ev1 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev1.getNullSetEventHandlers();              
<a name="105" href="#105">105</a>         
<a name="106" href="#106">106</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev2 = context.getEventCartridge();
<a name="107" href="#107">107</a>         initializeEventCartridge(rsvc, ev2);
<a name="108" href="#108">108</a>         Iterator contextEventHandlerIterator = 
<a name="109" href="#109">109</a>             (ev2 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev2.getNullSetEventHandlers();              
<a name="110" href="#110">110</a>                 
<a name="111" href="#111">111</a>         <strong class="jxr_keyword">try</strong> 
<a name="112" href="#112">112</a>         {
<a name="113" href="#113">113</a>             <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> methodExecutor = 
<a name="114" href="#114">114</a>                 <strong class="jxr_keyword">new</strong> NullSetEventHandler.ShouldLogOnNullSetExecutor(context, lhs, rhs);
<a name="115" href="#115">115</a> 
<a name="116" href="#116">116</a>             callEventHandlers(
<a name="117" href="#117">117</a>                     applicationEventHandlerIterator, 
<a name="118" href="#118">118</a>                     contextEventHandlerIterator, methodExecutor);
<a name="119" href="#119">119</a>             
<a name="120" href="#120">120</a>             <strong class="jxr_keyword">return</strong> ((Boolean) methodExecutor.getReturnValue()).booleanValue();    
<a name="121" href="#121">121</a>         }
<a name="122" href="#122">122</a>         <strong class="jxr_keyword">catch</strong> (RuntimeException e)
<a name="123" href="#123">123</a>         {
<a name="124" href="#124">124</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="125" href="#125">125</a>         }
<a name="126" href="#126">126</a>         <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="127" href="#127">127</a>         {
<a name="128" href="#128">128</a>             <strong class="jxr_keyword">throw</strong> ExceptionUtils.createRuntimeException(<span class="jxr_string">"Exception in event handler."</span>,e);
<a name="129" href="#129">129</a>         }
<a name="130" href="#130">130</a>     }
<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> <em class="jxr_javadoccomment">     * Called when a method exception is generated during Velocity merge. Only</em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * the first valid event handler in the sequence is called. The default</em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">     * implementation simply rethrows the exception.</em>
<a name="136" href="#136">136</a> <em class="jxr_javadoccomment">     *</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">     * @param claz</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     *            Class that is causing the exception</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * @param method</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">     *            method called that causes the exception</em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">     * @param e</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     *            Exception thrown by the method</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">     * @param context The internal context adapter.</em>
<a name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * @return Object to return as method result</em>
<a name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * @throws Exception</em>
<a name="147" href="#147">147</a> <em class="jxr_javadoccomment">     *             to be wrapped and propogated to app</em>
<a name="148" href="#148">148</a> <em class="jxr_javadoccomment">     */</em>
<a name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object methodException(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="150" href="#150">150</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, Class claz, String method,
<a name="151" href="#151">151</a>             Exception e) <strong class="jxr_keyword">throws</strong> Exception 
<a name="152" href="#152">152</a>     {
<a name="153" href="#153">153</a>         <em class="jxr_comment">// app level cartridges have already been initialized</em>
<a name="154" href="#154">154</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev1 = rsvc.getApplicationEventCartridge();
<a name="155" href="#155">155</a>         Iterator applicationEventHandlerIterator = 
<a name="156" href="#156">156</a>             (ev1 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev1.getMethodExceptionEventHandlers();              
<a name="157" href="#157">157</a>         
<a name="158" href="#158">158</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev2 = context.getEventCartridge();
<a name="159" href="#159">159</a>         initializeEventCartridge(rsvc, ev2);
<a name="160" href="#160">160</a>         Iterator contextEventHandlerIterator = 
<a name="161" href="#161">161</a>             (ev2 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev2.getMethodExceptionEventHandlers();              
<a name="162" href="#162">162</a>         
<a name="163" href="#163">163</a>         <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> methodExecutor = 
<a name="164" href="#164">164</a>             <strong class="jxr_keyword">new</strong> MethodExceptionEventHandler.MethodExceptionExecutor(context, claz, method, e);
<a name="165" href="#165">165</a>         
<a name="166" href="#166">166</a>         <strong class="jxr_keyword">if</strong> ( ((applicationEventHandlerIterator == <strong class="jxr_keyword">null</strong>) || !applicationEventHandlerIterator.hasNext()) &amp;&amp;
<a name="167" href="#167">167</a>                 ((contextEventHandlerIterator == <strong class="jxr_keyword">null</strong>) || !contextEventHandlerIterator.hasNext()) )
<a name="168" href="#168">168</a>         {
<a name="169" href="#169">169</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="170" href="#170">170</a>         }
<a name="171" href="#171">171</a>             
<a name="172" href="#172">172</a>         callEventHandlers(
<a name="173" href="#173">173</a>                 applicationEventHandlerIterator, 
<a name="174" href="#174">174</a>                 contextEventHandlerIterator, methodExecutor);
<a name="175" href="#175">175</a>         
<a name="176" href="#176">176</a>         <strong class="jxr_keyword">return</strong> methodExecutor.getReturnValue();
<a name="177" href="#177">177</a>     }
<a name="178" href="#178">178</a>     
<a name="179" href="#179">179</a>     <em class="jxr_javadoccomment">/**</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * Called when an include-type directive is encountered (#include or</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * #parse). All the registered event handlers are called unless null is</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     * returned. The default implementation always processes the included</em>
<a name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * resource.</em>
<a name="184" href="#184">184</a> <em class="jxr_javadoccomment">     *</em>
<a name="185" href="#185">185</a> <em class="jxr_javadoccomment">     * @param includeResourcePath</em>
<a name="186" href="#186">186</a> <em class="jxr_javadoccomment">     *            the path as given in the include directive.</em>
<a name="187" href="#187">187</a> <em class="jxr_javadoccomment">     * @param currentResourcePath</em>
<a name="188" href="#188">188</a> <em class="jxr_javadoccomment">     *            the path of the currently rendering template that includes the</em>
<a name="189" href="#189">189</a> <em class="jxr_javadoccomment">     *            include directive.</em>
<a name="190" href="#190">190</a> <em class="jxr_javadoccomment">     * @param directiveName</em>
<a name="191" href="#191">191</a> <em class="jxr_javadoccomment">     *            name of the directive used to include the resource. (With the</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">     *            standard directives this is either "parse" or "include").</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="194" href="#194">194</a> <em class="jxr_javadoccomment">     * @param context The internal context adapter.</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">     *</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * @return a new resource path for the directive, or null to block the</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">     *         include from occurring.</em>
<a name="198" href="#198">198</a> <em class="jxr_javadoccomment">     */</em>
<a name="199" href="#199">199</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String includeEvent(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="200" href="#200">200</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, String includeResourcePath,
<a name="201" href="#201">201</a>             String currentResourcePath, String directiveName)
<a name="202" href="#202">202</a>     {
<a name="203" href="#203">203</a>         <em class="jxr_comment">// app level cartridges have already been initialized</em>
<a name="204" href="#204">204</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev1 = rsvc.getApplicationEventCartridge();
<a name="205" href="#205">205</a>         Iterator applicationEventHandlerIterator = 
<a name="206" href="#206">206</a>             (ev1 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev1.getIncludeEventHandlers();              
<a name="207" href="#207">207</a>         
<a name="208" href="#208">208</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev2 = context.getEventCartridge();
<a name="209" href="#209">209</a>         initializeEventCartridge(rsvc, ev2);
<a name="210" href="#210">210</a>         Iterator contextEventHandlerIterator = 
<a name="211" href="#211">211</a>             (ev2 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev2.getIncludeEventHandlers();              
<a name="212" href="#212">212</a>         
<a name="213" href="#213">213</a>         <strong class="jxr_keyword">try</strong> 
<a name="214" href="#214">214</a>         {
<a name="215" href="#215">215</a>             <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> methodExecutor = 
<a name="216" href="#216">216</a>                 <strong class="jxr_keyword">new</strong> IncludeEventHandler.IncludeEventExecutor(
<a name="217" href="#217">217</a>                         context, includeResourcePath, 
<a name="218" href="#218">218</a>                         currentResourcePath, directiveName);
<a name="219" href="#219">219</a>             
<a name="220" href="#220">220</a>             callEventHandlers(
<a name="221" href="#221">221</a>                     applicationEventHandlerIterator, 
<a name="222" href="#222">222</a>                     contextEventHandlerIterator, methodExecutor);
<a name="223" href="#223">223</a>             
<a name="224" href="#224">224</a>             <strong class="jxr_keyword">return</strong> (String) methodExecutor.getReturnValue();
<a name="225" href="#225">225</a>         }
<a name="226" href="#226">226</a>         <strong class="jxr_keyword">catch</strong> (RuntimeException e)
<a name="227" href="#227">227</a>         {
<a name="228" href="#228">228</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="229" href="#229">229</a>         }
<a name="230" href="#230">230</a>         <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="231" href="#231">231</a>         {
<a name="232" href="#232">232</a>             <strong class="jxr_keyword">throw</strong> ExceptionUtils.createRuntimeException(<span class="jxr_string">"Exception in event handler."</span>,e);
<a name="233" href="#233">233</a>         }
<a name="234" href="#234">234</a>     }
<a name="235" href="#235">235</a>    
<a name="236" href="#236">236</a> 
<a name="237" href="#237">237</a>     <em class="jxr_javadoccomment">/**</em>
<a name="238" href="#238">238</a> <em class="jxr_javadoccomment">     * Called when an invalid get method is encountered.</em>
<a name="239" href="#239">239</a> <em class="jxr_javadoccomment">     * </em>
<a name="240" href="#240">240</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="241" href="#241">241</a> <em class="jxr_javadoccomment">     * @param context the context when the reference was found invalid</em>
<a name="242" href="#242">242</a> <em class="jxr_javadoccomment">     * @param reference complete invalid reference</em>
<a name="243" href="#243">243</a> <em class="jxr_javadoccomment">     * @param object object from reference, or null if not available</em>
<a name="244" href="#244">244</a> <em class="jxr_javadoccomment">     * @param property name of property, or null if not relevant</em>
<a name="245" href="#245">245</a> <em class="jxr_javadoccomment">     * @param info contains info on template, line, col</em>
<a name="246" href="#246">246</a> <em class="jxr_javadoccomment">     * @return substitute return value for missing reference, or null if no substitute</em>
<a name="247" href="#247">247</a> <em class="jxr_javadoccomment">     */</em>
<a name="248" href="#248">248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object invalidGetMethod(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="249" href="#249">249</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, String reference, 
<a name="250" href="#250">250</a>             Object object, String property, <a href="../../../../../org/apache/velocity/util/introspection/Info.html">Info</a> info)
<a name="251" href="#251">251</a>     {
<a name="252" href="#252">252</a>         <strong class="jxr_keyword">return</strong>  
<a name="253" href="#253">253</a>         invalidReferenceHandlerCall (
<a name="254" href="#254">254</a>                 <strong class="jxr_keyword">new</strong> InvalidReferenceEventHandler.InvalidGetMethodExecutor
<a name="255" href="#255">255</a>                 (context, reference, object, property, info),
<a name="256" href="#256">256</a>                 rsvc, 
<a name="257" href="#257">257</a>                 context);       
<a name="258" href="#258">258</a>     }
<a name="259" href="#259">259</a>         
<a name="260" href="#260">260</a>         
<a name="261" href="#261">261</a>    <em class="jxr_javadoccomment">/**</em>
<a name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * Called when an invalid set method is encountered.</em>
<a name="263" href="#263">263</a> <em class="jxr_javadoccomment">     * </em>
<a name="264" href="#264">264</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="265" href="#265">265</a> <em class="jxr_javadoccomment">     * @param context the context when the reference was found invalid</em>
<a name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * @param leftreference left reference being assigned to</em>
<a name="267" href="#267">267</a> <em class="jxr_javadoccomment">     * @param rightreference invalid reference on the right</em>
<a name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @param info contains info on template, line, col</em>
<a name="269" href="#269">269</a> <em class="jxr_javadoccomment">     */</em>
<a name="270" href="#270">270</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> invalidSetMethod(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="271" href="#271">271</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, String leftreference, 
<a name="272" href="#272">272</a>             String rightreference, <a href="../../../../../org/apache/velocity/util/introspection/Info.html">Info</a> info)
<a name="273" href="#273">273</a>     {
<a name="274" href="#274">274</a>         <em class="jxr_javadoccomment">/**</em>
<a name="275" href="#275">275</a> <em class="jxr_javadoccomment">         * ignore return value</em>
<a name="276" href="#276">276</a> <em class="jxr_javadoccomment">         */</em>
<a name="277" href="#277">277</a>         invalidReferenceHandlerCall (
<a name="278" href="#278">278</a>                 <strong class="jxr_keyword">new</strong> InvalidReferenceEventHandler.InvalidSetMethodExecutor
<a name="279" href="#279">279</a>                 (context, leftreference, rightreference, info),
<a name="280" href="#280">280</a>                 rsvc, 
<a name="281" href="#281">281</a>                 context);   
<a name="282" href="#282">282</a>     }
<a name="283" href="#283">283</a>     
<a name="284" href="#284">284</a>     <em class="jxr_javadoccomment">/**</em>
<a name="285" href="#285">285</a> <em class="jxr_javadoccomment">     * Called when an invalid method is encountered.</em>
<a name="286" href="#286">286</a> <em class="jxr_javadoccomment">     * </em>
<a name="287" href="#287">287</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="288" href="#288">288</a> <em class="jxr_javadoccomment">     * @param context the context when the reference was found invalid</em>
<a name="289" href="#289">289</a> <em class="jxr_javadoccomment">     * @param reference complete invalid reference</em>
<a name="290" href="#290">290</a> <em class="jxr_javadoccomment">     * @param object object from reference, or null if not available</em>
<a name="291" href="#291">291</a> <em class="jxr_javadoccomment">     * @param method name of method, or null if not relevant</em>
<a name="292" href="#292">292</a> <em class="jxr_javadoccomment">     * @param info contains info on template, line, col</em>
<a name="293" href="#293">293</a> <em class="jxr_javadoccomment">     * @return substitute return value for missing reference, or null if no substitute</em>
<a name="294" href="#294">294</a> <em class="jxr_javadoccomment">     */</em>
<a name="295" href="#295">295</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object invalidMethod(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="296" href="#296">296</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context,  String reference,
<a name="297" href="#297">297</a>             Object object, String method, <a href="../../../../../org/apache/velocity/util/introspection/Info.html">Info</a> info)
<a name="298" href="#298">298</a>     {
<a name="299" href="#299">299</a>         <strong class="jxr_keyword">return</strong> 
<a name="300" href="#300">300</a>         invalidReferenceHandlerCall (
<a name="301" href="#301">301</a>                 <strong class="jxr_keyword">new</strong> InvalidReferenceEventHandler.InvalidMethodExecutor
<a name="302" href="#302">302</a>                 (context, reference, object, method, info),
<a name="303" href="#303">303</a>                 rsvc, 
<a name="304" href="#304">304</a>                 context);       
<a name="305" href="#305">305</a>     }
<a name="306" href="#306">306</a>     
<a name="307" href="#307">307</a>     
<a name="308" href="#308">308</a>     <em class="jxr_javadoccomment">/**</em>
<a name="309" href="#309">309</a> <em class="jxr_javadoccomment">     * Calls event handler method with appropriate chaining across event handlers.</em>
<a name="310" href="#310">310</a> <em class="jxr_javadoccomment">     * </em>
<a name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * @param methodExecutor</em>
<a name="312" href="#312">312</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="313" href="#313">313</a> <em class="jxr_javadoccomment">     * @param context The current context</em>
<a name="314" href="#314">314</a> <em class="jxr_javadoccomment">     * @return return value from method, or null if no return value</em>
<a name="315" href="#315">315</a> <em class="jxr_javadoccomment">     */</em>
<a name="316" href="#316">316</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Object invalidReferenceHandlerCall(
<a name="317" href="#317">317</a>             <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> methodExecutor, 
<a name="318" href="#318">318</a>             <a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc,
<a name="319" href="#319">319</a>             <a href="../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context)
<a name="320" href="#320">320</a>     {
<a name="321" href="#321">321</a>         <em class="jxr_comment">// app level cartridges have already been initialized</em>
<a name="322" href="#322">322</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev1 = rsvc.getApplicationEventCartridge();
<a name="323" href="#323">323</a>         Iterator applicationEventHandlerIterator = 
<a name="324" href="#324">324</a>             (ev1 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev1.getInvalidReferenceEventHandlers();              
<a name="325" href="#325">325</a>         
<a name="326" href="#326">326</a>         <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> ev2 = context.getEventCartridge();
<a name="327" href="#327">327</a>         initializeEventCartridge(rsvc, ev2);
<a name="328" href="#328">328</a>         Iterator contextEventHandlerIterator = 
<a name="329" href="#329">329</a>             (ev2 == <strong class="jxr_keyword">null</strong>) ? <strong class="jxr_keyword">null</strong>: ev2.getInvalidReferenceEventHandlers();              
<a name="330" href="#330">330</a>         
<a name="331" href="#331">331</a>         <strong class="jxr_keyword">try</strong>
<a name="332" href="#332">332</a>         {
<a name="333" href="#333">333</a>             callEventHandlers(
<a name="334" href="#334">334</a>                     applicationEventHandlerIterator, 
<a name="335" href="#335">335</a>                     contextEventHandlerIterator, methodExecutor);
<a name="336" href="#336">336</a>             
<a name="337" href="#337">337</a>             <strong class="jxr_keyword">return</strong> methodExecutor.getReturnValue();
<a name="338" href="#338">338</a>         }
<a name="339" href="#339">339</a>         <strong class="jxr_keyword">catch</strong> (RuntimeException e)
<a name="340" href="#340">340</a>         {
<a name="341" href="#341">341</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="342" href="#342">342</a>         }
<a name="343" href="#343">343</a>         <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="344" href="#344">344</a>         {
<a name="345" href="#345">345</a>             <strong class="jxr_keyword">throw</strong> ExceptionUtils.createRuntimeException(<span class="jxr_string">"Exception in event handler."</span>,e);
<a name="346" href="#346">346</a>         }
<a name="347" href="#347">347</a>         
<a name="348" href="#348">348</a>     }
<a name="349" href="#349">349</a> 
<a name="350" href="#350">350</a>     <em class="jxr_javadoccomment">/**</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">     * Initialize the event cartridge if appropriate.</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">     * </em>
<a name="353" href="#353">353</a> <em class="jxr_javadoccomment">     * @param rsvc current instance of RuntimeServices</em>
<a name="354" href="#354">354</a> <em class="jxr_javadoccomment">     * @param eventCartridge the event cartridge to be initialized</em>
<a name="355" href="#355">355</a> <em class="jxr_javadoccomment">     */</em>
<a name="356" href="#356">356</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> initializeEventCartridge(<a href="../../../../../org/apache/velocity/runtime/RuntimeServices.html">RuntimeServices</a> rsvc, <a href="../../../../../org/apache/velocity/app/event/EventCartridge.html">EventCartridge</a> eventCartridge)
<a name="357" href="#357">357</a>     {
<a name="358" href="#358">358</a>         <strong class="jxr_keyword">if</strong> (eventCartridge != <strong class="jxr_keyword">null</strong>)
<a name="359" href="#359">359</a>         {
<a name="360" href="#360">360</a>             <strong class="jxr_keyword">try</strong>
<a name="361" href="#361">361</a>             {
<a name="362" href="#362">362</a>                 eventCartridge.initialize(rsvc);
<a name="363" href="#363">363</a>             }
<a name="364" href="#364">364</a>             <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="365" href="#365">365</a>             {
<a name="366" href="#366">366</a>                 <strong class="jxr_keyword">throw</strong> ExceptionUtils.createRuntimeException(<span class="jxr_string">"Couldn't initialize event cartridge : "</span>, e);
<a name="367" href="#367">367</a>             }
<a name="368" href="#368">368</a>         }
<a name="369" href="#369">369</a>     }
<a name="370" href="#370">370</a>     
<a name="371" href="#371">371</a>     
<a name="372" href="#372">372</a>     <em class="jxr_javadoccomment">/**</em>
<a name="373" href="#373">373</a> <em class="jxr_javadoccomment">     * Loop through both the application level and context-attached event handlers.</em>
<a name="374" href="#374">374</a> <em class="jxr_javadoccomment">     * </em>
<a name="375" href="#375">375</a> <em class="jxr_javadoccomment">     * @param applicationEventHandlerIterator Iterator that loops through all global event handlers declared at application level</em>
<a name="376" href="#376">376</a> <em class="jxr_javadoccomment">     * @param contextEventHandlerIterator Iterator that loops through all global event handlers attached to context</em>
<a name="377" href="#377">377</a> <em class="jxr_javadoccomment">     * @param eventExecutor Strategy object that executes event handler method</em>
<a name="378" href="#378">378</a> <em class="jxr_javadoccomment">     * @exception Exception generic exception potentially thrown by event handlers</em>
<a name="379" href="#379">379</a> <em class="jxr_javadoccomment">     */</em>
<a name="380" href="#380">380</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> callEventHandlers(
<a name="381" href="#381">381</a>             Iterator applicationEventHandlerIterator, 
<a name="382" href="#382">382</a>             Iterator contextEventHandlerIterator,
<a name="383" href="#383">383</a>             <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> eventExecutor)
<a name="384" href="#384">384</a>     <strong class="jxr_keyword">throws</strong> Exception
<a name="385" href="#385">385</a>     {
<a name="386" href="#386">386</a>         <em class="jxr_javadoccomment">/**</em>
<a name="387" href="#387">387</a> <em class="jxr_javadoccomment">         * First loop through the event handlers configured at the app level</em>
<a name="388" href="#388">388</a> <em class="jxr_javadoccomment">         * in the properties file.</em>
<a name="389" href="#389">389</a> <em class="jxr_javadoccomment">         */</em>
<a name="390" href="#390">390</a>         iterateOverEventHandlers(applicationEventHandlerIterator, eventExecutor);
<a name="391" href="#391">391</a>         
<a name="392" href="#392">392</a>         <em class="jxr_javadoccomment">/**</em>
<a name="393" href="#393">393</a> <em class="jxr_javadoccomment">         * Then loop through the event handlers attached to the context.</em>
<a name="394" href="#394">394</a> <em class="jxr_javadoccomment">         */</em>
<a name="395" href="#395">395</a>         iterateOverEventHandlers(contextEventHandlerIterator, eventExecutor);
<a name="396" href="#396">396</a>     }
<a name="397" href="#397">397</a>     
<a name="398" href="#398">398</a>     <em class="jxr_javadoccomment">/**</em>
<a name="399" href="#399">399</a> <em class="jxr_javadoccomment">     * Loop through a given iterator of event handlers.</em>
<a name="400" href="#400">400</a> <em class="jxr_javadoccomment">     * </em>
<a name="401" href="#401">401</a> <em class="jxr_javadoccomment">     * @param handlerIterator Iterator that loops through event handlers</em>
<a name="402" href="#402">402</a> <em class="jxr_javadoccomment">     * @param eventExecutor Strategy object that executes event handler method</em>
<a name="403" href="#403">403</a> <em class="jxr_javadoccomment">     * @exception Exception generic exception potentially thrown by event handlers</em>
<a name="404" href="#404">404</a> <em class="jxr_javadoccomment">     */</em>
<a name="405" href="#405">405</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> iterateOverEventHandlers(
<a name="406" href="#406">406</a>             Iterator handlerIterator,
<a name="407" href="#407">407</a>             <a href="../../../../../org/apache/velocity/app/event/EventHandlerMethodExecutor.html">EventHandlerMethodExecutor</a> eventExecutor)
<a name="408" href="#408">408</a>     <strong class="jxr_keyword">throws</strong> Exception
<a name="409" href="#409">409</a>     {
<a name="410" href="#410">410</a>         <strong class="jxr_keyword">if</strong> (handlerIterator != <strong class="jxr_keyword">null</strong>)
<a name="411" href="#411">411</a>         {
<a name="412" href="#412">412</a>             <strong class="jxr_keyword">for</strong> (Iterator i = handlerIterator; i.hasNext();)
<a name="413" href="#413">413</a>             {
<a name="414" href="#414">414</a>                 <a href="../../../../../org/apache/velocity/app/event/EventHandler.html">EventHandler</a> eventHandler = (EventHandler) i.next();
<a name="415" href="#415">415</a>                 
<a name="416" href="#416">416</a>                 <strong class="jxr_keyword">if</strong> (!eventExecutor.isDone())
<a name="417" href="#417">417</a>                 {
<a name="418" href="#418">418</a>                     eventExecutor.execute(eventHandler);
<a name="419" href="#419">419</a>                 }
<a name="420" href="#420">420</a>             }            
<a name="421" href="#421">421</a>         }
<a name="422" href="#422">422</a>     }
<a name="423" href="#423">423</a>     
<a name="424" href="#424">424</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

