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 import org.apache.commons.jexl.util.Coercion;
20
21 /***
22 * Not : 'not' or '!'.
23 *
24 * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
25 * @version $Id: ASTNotNode.java 398270 2006-04-30 03:02:58Z dion $
26 */
27
28 public class ASTNotNode extends SimpleNode {
29 /***
30 * Create the node given an id.
31 *
32 * @param id node id.
33 */
34 public ASTNotNode(int id) {
35 super(id);
36 }
37
38 /***
39 * Create a node with the given parser and id.
40 *
41 * @param p a parser.
42 * @param id node id.
43 */
44 public ASTNotNode(Parser p, int id) {
45 super(p, id);
46 }
47
48 /*** {@inheritDoc} */
49 public Object jjtAccept(ParserVisitor visitor, Object data) {
50 return visitor.visit(this, data);
51 }
52
53 /*** {@inheritDoc} */
54 public Object value(JexlContext jc) throws Exception {
55 Object val = ((SimpleNode) jjtGetChild(0)).value(jc);
56
57
58
59
60
61 Boolean b = Coercion.coerceBoolean(val);
62
63 if (b != null) {
64 return b.booleanValue() ? Boolean.FALSE : Boolean.TRUE;
65 }
66
67 throw new Exception("expression not boolean valued");
68 }
69
70 }