1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl.parser;
18
19 import org.apache.commons.jexl.JexlContext;
20 import org.apache.commons.jexl.util.Coercion;
21
22 /***
23 * Bitwise Or. Syntax: a | b Result is a Long
24 *
25 * @author Dion Gillard
26 * @since 1.1
27 */
28
29 public class ASTBitwiseOrNode extends SimpleNode {
30 /***
31 * Create the node given an id.
32 *
33 * @param id node id.
34 */
35 public ASTBitwiseOrNode(int id) {
36 super(id);
37 }
38
39 /***
40 * Create a node with the given parser and id.
41 *
42 * @param p a parser.
43 * @param id node id.
44 */
45 public ASTBitwiseOrNode(Parser p, int id) {
46 super(p, id);
47 }
48
49 /*** {@inheritDoc} */
50 public Object jjtAccept(ParserVisitor visitor, Object data) {
51 return visitor.visit(this, data);
52 }
53
54 /*** {@inheritDoc} */
55 public Object value(JexlContext context) throws Exception {
56 Object left = ((SimpleNode) jjtGetChild(0)).value(context);
57 Object right = ((SimpleNode) jjtGetChild(1)).value(context);
58
59 Long l = left == null ? new Long(0) : Coercion.coerceLong(left);
60 Long r = right == null ? new Long(0) : Coercion.coerceLong(right);
61 return new Long(l.longValue() | r.longValue());
62 }
63 }