1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jexl.parser;
17
18 import org.apache.commons.jexl.JexlContext;
19
20 /***
21 * Size Method, e.g. size().
22 *
23 * @author <a href="mailto:mhw@kremvax.net">Mark H. Wilkinson</a>
24 * @version $Id: ASTSizeMethod.java 398324 2006-04-30 12:20:24Z dion $
25 */
26 public class ASTSizeMethod extends SimpleNode {
27 /***
28 * Create the node given an id.
29 *
30 * @param id node id.
31 */
32 public ASTSizeMethod(int id) {
33 super(id);
34 }
35
36 /***
37 * Create a node with the given parser and id.
38 *
39 * @param p a parser.
40 * @param id node id.
41 */
42 public ASTSizeMethod(Parser p, int id) {
43 super(p, id);
44 }
45
46 /*** {@inheritDoc} */
47 public Object jjtAccept(ParserVisitor visitor, Object data) {
48 return visitor.visit(this, data);
49 }
50
51 /***
52 * evaluate size as part of an expression on a base object.
53 *
54 * foo.bar.size
55 *
56 * @param jc the {@link JexlContext} to evaluate against.
57 * @param obj not used.
58 * @return the value of the array expression.
59 * @throws Exception on any error
60 */
61 public Object execute(Object obj, JexlContext jc) throws Exception {
62 return new Integer(ASTSizeFunction.sizeOf(obj));
63 }
64
65 }