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

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.runtime.parser.node;
<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.io.IOException;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.Writer;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.app.event.EventHandlerUtil;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.context.InternalContextAdapter;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.MethodInvocationException;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.TemplateInitException;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.RuntimeConstants;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.Parser;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.ParserVisitor;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.util.introspection.Info;
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * Node for the #set directive</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:jvanzyl@apache.org" target="alexandria_uri">mailto:jvanzyl@apache.org</a>"&gt;Jason van Zyl&lt;/a&gt;</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:geirm@optonline.net" target="alexandria_uri">mailto:geirm@optonline.net</a>"&gt;Geir Magnusson Jr.&lt;/a&gt;</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * @version $Id: ASTSetDirective.java 471381 2006-11-05 08:56:58Z wglass $</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> */</em>
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTSetDirective.html">ASTSetDirective</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/SimpleNode.html">SimpleNode</a>
<a name="42" href="#42">42</a>  {
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> String leftReference = <span class="jxr_string">""</span>;
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/Node.html">Node</a> right = <strong class="jxr_keyword">null</strong>;
<a name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTReference.html">ASTReference</a> left = <strong class="jxr_keyword">null</strong>;
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">boolean</strong> logOnNull = false;
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>      <em class="jxr_javadoccomment">/**</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     *  This is really immutable after the init, so keep one for this node</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     */</em>
<a name="51" href="#51">51</a>      <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/velocity/util/introspection/Info.html">Info</a> uberInfo;
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>      <em class="jxr_javadoccomment">/**</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment">     * @param id</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     */</em>
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTSetDirective.html">ASTSetDirective</a>(<strong class="jxr_keyword">int</strong> id)
<a name="57" href="#57">57</a>      {
<a name="58" href="#58">58</a>          <strong class="jxr_keyword">super</strong>(id);
<a name="59" href="#59">59</a>      }
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <em class="jxr_javadoccomment">/**</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     * @param p</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * @param id</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     */</em>
<a name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTSetDirective.html">ASTSetDirective</a>(<a href="../../../../../../org/apache/velocity/runtime/parser/Parser.html">Parser</a> p, <strong class="jxr_keyword">int</strong> id)
<a name="66" href="#66">66</a>      {
<a name="67" href="#67">67</a>          <strong class="jxr_keyword">super</strong>(p, id);
<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">     * @see org.apache.velocity.runtime.parser.node.SimpleNode#jjtAccept(org.apache.velocity.runtime.parser.ParserVisitor, java.lang.Object)</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     */</em>
<a name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> Object jjtAccept(<a href="../../../../../../org/apache/velocity/runtime/parser/ParserVisitor.html">ParserVisitor</a> visitor, Object data)
<a name="74" href="#74">74</a>      {
<a name="75" href="#75">75</a>          <strong class="jxr_keyword">return</strong> visitor.visit(<strong class="jxr_keyword">this</strong>, data);
<a name="76" href="#76">76</a>      }
<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">     *  simple init.  We can get the RHS and LHS as the the tree structure is static</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     * @param context</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * @param data</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * @return Init result.</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @throws TemplateInitException</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     */</em>
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> Object init(<a href="../../../../../../org/apache/velocity/context/InternalContextAdapter.html">InternalContextAdapter</a> context, Object data)
<a name="86" href="#86">86</a>      <strong class="jxr_keyword">throws</strong> <a href="../../../../../../org/apache/velocity/exception/TemplateInitException.html">TemplateInitException</a>
<a name="87" href="#87">87</a>      {
<a name="88" href="#88">88</a>          <em class="jxr_comment">/*</em>
<a name="89" href="#89">89</a>  <em class="jxr_comment">         *  init the tree correctly</em>
<a name="90" href="#90">90</a>  <em class="jxr_comment">         */</em>
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>          <strong class="jxr_keyword">super</strong>.init( context, data );
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          uberInfo = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/velocity/util/introspection/Info.html">Info</a>(context.getCurrentTemplateName(),
<a name="95" href="#95">95</a>                  getLine(), getColumn());
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          right = getRightHandSide();
<a name="98" href="#98">98</a>          left = getLeftHandSide();
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>         logOnNull = rsvc.getBoolean(RuntimeConstants.RUNTIME_LOG_REFERENCE_LOG_INVALID, <strong class="jxr_keyword">true</strong>);
<a name="101" href="#101">101</a> 
<a name="102" href="#102">102</a>         <em class="jxr_comment">/*</em>
<a name="103" href="#103">103</a> <em class="jxr_comment">         *  grab this now.  No need to redo each time</em>
<a name="104" href="#104">104</a> <em class="jxr_comment">         */</em>
<a name="105" href="#105">105</a>         leftReference = left.getFirstToken().image.substring(1);
<a name="106" href="#106">106</a> 
<a name="107" href="#107">107</a>         <strong class="jxr_keyword">return</strong> data;
<a name="108" href="#108">108</a>     }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>     <em class="jxr_javadoccomment">/**</em>
<a name="111" href="#111">111</a> <em class="jxr_javadoccomment">     *   puts the value of the RHS into the context under the key of the LHS</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     * @param context</em>
<a name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * @param writer</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">     * @return True if rendering was sucessful.</em>
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
<a name="116" href="#116">116</a> <em class="jxr_javadoccomment">     * @throws MethodInvocationException</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">     */</em>
<a name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> render( InternalContextAdapter context, Writer writer)
<a name="119" href="#119">119</a>         <strong class="jxr_keyword">throws</strong> IOException, <a href="../../../../../../org/apache/velocity/exception/MethodInvocationException.html">MethodInvocationException</a>
<a name="120" href="#120">120</a>     {
<a name="121" href="#121">121</a>         <em class="jxr_comment">/*</em>
<a name="122" href="#122">122</a> <em class="jxr_comment">         *  get the RHS node, and its value</em>
<a name="123" href="#123">123</a> <em class="jxr_comment">         */</em>
<a name="124" href="#124">124</a> 
<a name="125" href="#125">125</a>         Object value = right.value(context);
<a name="126" href="#126">126</a> 
<a name="127" href="#127">127</a>         <em class="jxr_comment">/*</em>
<a name="128" href="#128">128</a> <em class="jxr_comment">         * it's an error if we don't have a value of some sort AND</em>
<a name="129" href="#129">129</a> <em class="jxr_comment">         * it is not allowed by configuration</em>
<a name="130" href="#130">130</a> <em class="jxr_comment">         */</em>
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a>         <strong class="jxr_keyword">if</strong>( !rsvc.getBoolean(RuntimeConstants.SET_NULL_ALLOWED,false) )
<a name="133" href="#133">133</a>         {
<a name="134" href="#134">134</a>             <strong class="jxr_keyword">if</strong> ( value == <strong class="jxr_keyword">null</strong> )
<a name="135" href="#135">135</a>             {                
<a name="136" href="#136">136</a>                 <em class="jxr_comment">/*</em>
<a name="137" href="#137">137</a> <em class="jxr_comment">                 *  first, are we supposed to say anything anyway?</em>
<a name="138" href="#138">138</a> <em class="jxr_comment">                 */</em>
<a name="139" href="#139">139</a>                 <strong class="jxr_keyword">if</strong>(logOnNull)
<a name="140" href="#140">140</a>                 {
<a name="141" href="#141">141</a>                     <strong class="jxr_keyword">boolean</strong> doit = EventHandlerUtil.shouldLogOnNullSet( rsvc, context, left.literal(), right.literal() );
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>                     <strong class="jxr_keyword">if</strong> (doit &amp;&amp; log.isInfoEnabled())
<a name="144" href="#144">144</a>                     {
<a name="145" href="#145">145</a>                         log.info(<span class="jxr_string">"RHS of #set statement is null. Context will not be modified. "</span>
<a name="146" href="#146">146</a>                                       + context.getCurrentTemplateName() + <span class="jxr_string">" [line "</span> + getLine()
<a name="147" href="#147">147</a>                                       + <span class="jxr_string">", column "</span> + getColumn() + <span class="jxr_string">"]"</span>);
<a name="148" href="#148">148</a>                     }
<a name="149" href="#149">149</a>                 }
<a name="150" href="#150">150</a>                 
<a name="151" href="#151">151</a>                 String rightReference = <strong class="jxr_keyword">null</strong>;
<a name="152" href="#152">152</a>                 <strong class="jxr_keyword">if</strong> (right instanceof ASTExpression)
<a name="153" href="#153">153</a>                 {
<a name="154" href="#154">154</a>                     rightReference = ((ASTExpression) right).getLastToken().image;
<a name="155" href="#155">155</a>                 }
<a name="156" href="#156">156</a>                 EventHandlerUtil.invalidSetMethod(rsvc, context, leftReference, rightReference, uberInfo);
<a name="157" href="#157">157</a>                 
<a name="158" href="#158">158</a>                 <strong class="jxr_keyword">return</strong> false;
<a name="159" href="#159">159</a>             }
<a name="160" href="#160">160</a>         }
<a name="161" href="#161">161</a> 
<a name="162" href="#162">162</a>         <strong class="jxr_keyword">if</strong> ( value == <strong class="jxr_keyword">null</strong> )
<a name="163" href="#163">163</a>         {
<a name="164" href="#164">164</a>             String rightReference = <strong class="jxr_keyword">null</strong>;
<a name="165" href="#165">165</a>             <strong class="jxr_keyword">if</strong> (right instanceof ASTExpression)
<a name="166" href="#166">166</a>             {
<a name="167" href="#167">167</a>                 rightReference = ((ASTExpression) right).getLastToken().image;
<a name="168" href="#168">168</a>             }
<a name="169" href="#169">169</a>             EventHandlerUtil.invalidSetMethod(rsvc, context, leftReference, rightReference, uberInfo);
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>             <em class="jxr_comment">/*</em>
<a name="172" href="#172">172</a> <em class="jxr_comment">             * if RHS is null it doesn't matter if LHS is simple or complex</em>
<a name="173" href="#173">173</a> <em class="jxr_comment">             * because the LHS is removed from context</em>
<a name="174" href="#174">174</a> <em class="jxr_comment">             */</em>
<a name="175" href="#175">175</a>             context.remove( leftReference );
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>             <strong class="jxr_keyword">return</strong> false;
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>         }
<a name="180" href="#180">180</a>         <strong class="jxr_keyword">else</strong>
<a name="181" href="#181">181</a>         {
<a name="182" href="#182">182</a>             <em class="jxr_comment">/*</em>
<a name="183" href="#183">183</a> <em class="jxr_comment">             *  if the LHS is simple, just punch the value into the context</em>
<a name="184" href="#184">184</a> <em class="jxr_comment">             *  otherwise, use the setValue() method do to it.</em>
<a name="185" href="#185">185</a> <em class="jxr_comment">             *  Maybe we should always use setValue()</em>
<a name="186" href="#186">186</a> <em class="jxr_comment">             */</em>
<a name="187" href="#187">187</a> 
<a name="188" href="#188">188</a>             <strong class="jxr_keyword">if</strong> (left.jjtGetNumChildren() == 0)
<a name="189" href="#189">189</a>             {
<a name="190" href="#190">190</a>                 context.put( leftReference, value);
<a name="191" href="#191">191</a>             }
<a name="192" href="#192">192</a>             <strong class="jxr_keyword">else</strong>
<a name="193" href="#193">193</a>             {
<a name="194" href="#194">194</a>                 left.setValue(context, value);
<a name="195" href="#195">195</a>             }
<a name="196" href="#196">196</a>         }
<a name="197" href="#197">197</a> 
<a name="198" href="#198">198</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="199" href="#199">199</a>     }
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>     <em class="jxr_javadoccomment">/**</em>
<a name="202" href="#202">202</a> <em class="jxr_javadoccomment">     *  returns the ASTReference that is the LHS of the set statememt</em>
<a name="203" href="#203">203</a> <em class="jxr_javadoccomment">     *  </em>
<a name="204" href="#204">204</a> <em class="jxr_javadoccomment">     *  @return left hand side of #set statement</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     */</em>
<a name="206" href="#206">206</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTReference.html">ASTReference</a> getLeftHandSide()
<a name="207" href="#207">207</a>     {
<a name="208" href="#208">208</a>         <strong class="jxr_keyword">return</strong> (ASTReference) jjtGetChild(0);
<a name="209" href="#209">209</a>     }
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a>     <em class="jxr_javadoccomment">/**</em>
<a name="212" href="#212">212</a> <em class="jxr_javadoccomment">     *  returns the RHS Node of the set statement</em>
<a name="213" href="#213">213</a> <em class="jxr_javadoccomment">     *  </em>
<a name="214" href="#214">214</a> <em class="jxr_javadoccomment">     *  @return right hand side of #set statement</em>
<a name="215" href="#215">215</a> <em class="jxr_javadoccomment">     */</em>
<a name="216" href="#216">216</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/Node.html">Node</a> getRightHandSide()
<a name="217" href="#217">217</a>     {
<a name="218" href="#218">218</a>         <strong class="jxr_keyword">return</strong> jjtGetChild(1);
<a name="219" href="#219">219</a>     }
<a name="220" href="#220">220</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

