Modified: 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-frame.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-frame.html
 (original)
+++ 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-frame.html
 Fri Jun 25 11:11:58 2021
@@ -4,7 +4,7 @@
     <!-- generated by Apache Maven JXR (jdk8) -->
     <head>
         <meta http-equiv="content-type" content="text/html; 
charset=iso-8859-1" />
-        <title>Apache Commons JEXL 3.2.1-SNAPSHOT Reference Package 
org.apache.commons.jexl3.annotations</title>
+        <title>Apache Commons JEXL 3.2.1 Reference Package 
org.apache.commons.jexl3.annotations</title>
         <link rel="stylesheet" type="text/css" 
href="../../../../../stylesheet.css" title="style" />
     </head>
     <body>

Modified: 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-summary.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-summary.html
 (original)
+++ 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/annotations/package-summary.html
 Fri Jun 25 11:11:58 2021
@@ -4,7 +4,7 @@
     <!-- generated by Apache Maven JXR (jdk8) -->
     <head>
         <meta http-equiv="content-type" content="text/html; 
charset=iso-8859-1" />
-        <title>Apache Commons JEXL 3.2.1-SNAPSHOT Reference Package 
org.apache.commons.jexl3.annotations</title>
+        <title>Apache Commons JEXL 3.2.1 Reference Package 
org.apache.commons.jexl3.annotations</title>
         <link rel="stylesheet" type="text/css" 
href="../../../../../stylesheet.css" title="style" />
     </head>
 
@@ -23,7 +23,7 @@
                 <li>Index</li>
                 <li>Help</li>
             </ul>
-            <div class="aboutLanguage"><em><strong>Apache Commons JEXL 
3.2.1-SNAPSHOT Reference</strong></em></div>
+            <div class="aboutLanguage"><em><strong>Apache Commons JEXL 3.2.1 
Reference</strong></em></div>
         </div>
         <div class="subNav">
             <ul class="navList">
@@ -76,7 +76,7 @@
                 <li>Index</li>
                 <li>Help</li>
             </ul>
-            <div class="aboutLanguage"><em><strong>Apache Commons JEXL 
3.2.1-SNAPSHOT Reference</strong></em></div>
+            <div class="aboutLanguage"><em><strong>Apache Commons JEXL 3.2.1 
Reference</strong></em></div>
         </div>
         <div class="subNav">
             <ul class="navList">

Modified: 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/internal/Interpreter.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/internal/Interpreter.html
 (original)
+++ 
websites/production/commons/content/proper/commons-jexl/xref/org/apache/commons/jexl3/internal/Interpreter.html
 Fri Jun 25 11:11:58 2021
@@ -1691,245 +1691,247 @@
 <a class="jxr_linenumber" name="L1683" href="#L1683">1683</a>                 
narrow = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="L1684" href="#L1684">1684</a>                 
<em class="jxr_comment">// continue;</em>
 <a class="jxr_linenumber" name="L1685" href="#L1685">1685</a>             }
-<a class="jxr_linenumber" name="L1686" href="#L1686">1686</a>             <em 
class="jxr_comment">// we have either evaluated and returned or no method was 
found</em>
-<a class="jxr_linenumber" name="L1687" href="#L1687">1687</a>             
<strong class="jxr_keyword">return</strong> node.isSafeLhs(isSafe())
-<a class="jxr_linenumber" name="L1688" href="#L1688">1688</a>                  
   ? <strong class="jxr_keyword">null</strong>
-<a class="jxr_linenumber" name="L1689" href="#L1689">1689</a>                  
   : unsolvableMethod(node, methodName, argv);
-<a class="jxr_linenumber" name="L1690" href="#L1690">1690</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> JexlException.TryFailed xany) {
-<a class="jxr_linenumber" name="L1691" href="#L1691">1691</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, 
methodName, xany);
-<a class="jxr_linenumber" name="L1692" href="#L1692">1692</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>
 xthru) {
-<a class="jxr_linenumber" name="L1693" href="#L1693">1693</a>             
<strong class="jxr_keyword">throw</strong> xthru;
-<a class="jxr_linenumber" name="L1694" href="#L1694">1694</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
-<a class="jxr_linenumber" name="L1695" href="#L1695">1695</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, 
methodName, xany);
-<a class="jxr_linenumber" name="L1696" href="#L1696">1696</a>         }
-<a class="jxr_linenumber" name="L1697" href="#L1697">1697</a>     }
-<a class="jxr_linenumber" name="L1698" href="#L1698">1698</a> 
-<a class="jxr_linenumber" name="L1699" href="#L1699">1699</a>     @Override
-<a class="jxr_linenumber" name="L1700" href="#L1700">1700</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> ASTConstructorNode node, <strong 
class="jxr_keyword">final</strong> Object data) {
-<a class="jxr_linenumber" name="L1701" href="#L1701">1701</a>         <strong 
class="jxr_keyword">if</strong> (isCancelled()) {
-<a class="jxr_linenumber" name="L1702" href="#L1702">1702</a>             
<strong class="jxr_keyword">throw</strong> <strong 
class="jxr_keyword">new</strong> JexlException.Cancel(node);
-<a class="jxr_linenumber" name="L1703" href="#L1703">1703</a>         }
-<a class="jxr_linenumber" name="L1704" href="#L1704">1704</a>         <em 
class="jxr_comment">// first child is class or class name</em>
-<a class="jxr_linenumber" name="L1705" href="#L1705">1705</a>         <strong 
class="jxr_keyword">final</strong> Object target = 
node.jjtGetChild(0).jjtAccept(<strong class="jxr_keyword">this</strong>, data);
-<a class="jxr_linenumber" name="L1706" href="#L1706">1706</a>         <em 
class="jxr_comment">// get the ctor args</em>
-<a class="jxr_linenumber" name="L1707" href="#L1707">1707</a>         <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
argc = node.jjtGetNumChildren() - 1;
-<a class="jxr_linenumber" name="L1708" href="#L1708">1708</a>         Object[] 
argv = <strong class="jxr_keyword">new</strong> Object[argc];
-<a class="jxr_linenumber" name="L1709" href="#L1709">1709</a>         <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 
0; i &lt; argc; i++) {
-<a class="jxr_linenumber" name="L1710" href="#L1710">1710</a>             
argv[i] = node.jjtGetChild(i + 1).jjtAccept(<strong 
class="jxr_keyword">this</strong>, data);
-<a class="jxr_linenumber" name="L1711" href="#L1711">1711</a>         }
-<a class="jxr_linenumber" name="L1712" href="#L1712">1712</a> 
-<a class="jxr_linenumber" name="L1713" href="#L1713">1713</a>         <strong 
class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1714" href="#L1714">1714</a>             
<strong class="jxr_keyword">final</strong> <strong 
class="jxr_keyword">boolean</strong> cacheable = cache;
-<a class="jxr_linenumber" name="L1715" href="#L1715">1715</a>             <em 
class="jxr_comment">// attempt to reuse last funcall cached in volatile 
JexlNode.value</em>
-<a class="jxr_linenumber" name="L1716" href="#L1716">1716</a>             
<strong class="jxr_keyword">if</strong> (cacheable) {
-<a class="jxr_linenumber" name="L1717" href="#L1717">1717</a>                 
<strong class="jxr_keyword">final</strong> Object cached = node.jjtGetValue();
-<a class="jxr_linenumber" name="L1718" href="#L1718">1718</a>                 
<strong class="jxr_keyword">if</strong> (cached instanceof Funcall) {
-<a class="jxr_linenumber" name="L1719" href="#L1719">1719</a>                  
   <strong class="jxr_keyword">final</strong> Object eval = ((Funcall) 
cached).tryInvoke(<strong class="jxr_keyword">this</strong>, <strong 
class="jxr_keyword">null</strong>, target, argv);
-<a class="jxr_linenumber" name="L1720" href="#L1720">1720</a>                  
   <strong class="jxr_keyword">if</strong> (JexlEngine.TRY_FAILED != eval) {
-<a class="jxr_linenumber" name="L1721" href="#L1721">1721</a>                  
       <strong class="jxr_keyword">return</strong> eval;
-<a class="jxr_linenumber" name="L1722" href="#L1722">1722</a>                  
   }
-<a class="jxr_linenumber" name="L1723" href="#L1723">1723</a>                 }
-<a class="jxr_linenumber" name="L1724" href="#L1724">1724</a>             }
-<a class="jxr_linenumber" name="L1725" href="#L1725">1725</a>             
<strong class="jxr_keyword">boolean</strong> narrow = false;
-<a class="jxr_linenumber" name="L1726" href="#L1726">1726</a>             <a 
name="JexlMethod" 
href="../../../../../org/apache/commons/jexl3/introspection/JexlMethod.html#JexlMethod">JexlMethod</a>
 ctor = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1727" href="#L1727">1727</a>             
Funcall funcall = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1728" href="#L1728">1728</a>             
<strong class="jxr_keyword">while</strong> (<strong 
class="jxr_keyword">true</strong>) {
-<a class="jxr_linenumber" name="L1729" href="#L1729">1729</a>                 
<em class="jxr_comment">// try as stated</em>
-<a class="jxr_linenumber" name="L1730" href="#L1730">1730</a>                 
ctor = uberspect.getConstructor(target, argv);
-<a class="jxr_linenumber" name="L1731" href="#L1731">1731</a>                 
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1732" href="#L1732">1732</a>                  
   <strong class="jxr_keyword">if</strong> (cacheable &amp;&amp; 
ctor.isCacheable()) {
-<a class="jxr_linenumber" name="L1733" href="#L1733">1733</a>                  
       funcall = <strong class="jxr_keyword">new</strong> Funcall(ctor, narrow);
-<a class="jxr_linenumber" name="L1734" href="#L1734">1734</a>                  
   }
-<a class="jxr_linenumber" name="L1735" href="#L1735">1735</a>                  
   <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L1736" href="#L1736">1736</a>                 }
-<a class="jxr_linenumber" name="L1737" href="#L1737">1737</a>                 
<em class="jxr_comment">// try with prepending context as first argument</em>
-<a class="jxr_linenumber" name="L1738" href="#L1738">1738</a>                 
<strong class="jxr_keyword">final</strong> Object[] nargv = 
callArguments(context, narrow, argv);
-<a class="jxr_linenumber" name="L1739" href="#L1739">1739</a>                 
ctor = uberspect.getConstructor(target, nargv);
-<a class="jxr_linenumber" name="L1740" href="#L1740">1740</a>                 
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1741" href="#L1741">1741</a>                  
   <strong class="jxr_keyword">if</strong> (cacheable &amp;&amp; 
ctor.isCacheable()) {
-<a class="jxr_linenumber" name="L1742" href="#L1742">1742</a>                  
       funcall = <strong class="jxr_keyword">new</strong> ContextualCtor(ctor, 
narrow);
-<a class="jxr_linenumber" name="L1743" href="#L1743">1743</a>                  
   }
-<a class="jxr_linenumber" name="L1744" href="#L1744">1744</a>                  
   argv = nargv;
-<a class="jxr_linenumber" name="L1745" href="#L1745">1745</a>                  
   <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L1746" href="#L1746">1746</a>                 }
-<a class="jxr_linenumber" name="L1747" href="#L1747">1747</a>                 
<em class="jxr_comment">// if we did not find an exact method by name and we 
haven't tried yet,</em>
-<a class="jxr_linenumber" name="L1748" href="#L1748">1748</a>                 
<em class="jxr_comment">// attempt to narrow the parameters and if this 
succeeds, try again in next loop</em>
-<a class="jxr_linenumber" name="L1749" href="#L1749">1749</a>                 
<strong class="jxr_keyword">if</strong> (!narrow &amp;&amp; 
arithmetic.narrowArguments(argv)) {
-<a class="jxr_linenumber" name="L1750" href="#L1750">1750</a>                  
   narrow = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L1751" href="#L1751">1751</a>                  
   <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="L1752" href="#L1752">1752</a>                 }
-<a class="jxr_linenumber" name="L1753" href="#L1753">1753</a>                 
<em class="jxr_comment">// we are done trying</em>
-<a class="jxr_linenumber" name="L1754" href="#L1754">1754</a>                 
<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L1755" href="#L1755">1755</a>             }
-<a class="jxr_linenumber" name="L1756" href="#L1756">1756</a>             <em 
class="jxr_comment">// we have either evaluated and returned or might have 
found a ctor</em>
-<a class="jxr_linenumber" name="L1757" href="#L1757">1757</a>             
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1758" href="#L1758">1758</a>                 
<strong class="jxr_keyword">final</strong> Object eval = ctor.invoke(target, 
argv);
-<a class="jxr_linenumber" name="L1759" href="#L1759">1759</a>                 
<em class="jxr_comment">// cache executor in volatile JexlNode.value</em>
-<a class="jxr_linenumber" name="L1760" href="#L1760">1760</a>                 
<strong class="jxr_keyword">if</strong> (funcall != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1761" href="#L1761">1761</a>                  
   node.jjtSetValue(funcall);
-<a class="jxr_linenumber" name="L1762" href="#L1762">1762</a>                 }
-<a class="jxr_linenumber" name="L1763" href="#L1763">1763</a>                 
<strong class="jxr_keyword">return</strong> eval;
-<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a>             }
-<a class="jxr_linenumber" name="L1765" href="#L1765">1765</a>             
<strong class="jxr_keyword">final</strong> String tstr = target != <strong 
class="jxr_keyword">null</strong> ? target.toString() : <span 
class="jxr_string">"?"</span>;
-<a class="jxr_linenumber" name="L1766" href="#L1766">1766</a>             
<strong class="jxr_keyword">return</strong> unsolvableMethod(node, tstr, argv);
-<a class="jxr_linenumber" name="L1767" href="#L1767">1767</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> JexlException.Method xmethod) {
-<a class="jxr_linenumber" name="L1768" href="#L1768">1768</a>             
<strong class="jxr_keyword">throw</strong> xmethod;
-<a class="jxr_linenumber" name="L1769" href="#L1769">1769</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
-<a class="jxr_linenumber" name="L1770" href="#L1770">1770</a>             
<strong class="jxr_keyword">final</strong> String tstr = target != <strong 
class="jxr_keyword">null</strong> ? target.toString() : <span 
class="jxr_string">"?"</span>;
-<a class="jxr_linenumber" name="L1771" href="#L1771">1771</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, tstr, 
xany);
-<a class="jxr_linenumber" name="L1772" href="#L1772">1772</a>         }
-<a class="jxr_linenumber" name="L1773" href="#L1773">1773</a>     }
-<a class="jxr_linenumber" name="L1774" href="#L1774">1774</a> 
-<a class="jxr_linenumber" name="L1775" href="#L1775">1775</a>     @Override
-<a class="jxr_linenumber" name="L1776" href="#L1776">1776</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> <a name="ASTJxltLiteral" 
href="../../../../../org/apache/commons/jexl3/parser/ASTJxltLiteral.html#ASTJxltLiteral">ASTJxltLiteral</a>
 node, <strong class="jxr_keyword">final</strong> Object data) {
-<a class="jxr_linenumber" name="L1777" href="#L1777">1777</a>         
TemplateEngine.TemplateExpression tp = (TemplateEngine.TemplateExpression) 
node.jjtGetValue();
-<a class="jxr_linenumber" name="L1778" href="#L1778">1778</a>         <strong 
class="jxr_keyword">if</strong> (tp == <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1779" href="#L1779">1779</a>             
<strong class="jxr_keyword">final</strong> <a name="TemplateEngine" 
href="../../../../../org/apache/commons/jexl3/internal/TemplateEngine.html#TemplateEngine">TemplateEngine</a>
 jxlt = jexl.jxlt();
-<a class="jxr_linenumber" name="L1780" href="#L1780">1780</a>             <a 
name="JexlInfo" 
href="../../../../../org/apache/commons/jexl3/JexlInfo.html#JexlInfo">JexlInfo</a>
 info = node.jexlInfo();
-<a class="jxr_linenumber" name="L1781" href="#L1781">1781</a>             
<strong class="jxr_keyword">if</strong> (<strong 
class="jxr_keyword">this</strong>.block != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1782" href="#L1782">1782</a>                 
info = <strong class="jxr_keyword">new</strong> JexlNode.Info(node, info);
-<a class="jxr_linenumber" name="L1783" href="#L1783">1783</a>             }
-<a class="jxr_linenumber" name="L1784" href="#L1784">1784</a>             tp = 
jxlt.parseExpression(info, node.getLiteral(), frame != <strong 
class="jxr_keyword">null</strong> ? frame.getScope() : <strong 
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1785" href="#L1785">1785</a>             
node.jjtSetValue(tp);
-<a class="jxr_linenumber" name="L1786" href="#L1786">1786</a>         }
-<a class="jxr_linenumber" name="L1787" href="#L1787">1787</a>         <strong 
class="jxr_keyword">if</strong> (tp != <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1788" href="#L1788">1788</a>             
<strong class="jxr_keyword">return</strong> tp.evaluate(frame, context);
-<a class="jxr_linenumber" name="L1789" href="#L1789">1789</a>         }
-<a class="jxr_linenumber" name="L1790" href="#L1790">1790</a>         <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1791" href="#L1791">1791</a>     }
-<a class="jxr_linenumber" name="L1792" href="#L1792">1792</a> 
-<a class="jxr_linenumber" name="L1793" href="#L1793">1793</a>     @Override
-<a class="jxr_linenumber" name="L1794" href="#L1794">1794</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> <a name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>
 node, <strong class="jxr_keyword">final</strong> Object data) {
-<a class="jxr_linenumber" name="L1795" href="#L1795">1795</a>         <strong 
class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> 
UnsupportedOperationException(ASTAnnotation.<strong 
class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">": Not 
supported."</span>);
-<a class="jxr_linenumber" name="L1796" href="#L1796">1796</a>     }
-<a class="jxr_linenumber" name="L1797" href="#L1797">1797</a> 
-<a class="jxr_linenumber" name="L1798" href="#L1798">1798</a>     @Override
-<a class="jxr_linenumber" name="L1799" href="#L1799">1799</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> ASTAnnotatedStatement node, <strong 
class="jxr_keyword">final</strong> Object data) {
-<a class="jxr_linenumber" name="L1800" href="#L1800">1800</a>         <strong 
class="jxr_keyword">return</strong> processAnnotation(node, 0, data);
-<a class="jxr_linenumber" name="L1801" href="#L1801">1801</a>     }
-<a class="jxr_linenumber" name="L1802" href="#L1802">1802</a> 
-<a class="jxr_linenumber" name="L1803" href="#L1803">1803</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1804" href="#L1804">1804</a> <em 
class="jxr_javadoccomment">     * An annotated call.</em>
-<a class="jxr_linenumber" name="L1805" href="#L1805">1805</a> <em 
class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1806" href="#L1806">1806</a>     <strong 
class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> 
AnnotatedCall <strong class="jxr_keyword">implements</strong> 
Callable&lt;Object&gt; {
-<a class="jxr_linenumber" name="L1807" href="#L1807">1807</a>         <em 
class="jxr_javadoccomment">/** The statement. */</em>
-<a class="jxr_linenumber" name="L1808" href="#L1808">1808</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
ASTAnnotatedStatement stmt;
-<a class="jxr_linenumber" name="L1809" href="#L1809">1809</a>         <em 
class="jxr_javadoccomment">/** The child index. */</em>
-<a class="jxr_linenumber" name="L1810" href="#L1810">1810</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
<strong class="jxr_keyword">int</strong> index;
-<a class="jxr_linenumber" name="L1811" href="#L1811">1811</a>         <em 
class="jxr_javadoccomment">/** The data. */</em>
-<a class="jxr_linenumber" name="L1812" href="#L1812">1812</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
Object data;
-<a class="jxr_linenumber" name="L1813" href="#L1813">1813</a>         <em 
class="jxr_javadoccomment">/** Tracking whether we processed the annotation. 
*/</em>
-<a class="jxr_linenumber" name="L1814" href="#L1814">1814</a>         <strong 
class="jxr_keyword">private</strong> <strong 
class="jxr_keyword">boolean</strong> processed = false;
-<a class="jxr_linenumber" name="L1815" href="#L1815">1815</a> 
-<a class="jxr_linenumber" name="L1816" href="#L1816">1816</a>         <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1817" href="#L1817">1817</a> <em 
class="jxr_javadoccomment">         * Simple ctor.</em>
-<a class="jxr_linenumber" name="L1818" href="#L1818">1818</a> <em 
class="jxr_javadoccomment">         * @param astmt the statement</em>
-<a class="jxr_linenumber" name="L1819" href="#L1819">1819</a> <em 
class="jxr_javadoccomment">         * @param aindex the index</em>
-<a class="jxr_linenumber" name="L1820" href="#L1820">1820</a> <em 
class="jxr_javadoccomment">         * @param adata the data</em>
-<a class="jxr_linenumber" name="L1821" href="#L1821">1821</a> <em 
class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1822" href="#L1822">1822</a>         
AnnotatedCall(<strong class="jxr_keyword">final</strong> ASTAnnotatedStatement 
astmt, <strong class="jxr_keyword">final</strong> <strong 
class="jxr_keyword">int</strong> aindex, <strong 
class="jxr_keyword">final</strong> Object adata) {
-<a class="jxr_linenumber" name="L1823" href="#L1823">1823</a>             stmt 
= astmt;
-<a class="jxr_linenumber" name="L1824" href="#L1824">1824</a>             
index = aindex;
-<a class="jxr_linenumber" name="L1825" href="#L1825">1825</a>             data 
= adata;
-<a class="jxr_linenumber" name="L1826" href="#L1826">1826</a>         }
-<a class="jxr_linenumber" name="L1827" href="#L1827">1827</a> 
-<a class="jxr_linenumber" name="L1828" href="#L1828">1828</a> 
-<a class="jxr_linenumber" name="L1829" href="#L1829">1829</a>         @Override
-<a class="jxr_linenumber" name="L1830" href="#L1830">1830</a>         <strong 
class="jxr_keyword">public</strong> Object call() <strong 
class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1831" href="#L1831">1831</a>             
processed = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L1832" href="#L1832">1832</a>             
<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1833" href="#L1833">1833</a>                 
<strong class="jxr_keyword">return</strong> processAnnotation(stmt, index, 
data);
-<a class="jxr_linenumber" name="L1834" href="#L1834">1834</a>             } 
<strong class="jxr_keyword">catch</strong> (JexlException.Return | 
JexlException.Break | JexlException.Continue xreturn) {
-<a class="jxr_linenumber" name="L1835" href="#L1835">1835</a>                 
<strong class="jxr_keyword">return</strong> xreturn;
-<a class="jxr_linenumber" name="L1836" href="#L1836">1836</a>             }
-<a class="jxr_linenumber" name="L1837" href="#L1837">1837</a>         }
-<a class="jxr_linenumber" name="L1838" href="#L1838">1838</a> 
-<a class="jxr_linenumber" name="L1839" href="#L1839">1839</a>         <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1840" href="#L1840">1840</a> <em 
class="jxr_javadoccomment">         * @return whether the statement has been 
processed</em>
-<a class="jxr_linenumber" name="L1841" href="#L1841">1841</a> <em 
class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1842" href="#L1842">1842</a>         <strong 
class="jxr_keyword">public</strong> <strong 
class="jxr_keyword">boolean</strong> isProcessed() {
-<a class="jxr_linenumber" name="L1843" href="#L1843">1843</a>             
<strong class="jxr_keyword">return</strong> processed;
-<a class="jxr_linenumber" name="L1844" href="#L1844">1844</a>         }
-<a class="jxr_linenumber" name="L1845" href="#L1845">1845</a> 
-<a class="jxr_linenumber" name="L1846" href="#L1846">1846</a>         <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1847" href="#L1847">1847</a> <em 
class="jxr_javadoccomment">         * @return the actual statement.</em>
-<a class="jxr_linenumber" name="L1848" href="#L1848">1848</a> <em 
class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1849" href="#L1849">1849</a>         <strong 
class="jxr_keyword">public</strong> Object getStatement() {
-<a class="jxr_linenumber" name="L1850" href="#L1850">1850</a>             
<strong class="jxr_keyword">return</strong> stmt;
-<a class="jxr_linenumber" name="L1851" href="#L1851">1851</a>         }
-<a class="jxr_linenumber" name="L1852" href="#L1852">1852</a>     }
-<a class="jxr_linenumber" name="L1853" href="#L1853">1853</a> 
-<a class="jxr_linenumber" name="L1854" href="#L1854">1854</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1855" href="#L1855">1855</a> <em 
class="jxr_javadoccomment">     * Processes an annotated statement.</em>
-<a class="jxr_linenumber" name="L1856" href="#L1856">1856</a> <em 
class="jxr_javadoccomment">     * @param stmt the statement</em>
-<a class="jxr_linenumber" name="L1857" href="#L1857">1857</a> <em 
class="jxr_javadoccomment">     * @param index the index of the current 
annotation being processed</em>
-<a class="jxr_linenumber" name="L1858" href="#L1858">1858</a> <em 
class="jxr_javadoccomment">     * @param data the contextual data</em>
-<a class="jxr_linenumber" name="L1859" href="#L1859">1859</a> <em 
class="jxr_javadoccomment">     * @return  the result of the statement block 
evaluation</em>
-<a class="jxr_linenumber" name="L1860" href="#L1860">1860</a> <em 
class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1861" href="#L1861">1861</a>     <strong 
class="jxr_keyword">protected</strong> Object processAnnotation(<strong 
class="jxr_keyword">final</strong> ASTAnnotatedStatement stmt, <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
index, <strong class="jxr_keyword">final</strong> Object data) {
-<a class="jxr_linenumber" name="L1862" href="#L1862">1862</a>         <em 
class="jxr_comment">// are we evaluating the block ?</em>
-<a class="jxr_linenumber" name="L1863" href="#L1863">1863</a>         <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
last = stmt.jjtGetNumChildren() - 1;
-<a class="jxr_linenumber" name="L1864" href="#L1864">1864</a>         <strong 
class="jxr_keyword">if</strong> (index == last) {
-<a class="jxr_linenumber" name="L1865" href="#L1865">1865</a>             
<strong class="jxr_keyword">final</strong> <a name="JexlNode" 
href="../../../../../org/apache/commons/jexl3/parser/JexlNode.html#JexlNode">JexlNode</a>
 cblock = stmt.jjtGetChild(last);
-<a class="jxr_linenumber" name="L1866" href="#L1866">1866</a>             <em 
class="jxr_comment">// if the context has changed, might need a new 
interpreter</em>
-<a class="jxr_linenumber" name="L1867" href="#L1867">1867</a>             
<strong class="jxr_keyword">final</strong> <a name="JexlArithmetic" 
href="../../../../../org/apache/commons/jexl3/JexlArithmetic.html#JexlArithmetic">JexlArithmetic</a>
 jexla = arithmetic.options(context);
-<a class="jxr_linenumber" name="L1868" href="#L1868">1868</a>             
<strong class="jxr_keyword">if</strong> (jexla == arithmetic) {
-<a class="jxr_linenumber" name="L1869" href="#L1869">1869</a>                 
<strong class="jxr_keyword">return</strong> 
cblock.jjtAccept(Interpreter.<strong class="jxr_keyword">this</strong>, data);
-<a class="jxr_linenumber" name="L1870" href="#L1870">1870</a>             }
-<a class="jxr_linenumber" name="L1871" href="#L1871">1871</a>             
<strong class="jxr_keyword">if</strong> 
(!arithmetic.getClass().equals(jexla.getClass())) {
-<a class="jxr_linenumber" name="L1872" href="#L1872">1872</a>                 
logger.warn(<span class="jxr_string">"expected arithmetic to be "</span> + 
arithmetic.getClass().getSimpleName()
-<a class="jxr_linenumber" name="L1873" href="#L1873">1873</a>                  
       + <span class="jxr_string">", got "</span> + 
jexla.getClass().getSimpleName()
-<a class="jxr_linenumber" name="L1874" href="#L1874">1874</a>                 
);
-<a class="jxr_linenumber" name="L1875" href="#L1875">1875</a>             }
-<a class="jxr_linenumber" name="L1876" href="#L1876">1876</a>             
<strong class="jxr_keyword">final</strong> <a name="Interpreter" 
href="../../../../../org/apache/comm<a name="Interpreter" 
href="../../../../../org/apache/commons/jexl3/internal/Interpreter.html#Interpreter">Interpreter</a>nternal/Interpreter.html#Interpreter">Interpreter</a>
 ii = <strong class="jxr_keyword">new</strong> <a name="Interpreter" 
href="../../../../../org/apache/commons/jexl3/internal/Interpreter.html#Interpreter">Interpreter</a>(Interpreter.<strong
 class="jxr_keyword">this</strong>, jexla);
-<a class="jxr_linenumber" name="L1877" href="#L1877">1877</a>             
<strong class="jxr_keyword">final</strong> Object r = cblock.jjtAccept(ii, 
data);
-<a class="jxr_linenumber" name="L1878" href="#L1878">1878</a>             
<strong class="jxr_keyword">if</strong> (ii.isCancelled()) {
-<a class="jxr_linenumber" name="L1879" href="#L1879">1879</a>                 
Interpreter.<strong class="jxr_keyword">this</strong>.cancel();
-<a class="jxr_linenumber" name="L1880" href="#L1880">1880</a>             }
-<a class="jxr_linenumber" name="L1881" href="#L1881">1881</a>             
<strong class="jxr_keyword">return</strong> r;
-<a class="jxr_linenumber" name="L1882" href="#L1882">1882</a>         }
-<a class="jxr_linenumber" name="L1883" href="#L1883">1883</a>         <em 
class="jxr_comment">// tracking whether we processed the annotation</em>
-<a class="jxr_linenumber" name="L1884" href="#L1884">1884</a>         <strong 
class="jxr_keyword">final</strong> AnnotatedCall jstmt = <strong 
class="jxr_keyword">new</strong> AnnotatedCall(stmt, index + 1, data);
-<a class="jxr_linenumber" name="L1885" href="#L1885">1885</a>         <em 
class="jxr_comment">// the annotation node and name</em>
-<a class="jxr_linenumber" name="L1886" href="#L1886">1886</a>         <strong 
class="jxr_keyword">final</strong> <a name="ASTAnnotation"<a 
name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>
 anode = (<a name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>)
 stmt.jjtGetChild(index);
-<a class="jxr_linenumber" name="L1887" href="#L1887">1887</a>         <strong 
class="jxr_keyword">final</strong> String aname = anode.getName();
-<a class="jxr_linenumber" name="L1888" href="#L1888">1888</a>         <em 
class="jxr_comment">// evaluate the arguments</em>
-<a class="jxr_linenumber" name="L1889" href="#L1889">1889</a>         <strong 
class="jxr_keyword">final</strong> Object[] argv = anode.jjtGetNumChildren() 
&gt; 0
-<a class="jxr_linenumber" name="L1890" href="#L1890">1890</a>                  
       ? visit((ASTArguments) anode.jjtGetChild(0), <strong 
class="jxr_keyword">null</strong>) : <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1891" href="#L1891">1891</a>         <em 
class="jxr_comment">// wrap the future, will recurse through annotation 
processor</em>
-<a class="jxr_linenumber" name="L1892" href="#L1892">1892</a>         Object 
result;
-<a class="jxr_linenumber" name="L1893" href="#L1893">1893</a>         <strong 
class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1894" href="#L1894">1894</a>             
result = processAnnotation(aname, argv, jstmt);
-<a class="jxr_linenumber" name="L1895" href="#L1895">1895</a>             <em 
class="jxr_comment">// not processing an annotation is an error</em>
-<a class="jxr_linenumber" name="L1896" href="#L1896">1896</a>             
<strong class="jxr_keyword">if</strong> (!jstmt.isProcessed()) {
-<a class="jxr_linenumber" name="L1897" href="#L1897">1897</a>                 
<strong class="jxr_keyword">return</strong> annotationError(anode, aname, 
<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1898" href="#L1898">1898</a>             }
-<a class="jxr_linenumber" name="L1899" href="#L1899">1899</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>
 xany) {
-<a class="jxr_linenumber" name="L1900" href="#L1900">1900</a>             
<strong class="jxr_keyword">throw</strong> xany;
-<a class="jxr_linenumber" name="L1901" href="#L1901">1901</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
-<a class="jxr_linenumber" name="L1902" href="#L1902">1902</a>             
<strong class="jxr_keyword">return</strong> annotationError(anode, aname, xany);
-<a class="jxr_linenumber" name="L1903" href="#L1903">1903</a>         }
-<a class="jxr_linenumber" name="L1904" href="#L1904">1904</a>         <em 
class="jxr_comment">// the caller may return a return, break or continue</em>
-<a class="jxr_linenumber" name="L1905" href="#L1905">1905</a>         <strong 
class="jxr_keyword">if</strong> (result instanceof <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>)
 {
-<a class="jxr_linenumber" name="L1906" href="#L1906">1906</a>             
<strong class="jxr_keyword">throw</strong> (<a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>)
 result;
-<a class="jxr_linenumber" name="L1907" href="#L1907">1907</a>         }
-<a class="jxr_linenumber" name="L1908" href="#L1908">1908</a>         <strong 
class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L1909" href="#L1909">1909</a>     }
-<a class="jxr_linenumber" name="L1910" href="#L1910">1910</a> 
-<a class="jxr_linenumber" name="L1911" href="#L1911">1911</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1912" href="#L1912">1912</a> <em 
class="jxr_javadoccomment">     * Delegates the annotation processing to the 
JexlContext if it is an AnnotationProcessor.</em>
-<a class="jxr_linenumber" name="L1913" href="#L1913">1913</a> <em 
class="jxr_javadoccomment">     * @param annotation    the annotation name</em>
-<a class="jxr_linenumber" name="L1914" href="#L1914">1914</a> <em 
class="jxr_javadoccomment">     * @param args          the annotation 
arguments</em>
-<a class="jxr_linenumber" name="L1915" href="#L1915">1915</a> <em 
class="jxr_javadoccomment">     * @param stmt          the statement / block 
that was annotated</em>
-<a class="jxr_linenumber" name="L1916" href="#L1916">1916</a> <em 
class="jxr_javadoccomment">     * @return the result of statement.call()</em>
-<a class="jxr_linenumber" name="L1917" href="#L1917">1917</a> <em 
class="jxr_javadoccomment">     * @throws Exception if anything goes wrong</em>
-<a class="jxr_linenumber" name="L1918" href="#L1918">1918</a> <em 
class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1919" href="#L1919">1919</a>     <strong 
class="jxr_keyword">protected</strong> Object processAnnotation(<strong 
class="jxr_keyword">final</strong> String annotation, <strong 
class="jxr_keyword">final</strong> Object[] args, <strong 
class="jxr_keyword">final</strong> Callable&lt;Object&gt; stmt) <strong 
class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1920" href="#L1920">1920</a>                 
<strong class="jxr_keyword">return</strong> context instanceof 
JexlContext.AnnotationProcessor
-<a class="jxr_linenumber" name="L1921" href="#L1921">1921</a>                 
? ((JexlContext.AnnotationProcessor) context).processAnnotation(annotation, 
args, stmt)
-<a class="jxr_linenumber" name="L1922" href="#L1922">1922</a>                 
: stmt.call();
-<a class="jxr_linenumber" name="L1923" href="#L1923">1923</a>     }
-<a class="jxr_linenumber" name="L1924" href="#L1924">1924</a> }
+<a class="jxr_linenumber" name="L1686" href="#L1686">1686</a>         } 
<strong class="jxr_keyword">catch</strong> (JexlException.Method xmethod) {
+<a class="jxr_linenumber" name="L1687" href="#L1687">1687</a>             <em 
class="jxr_comment">// ignore and handle at end; treat as an inner discover 
that fails</em>
+<a class="jxr_linenumber" name="L1688" href="#L1688">1688</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> JexlException.TryFailed xany) {
+<a class="jxr_linenumber" name="L1689" href="#L1689">1689</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, 
methodName, xany);
+<a class="jxr_linenumber" name="L1690" href="#L1690">1690</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>
 xthru) {
+<a class="jxr_linenumber" name="L1691" href="#L1691">1691</a>             
<strong class="jxr_keyword">throw</strong> xthru;
+<a class="jxr_linenumber" name="L1692" href="#L1692">1692</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
+<a class="jxr_linenumber" name="L1693" href="#L1693">1693</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, 
methodName, xany);
+<a class="jxr_linenumber" name="L1694" href="#L1694">1694</a>         }
+<a class="jxr_linenumber" name="L1695" href="#L1695">1695</a>         <em 
class="jxr_comment">// we have either evaluated and returned or no method was 
found</em>
+<a class="jxr_linenumber" name="L1696" href="#L1696">1696</a>         <strong 
class="jxr_keyword">return</strong> node.isSafeLhs(isSafe())
+<a class="jxr_linenumber" name="L1697" href="#L1697">1697</a>                 
? <strong class="jxr_keyword">null</strong>
+<a class="jxr_linenumber" name="L1698" href="#L1698">1698</a>                 
: unsolvableMethod(node, methodName, argv);
+<a class="jxr_linenumber" name="L1699" href="#L1699">1699</a>     }
+<a class="jxr_linenumber" name="L1700" href="#L1700">1700</a> 
+<a class="jxr_linenumber" name="L1701" href="#L1701">1701</a>     @Override
+<a class="jxr_linenumber" name="L1702" href="#L1702">1702</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> ASTConstructorNode node, <strong 
class="jxr_keyword">final</strong> Object data) {
+<a class="jxr_linenumber" name="L1703" href="#L1703">1703</a>         <strong 
class="jxr_keyword">if</strong> (isCancelled()) {
+<a class="jxr_linenumber" name="L1704" href="#L1704">1704</a>             
<strong class="jxr_keyword">throw</strong> <strong 
class="jxr_keyword">new</strong> JexlException.Cancel(node);
+<a class="jxr_linenumber" name="L1705" href="#L1705">1705</a>         }
+<a class="jxr_linenumber" name="L1706" href="#L1706">1706</a>         <em 
class="jxr_comment">// first child is class or class name</em>
+<a class="jxr_linenumber" name="L1707" href="#L1707">1707</a>         <strong 
class="jxr_keyword">final</strong> Object target = 
node.jjtGetChild(0).jjtAccept(<strong class="jxr_keyword">this</strong>, data);
+<a class="jxr_linenumber" name="L1708" href="#L1708">1708</a>         <em 
class="jxr_comment">// get the ctor args</em>
+<a class="jxr_linenumber" name="L1709" href="#L1709">1709</a>         <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
argc = node.jjtGetNumChildren() - 1;
+<a class="jxr_linenumber" name="L1710" href="#L1710">1710</a>         Object[] 
argv = <strong class="jxr_keyword">new</strong> Object[argc];
+<a class="jxr_linenumber" name="L1711" href="#L1711">1711</a>         <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 
0; i &lt; argc; i++) {
+<a class="jxr_linenumber" name="L1712" href="#L1712">1712</a>             
argv[i] = node.jjtGetChild(i + 1).jjtAccept(<strong 
class="jxr_keyword">this</strong>, data);
+<a class="jxr_linenumber" name="L1713" href="#L1713">1713</a>         }
+<a class="jxr_linenumber" name="L1714" href="#L1714">1714</a> 
+<a class="jxr_linenumber" name="L1715" href="#L1715">1715</a>         <strong 
class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1716" href="#L1716">1716</a>             
<strong class="jxr_keyword">final</strong> <strong 
class="jxr_keyword">boolean</strong> cacheable = cache;
+<a class="jxr_linenumber" name="L1717" href="#L1717">1717</a>             <em 
class="jxr_comment">// attempt to reuse last funcall cached in volatile 
JexlNode.value</em>
+<a class="jxr_linenumber" name="L1718" href="#L1718">1718</a>             
<strong class="jxr_keyword">if</strong> (cacheable) {
+<a class="jxr_linenumber" name="L1719" href="#L1719">1719</a>                 
<strong class="jxr_keyword">final</strong> Object cached = node.jjtGetValue();
+<a class="jxr_linenumber" name="L1720" href="#L1720">1720</a>                 
<strong class="jxr_keyword">if</strong> (cached instanceof Funcall) {
+<a class="jxr_linenumber" name="L1721" href="#L1721">1721</a>                  
   <strong class="jxr_keyword">final</strong> Object eval = ((Funcall) 
cached).tryInvoke(<strong class="jxr_keyword">this</strong>, <strong 
class="jxr_keyword">null</strong>, target, argv);
+<a class="jxr_linenumber" name="L1722" href="#L1722">1722</a>                  
   <strong class="jxr_keyword">if</strong> (JexlEngine.TRY_FAILED != eval) {
+<a class="jxr_linenumber" name="L1723" href="#L1723">1723</a>                  
       <strong class="jxr_keyword">return</strong> eval;
+<a class="jxr_linenumber" name="L1724" href="#L1724">1724</a>                  
   }
+<a class="jxr_linenumber" name="L1725" href="#L1725">1725</a>                 }
+<a class="jxr_linenumber" name="L1726" href="#L1726">1726</a>             }
+<a class="jxr_linenumber" name="L1727" href="#L1727">1727</a>             
<strong class="jxr_keyword">boolean</strong> narrow = false;
+<a class="jxr_linenumber" name="L1728" href="#L1728">1728</a>             <a 
name="JexlMethod" 
href="../../../../../org/apache/commons/jexl3/introspection/JexlMethod.html#JexlMethod">JexlMethod</a>
 ctor = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1729" href="#L1729">1729</a>             
Funcall funcall = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1730" href="#L1730">1730</a>             
<strong class="jxr_keyword">while</strong> (<strong 
class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="L1731" href="#L1731">1731</a>                 
<em class="jxr_comment">// try as stated</em>
+<a class="jxr_linenumber" name="L1732" href="#L1732">1732</a>                 
ctor = uberspect.getConstructor(target, argv);
+<a class="jxr_linenumber" name="L1733" href="#L1733">1733</a>                 
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1734" href="#L1734">1734</a>                  
   <strong class="jxr_keyword">if</strong> (cacheable &amp;&amp; 
ctor.isCacheable()) {
+<a class="jxr_linenumber" name="L1735" href="#L1735">1735</a>                  
       funcall = <strong class="jxr_keyword">new</strong> Funcall(ctor, narrow);
+<a class="jxr_linenumber" name="L1736" href="#L1736">1736</a>                  
   }
+<a class="jxr_linenumber" name="L1737" href="#L1737">1737</a>                  
   <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L1738" href="#L1738">1738</a>                 }
+<a class="jxr_linenumber" name="L1739" href="#L1739">1739</a>                 
<em class="jxr_comment">// try with prepending context as first argument</em>
+<a class="jxr_linenumber" name="L1740" href="#L1740">1740</a>                 
<strong class="jxr_keyword">final</strong> Object[] nargv = 
callArguments(context, narrow, argv);
+<a class="jxr_linenumber" name="L1741" href="#L1741">1741</a>                 
ctor = uberspect.getConstructor(target, nargv);
+<a class="jxr_linenumber" name="L1742" href="#L1742">1742</a>                 
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1743" href="#L1743">1743</a>                  
   <strong class="jxr_keyword">if</strong> (cacheable &amp;&amp; 
ctor.isCacheable()) {
+<a class="jxr_linenumber" name="L1744" href="#L1744">1744</a>                  
       funcall = <strong class="jxr_keyword">new</strong> ContextualCtor(ctor, 
narrow);
+<a class="jxr_linenumber" name="L1745" href="#L1745">1745</a>                  
   }
+<a class="jxr_linenumber" name="L1746" href="#L1746">1746</a>                  
   argv = nargv;
+<a class="jxr_linenumber" name="L1747" href="#L1747">1747</a>                  
   <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L1748" href="#L1748">1748</a>                 }
+<a class="jxr_linenumber" name="L1749" href="#L1749">1749</a>                 
<em class="jxr_comment">// if we did not find an exact method by name and we 
haven't tried yet,</em>
+<a class="jxr_linenumber" name="L1750" href="#L1750">1750</a>                 
<em class="jxr_comment">// attempt to narrow the parameters and if this 
succeeds, try again in next loop</em>
+<a class="jxr_linenumber" name="L1751" href="#L1751">1751</a>                 
<strong class="jxr_keyword">if</strong> (!narrow &amp;&amp; 
arithmetic.narrowArguments(argv)) {
+<a class="jxr_linenumber" name="L1752" href="#L1752">1752</a>                  
   narrow = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L1753" href="#L1753">1753</a>                  
   <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="L1754" href="#L1754">1754</a>                 }
+<a class="jxr_linenumber" name="L1755" href="#L1755">1755</a>                 
<em class="jxr_comment">// we are done trying</em>
+<a class="jxr_linenumber" name="L1756" href="#L1756">1756</a>                 
<strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L1757" href="#L1757">1757</a>             }
+<a class="jxr_linenumber" name="L1758" href="#L1758">1758</a>             <em 
class="jxr_comment">// we have either evaluated and returned or might have 
found a ctor</em>
+<a class="jxr_linenumber" name="L1759" href="#L1759">1759</a>             
<strong class="jxr_keyword">if</strong> (ctor != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1760" href="#L1760">1760</a>                 
<strong class="jxr_keyword">final</strong> Object eval = ctor.invoke(target, 
argv);
+<a class="jxr_linenumber" name="L1761" href="#L1761">1761</a>                 
<em class="jxr_comment">// cache executor in volatile JexlNode.value</em>
+<a class="jxr_linenumber" name="L1762" href="#L1762">1762</a>                 
<strong class="jxr_keyword">if</strong> (funcall != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1763" href="#L1763">1763</a>                  
   node.jjtSetValue(funcall);
+<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a>                 }
+<a class="jxr_linenumber" name="L1765" href="#L1765">1765</a>                 
<strong class="jxr_keyword">return</strong> eval;
+<a class="jxr_linenumber" name="L1766" href="#L1766">1766</a>             }
+<a class="jxr_linenumber" name="L1767" href="#L1767">1767</a>             
<strong class="jxr_keyword">final</strong> String tstr = target != <strong 
class="jxr_keyword">null</strong> ? target.toString() : <span 
class="jxr_string">"?"</span>;
+<a class="jxr_linenumber" name="L1768" href="#L1768">1768</a>             
<strong class="jxr_keyword">return</strong> unsolvableMethod(node, tstr, argv);
+<a class="jxr_linenumber" name="L1769" href="#L1769">1769</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> JexlException.Method xmethod) {
+<a class="jxr_linenumber" name="L1770" href="#L1770">1770</a>             
<strong class="jxr_keyword">throw</strong> xmethod;
+<a class="jxr_linenumber" name="L1771" href="#L1771">1771</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
+<a class="jxr_linenumber" name="L1772" href="#L1772">1772</a>             
<strong class="jxr_keyword">final</strong> String tstr = target != <strong 
class="jxr_keyword">null</strong> ? target.toString() : <span 
class="jxr_string">"?"</span>;
+<a class="jxr_linenumber" name="L1773" href="#L1773">1773</a>             
<strong class="jxr_keyword">throw</strong> invocationException(node, tstr, 
xany);
+<a class="jxr_linenumber" name="L1774" href="#L1774">1774</a>         }
+<a class="jxr_linenumber" name="L1775" href="#L1775">1775</a>     }
+<a class="jxr_linenumber" name="L1776" href="#L1776">1776</a> 
+<a class="jxr_linenumber" name="L1777" href="#L1777">1777</a>     @Override
+<a class="jxr_linenumber" name="L1778" href="#L1778">1778</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> <a name="ASTJxltLiteral" 
href="../../../../../org/apache/commons/jexl3/parser/ASTJxltLiteral.html#ASTJxltLiteral">ASTJxltLiteral</a>
 node, <strong class="jxr_keyword">final</strong> Object data) {
+<a class="jxr_linenumber" name="L1779" href="#L1779">1779</a>         
TemplateEngine.TemplateExpression tp = (TemplateEngine.TemplateExpression) 
node.jjtGetValue();
+<a class="jxr_linenumber" name="L1780" href="#L1780">1780</a>         <strong 
class="jxr_keyword">if</strong> (tp == <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1781" href="#L1781">1781</a>             
<strong class="jxr_keyword">final</strong> <a name="TemplateEngine" 
href="../../../../../org/apache/commons/jexl3/internal/TemplateEngine.html#TemplateEngine">TemplateEngine</a>
 jxlt = jexl.jxlt();
+<a class="jxr_linenumber" name="L1782" href="#L1782">1782</a>             <a 
name="JexlInfo" 
href="../../../../../org/apache/commons/jexl3/JexlInfo.html#JexlInfo">JexlInfo</a>
 info = node.jexlInfo();
+<a class="jxr_linenumber" name="L1783" href="#L1783">1783</a>             
<strong class="jxr_keyword">if</strong> (<strong 
class="jxr_keyword">this</strong>.block != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1784" href="#L1784">1784</a>                 
info = <strong class="jxr_keyword">new</strong> JexlNode.Info(node, info);
+<a class="jxr_linenumber" name="L1785" href="#L1785">1785</a>             }
+<a class="jxr_linenumber" name="L1786" href="#L1786">1786</a>             tp = 
jxlt.parseExpression(info, node.getLiteral(), frame != <strong 
class="jxr_keyword">null</strong> ? frame.getScope() : <strong 
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1787" href="#L1787">1787</a>             
node.jjtSetValue(tp);
+<a class="jxr_linenumber" name="L1788" href="#L1788">1788</a>         }
+<a class="jxr_linenumber" name="L1789" href="#L1789">1789</a>         <strong 
class="jxr_keyword">if</strong> (tp != <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1790" href="#L1790">1790</a>             
<strong class="jxr_keyword">return</strong> tp.evaluate(frame, context);
+<a class="jxr_linenumber" name="L1791" href="#L1791">1791</a>         }
+<a class="jxr_linenumber" name="L1792" href="#L1792">1792</a>         <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1793" href="#L1793">1793</a>     }
+<a class="jxr_linenumber" name="L1794" href="#L1794">1794</a> 
+<a class="jxr_linenumber" name="L1795" href="#L1795">1795</a>     @Override
+<a class="jxr_linenumber" name="L1796" href="#L1796">1796</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> <a name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>
 node, <strong class="jxr_keyword">final</strong> Object data) {
+<a class="jxr_linenumber" name="L1797" href="#L1797">1797</a>         <strong 
class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> 
UnsupportedOperationException(ASTAnnotation.<strong 
class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">": Not 
supported."</span>);
+<a class="jxr_linenumber" name="L1798" href="#L1798">1798</a>     }
+<a class="jxr_linenumber" name="L1799" href="#L1799">1799</a> 
+<a class="jxr_linenumber" name="L1800" href="#L1800">1800</a>     @Override
+<a class="jxr_linenumber" name="L1801" href="#L1801">1801</a>     <strong 
class="jxr_keyword">protected</strong> Object visit(<strong 
class="jxr_keyword">final</strong> ASTAnnotatedStatement node, <strong 
class="jxr_keyword">final</strong> Object data) {
+<a class="jxr_linenumber" name="L1802" href="#L1802">1802</a>         <strong 
class="jxr_keyword">return</strong> processAnnotation(node, 0, data);
+<a class="jxr_linenumber" name="L1803" href="#L1803">1803</a>     }
+<a class="jxr_linenumber" name="L1804" href="#L1804">1804</a> 
+<a class="jxr_linenumber" name="L1805" href="#L1805">1805</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1806" href="#L1806">1806</a> <em 
class="jxr_javadoccomment">     * An annotated call.</em>
+<a class="jxr_linenumber" name="L1807" href="#L1807">1807</a> <em 
class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1808" href="#L1808">1808</a>     <strong 
class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> 
AnnotatedCall <strong class="jxr_keyword">implements</strong> 
Callable&lt;Object&gt; {
+<a class="jxr_linenumber" name="L1809" href="#L1809">1809</a>         <em 
class="jxr_javadoccomment">/** The statement. */</em>
+<a class="jxr_linenumber" name="L1810" href="#L1810">1810</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
ASTAnnotatedStatement stmt;
+<a class="jxr_linenumber" name="L1811" href="#L1811">1811</a>         <em 
class="jxr_javadoccomment">/** The child index. */</em>
+<a class="jxr_linenumber" name="L1812" href="#L1812">1812</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
<strong class="jxr_keyword">int</strong> index;
+<a class="jxr_linenumber" name="L1813" href="#L1813">1813</a>         <em 
class="jxr_javadoccomment">/** The data. */</em>
+<a class="jxr_linenumber" name="L1814" href="#L1814">1814</a>         <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> 
Object data;
+<a class="jxr_linenumber" name="L1815" href="#L1815">1815</a>         <em 
class="jxr_javadoccomment">/** Tracking whether we processed the annotation. 
*/</em>
+<a class="jxr_linenumber" name="L1816" href="#L1816">1816</a>         <strong 
class="jxr_keyword">private</strong> <strong 
class="jxr_keyword">boolean</strong> processed = false;
+<a class="jxr_linenumber" name="L1817" href="#L1817">1817</a> 
+<a class="jxr_linenumber" name="L1818" href="#L1818">1818</a>         <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1819" href="#L1819">1819</a> <em 
class="jxr_javadoccomment">         * Simple ctor.</em>
+<a class="jxr_linenumber" name="L1820" href="#L1820">1820</a> <em 
class="jxr_javadoccomment">         * @param astmt the statement</em>
+<a class="jxr_linenumber" name="L1821" href="#L1821">1821</a> <em 
class="jxr_javadoccomment">         * @param aindex the index</em>
+<a class="jxr_linenumber" name="L1822" href="#L1822">1822</a> <em 
class="jxr_javadoccomment">         * @param adata the data</em>
+<a class="jxr_linenumber" name="L1823" href="#L1823">1823</a> <em 
class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L1824" href="#L1824">1824</a>         
AnnotatedCall(<strong class="jxr_keyword">final</strong> ASTAnnotatedStatement 
astmt, <strong class="jxr_keyword">final</strong> <strong 
class="jxr_keyword">int</strong> aindex, <strong 
class="jxr_keyword">final</strong> Object adata) {
+<a class="jxr_linenumber" name="L1825" href="#L1825">1825</a>             stmt 
= astmt;
+<a class="jxr_linenumber" name="L1826" href="#L1826">1826</a>             
index = aindex;
+<a class="jxr_linenumber" name="L1827" href="#L1827">1827</a>             data 
= adata;
+<a class="jxr_linenumber" name="L1828" href="#L1828">1828</a>         }
+<a class="jxr_linenumber" name="L1829" href="#L1829">1829</a> 
+<a class="jxr_linenumber" name="L1830" href="#L1830">1830</a> 
+<a class="jxr_linenumber" name="L1831" href="#L1831">1831</a>         @Override
+<a class="jxr_linenumber" name="L1832" href="#L1832">1832</a>         <strong 
class="jxr_keyword">public</strong> Object call() <strong 
class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L1833" href="#L1833">1833</a>             
processed = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L1834" href="#L1834">1834</a>             
<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1835" href="#L1835">1835</a>                 
<strong class="jxr_keyword">return</strong> processAnnotation(stmt, index, 
data);
+<a class="jxr_linenumber" name="L1836" href="#L1836">1836</a>             } 
<strong class="jxr_keyword">catch</strong> (JexlException.Return | 
JexlException.Break | JexlException.Continue xreturn) {
+<a class="jxr_linenumber" name="L1837" href="#L1837">1837</a>                 
<strong class="jxr_keyword">return</strong> xreturn;
+<a class="jxr_linenumber" name="L1838" href="#L1838">1838</a>             }
+<a class="jxr_linenumber" name="L1839" href="#L1839">1839</a>         }
+<a class="jxr_linenumber" name="L1840" href="#L1840">1840</a> 
+<a class="jxr_linenumber" name="L1841" href="#L1841">1841</a>         <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1842" href="#L1842">1842</a> <em 
class="jxr_javadoccomment">         * @return whether the statement has been 
processed</em>
+<a class="jxr_linenumber" name="L1843" href="#L1843">1843</a> <em 
class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L1844" href="#L1844">1844</a>         <strong 
class="jxr_keyword">public</strong> <strong 
class="jxr_keyword">boolean</strong> isProcessed() {
+<a class="jxr_linenumber" name="L1845" href="#L1845">1845</a>             
<strong class="jxr_keyword">return</strong> processed;
+<a class="jxr_linenumber" name="L1846" href="#L1846">1846</a>         }
+<a class="jxr_linenumber" name="L1847" href="#L1847">1847</a> 
+<a class="jxr_linenumber" name="L1848" href="#L1848">1848</a>         <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1849" href="#L1849">1849</a> <em 
class="jxr_javadoccomment">         * @return the actual statement.</em>
+<a class="jxr_linenumber" name="L1850" href="#L1850">1850</a> <em 
class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L1851" href="#L1851">1851</a>         <strong 
class="jxr_keyword">public</strong> Object getStatement() {
+<a class="jxr_linenumber" name="L1852" href="#L1852">1852</a>             
<strong class="jxr_keyword">return</strong> stmt;
+<a class="jxr_linenumber" name="L1853" href="#L1853">1853</a>         }
+<a class="jxr_linenumber" name="L1854" href="#L1854">1854</a>     }
+<a class="jxr_linenumber" name="L1855" href="#L1855">1855</a> 
+<a class="jxr_linenumber" name="L1856" href="#L1856">1856</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1857" href="#L1857">1857</a> <em 
class="jxr_javadoccomment">     * Processes an annotated statement.</em>
+<a class="jxr_linenumber" name="L1858" href="#L1858">1858</a> <em 
class="jxr_javadoccomment">     * @param stmt the statement</em>
+<a class="jxr_linenumber" name="L1859" href="#L1859">1859</a> <em 
class="jxr_javadoccomment">     * @param index the index of the current 
annotation being processed</em>
+<a class="jxr_linenumber" name="L1860" href="#L1860">1860</a> <em 
class="jxr_javadoccomment">     * @param data the contextual data</em>
+<a class="jxr_linenumber" name="L1861" href="#L1861">1861</a> <em 
class="jxr_javadoccomment">     * @return  the result of the statement block 
evaluation</em>
+<a class="jxr_linenumber" name="L1862" href="#L1862">1862</a> <em 
class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1863" href="#L1863">1863</a>     <strong 
class="jxr_keyword">protected</strong> Object processAnnotation(<strong 
class="jxr_keyword">final</strong> ASTAnnotatedStatement stmt, <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
index, <strong class="jxr_keyword">final</strong> Object data) {
+<a class="jxr_linenumber" name="L1864" href="#L1864">1864</a>         <em 
class="jxr_comment">// are we evaluating the block ?</em>
+<a class="jxr_linenumber" name="L1865" href="#L1865">1865</a>         <strong 
class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> 
last = stmt.jjtGetNumChildren() - 1;
+<a class="jxr_linenumber" name="L1866" href="#L1866">1866</a>         <strong 
class="jxr_keyword">if</strong> (index == last) {
+<a class="jxr_linenumber" name="L1867" href="#L1867">1867</a>             
<strong class="jxr_keyword">final</strong> <a name="JexlNode" 
href="../../../../../org/apache/commons/jexl3/parser/JexlNode.html#JexlNode">JexlNode</a>
 cblock = stmt.jjtGetChild(last);
+<a class="jxr_linenumber" name="L1868" href="#L1868">1868</a>             <em 
class="jxr_comment">// if the context has changed, might need a new 
interpreter</em>
+<a class="jxr_linenumber" name="L1869" href="#L1869">1869</a>             
<strong class="jxr_keyword">final</strong> <a name="JexlArithmetic" 
href="../../../../../org/apache/commons/jexl3/JexlArithmetic.html#JexlArithmetic">JexlArithmetic</a>
 jexla = arithmetic.options(context);
+<a class="jxr_linenumber" name="L1870" href="#L1870">1870</a>             
<strong class="jxr_keyword">if</strong> (jexla == arithmetic) {
+<a class="jxr_linenumber" name="L1871" href="#L1871">1871</a>                 
<strong class="jxr_keyword">return</strong> 
cblock.jjtAccept(Interpreter.<strong class="jxr_keyword">this</strong>, data);
+<a class="jxr_linenumber" name="L1872" href="#L1872">1872</a>             }
+<a class="jxr_linenumber" name="L1873" href="#L1873">1873</a>             
<strong class="jxr_keyword">if</strong> 
(!arithmetic.getClass().equals(jexla.getClass())) {
+<a class="jxr_linenumber" name="L1874" href="#L1874">1874</a>                 
logger.warn(<span class="jxr_string">"expected arithmetic to be "</span> + 
arithmetic.getClass().getSimpleName()
+<a class="jxr_linenumber" name="L1875" href="#L1875">1875</a>                  
       + <span class="jxr_string">", got "</span> + 
jexla.getClass().getSimpleName()
+<a class="jxr_linenumber" name="L1876" href="#L1876">1876</a>                 
);
+<a class="jxr_linenumber" name="L1877" href="#L1877">1877</a>             }
+<a class="jxr_linenumber" name="L1878" href="#L1878">1878</a>             
<strong class="jxr_keyword">final</strong> <a name="Interpreter" 
href="../../../../../org/apache/comm<a name="Interpreter" 
href="../../../../../org/apache/commons/jexl3/internal/Interpreter.html#Interpreter">Interpreter</a>nternal/Interpreter.html#Interpreter">Interpreter</a>
 ii = <strong class="jxr_keyword">new</strong> <a name="Interpreter" 
href="../../../../../org/apache/commons/jexl3/internal/Interpreter.html#Interpreter">Interpreter</a>(Interpreter.<strong
 class="jxr_keyword">this</strong>, jexla);
+<a class="jxr_linenumber" name="L1879" href="#L1879">1879</a>             
<strong class="jxr_keyword">final</strong> Object r = cblock.jjtAccept(ii, 
data);
+<a class="jxr_linenumber" name="L1880" href="#L1880">1880</a>             
<strong class="jxr_keyword">if</strong> (ii.isCancelled()) {
+<a class="jxr_linenumber" name="L1881" href="#L1881">1881</a>                 
Interpreter.<strong class="jxr_keyword">this</strong>.cancel();
+<a class="jxr_linenumber" name="L1882" href="#L1882">1882</a>             }
+<a class="jxr_linenumber" name="L1883" href="#L1883">1883</a>             
<strong class="jxr_keyword">return</strong> r;
+<a class="jxr_linenumber" name="L1884" href="#L1884">1884</a>         }
+<a class="jxr_linenumber" name="L1885" href="#L1885">1885</a>         <em 
class="jxr_comment">// tracking whether we processed the annotation</em>
+<a class="jxr_linenumber" name="L1886" href="#L1886">1886</a>         <strong 
class="jxr_keyword">final</strong> AnnotatedCall jstmt = <strong 
class="jxr_keyword">new</strong> AnnotatedCall(stmt, index + 1, data);
+<a class="jxr_linenumber" name="L1887" href="#L1887">1887</a>         <em 
class="jxr_comment">// the annotation node and name</em>
+<a class="jxr_linenumber" name="L1888" href="#L1888">1888</a>         <strong 
class="jxr_keyword">final</strong> <a name="ASTAnnotation"<a 
name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>
 anode = (<a name="ASTAnnotation" 
href="../../../../../org/apache/commons/jexl3/parser/ASTAnnotation.html#ASTAnnotation">ASTAnnotation</a>)
 stmt.jjtGetChild(index);
+<a class="jxr_linenumber" name="L1889" href="#L1889">1889</a>         <strong 
class="jxr_keyword">final</strong> String aname = anode.getName();
+<a class="jxr_linenumber" name="L1890" href="#L1890">1890</a>         <em 
class="jxr_comment">// evaluate the arguments</em>
+<a class="jxr_linenumber" name="L1891" href="#L1891">1891</a>         <strong 
class="jxr_keyword">final</strong> Object[] argv = anode.jjtGetNumChildren() 
&gt; 0
+<a class="jxr_linenumber" name="L1892" href="#L1892">1892</a>                  
       ? visit((ASTArguments) anode.jjtGetChild(0), <strong 
class="jxr_keyword">null</strong>) : <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1893" href="#L1893">1893</a>         <em 
class="jxr_comment">// wrap the future, will recurse through annotation 
processor</em>
+<a class="jxr_linenumber" name="L1894" href="#L1894">1894</a>         Object 
result;
+<a class="jxr_linenumber" name="L1895" href="#L1895">1895</a>         <strong 
class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1896" href="#L1896">1896</a>             
result = processAnnotation(aname, argv, jstmt);
+<a class="jxr_linenumber" name="L1897" href="#L1897">1897</a>             <em 
class="jxr_comment">// not processing an annotation is an error</em>
+<a class="jxr_linenumber" name="L1898" href="#L1898">1898</a>             
<strong class="jxr_keyword">if</strong> (!jstmt.isProcessed()) {
+<a class="jxr_linenumber" name="L1899" href="#L1899">1899</a>                 
<strong class="jxr_keyword">return</strong> annotationError(anode, aname, 
<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1900" href="#L1900">1900</a>             }
+<a class="jxr_linenumber" name="L1901" href="#L1901">1901</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>
 xany) {
+<a class="jxr_linenumber" name="L1902" href="#L1902">1902</a>             
<strong class="jxr_keyword">throw</strong> xany;
+<a class="jxr_linenumber" name="L1903" href="#L1903">1903</a>         } 
<strong class="jxr_keyword">catch</strong> (<strong 
class="jxr_keyword">final</strong> Exception xany) {
+<a class="jxr_linenumber" name="L1904" href="#L1904">1904</a>             
<strong class="jxr_keyword">return</strong> annotationError(anode, aname, xany);
+<a class="jxr_linenumber" name="L1905" href="#L1905">1905</a>         }
+<a class="jxr_linenumber" name="L1906" href="#L1906">1906</a>         <em 
class="jxr_comment">// the caller may return a return, break or continue</em>
+<a class="jxr_linenumber" name="L1907" href="#L1907">1907</a>         <strong 
class="jxr_keyword">if</strong> (result instanceof <a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>)
 {
+<a class="jxr_linenumber" name="L1908" href="#L1908">1908</a>             
<strong class="jxr_keyword">throw</strong> (<a name="JexlException" 
href="../../../../../org/apache/commons/jexl3/JexlException.html#JexlException">JexlException</a>)
 result;
+<a class="jxr_linenumber" name="L1909" href="#L1909">1909</a>         }
+<a class="jxr_linenumber" name="L1910" href="#L1910">1910</a>         <strong 
class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L1911" href="#L1911">1911</a>     }
+<a class="jxr_linenumber" name="L1912" href="#L1912">1912</a> 
+<a class="jxr_linenumber" name="L1913" href="#L1913">1913</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1914" href="#L1914">1914</a> <em 
class="jxr_javadoccomment">     * Delegates the annotation processing to the 
JexlContext if it is an AnnotationProcessor.</em>
+<a class="jxr_linenumber" name="L1915" href="#L1915">1915</a> <em 
class="jxr_javadoccomment">     * @param annotation    the annotation name</em>
+<a class="jxr_linenumber" name="L1916" href="#L1916">1916</a> <em 
class="jxr_javadoccomment">     * @param args          the annotation 
arguments</em>
+<a class="jxr_linenumber" name="L1917" href="#L1917">1917</a> <em 
class="jxr_javadoccomment">     * @param stmt          the statement / block 
that was annotated</em>
+<a class="jxr_linenumber" name="L1918" href="#L1918">1918</a> <em 
class="jxr_javadoccomment">     * @return the result of statement.call()</em>
+<a class="jxr_linenumber" name="L1919" href="#L1919">1919</a> <em 
class="jxr_javadoccomment">     * @throws Exception if anything goes wrong</em>
+<a class="jxr_linenumber" name="L1920" href="#L1920">1920</a> <em 
class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1921" href="#L1921">1921</a>     <strong 
class="jxr_keyword">protected</strong> Object processAnnotation(<strong 
class="jxr_keyword">final</strong> String annotation, <strong 
class="jxr_keyword">final</strong> Object[] args, <strong 
class="jxr_keyword">final</strong> Callable&lt;Object&gt; stmt) <strong 
class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L1922" href="#L1922">1922</a>                 
<strong class="jxr_keyword">return</strong> context instanceof 
JexlContext.AnnotationProcessor
+<a class="jxr_linenumber" name="L1923" href="#L1923">1923</a>                 
? ((JexlContext.AnnotationProcessor) context).processAnnotation(annotation, 
args, stmt)
+<a class="jxr_linenumber" name="L1924" href="#L1924">1924</a>                 
: stmt.call();
+<a class="jxr_linenumber" name="L1925" href="#L1925">1925</a>     }
+<a class="jxr_linenumber" name="L1926" href="#L1926">1926</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2001&#x2013;2021 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All rights 
reserved.</div>


Reply via email to