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 * != or ne
23 *
24 * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
25 * @version $Id: ASTNENode.java,v 1.7 2004/08/22 01:53:27 dion Exp $
26 */
27 public class ASTNENode extends SimpleNode
28 {
29 public ASTNENode(int id)
30 {
31 super(id);
32 }
33
34 public ASTNENode(Parser p, int id)
35 {
36 super(p, id);
37 }
38
39
40 /*** Accept the visitor. **/
41 public Object jjtAccept(ParserVisitor visitor, Object data)
42 {
43 return visitor.visit(this, data);
44 }
45
46 public Object value(JexlContext pc)
47 throws Exception
48 {
49 Object left = ( (SimpleNode) jjtGetChild(0)).value(pc);
50 Object right = ( (SimpleNode) jjtGetChild(1)).value(pc);
51
52 if (left==null && right==null)
53 {
54
55
56
57
58 return Boolean.FALSE;
59 }
60 else if (left==null || right==null)
61 {
62
63
64
65 return Boolean.TRUE;
66 }
67 else if (left.getClass().equals(right.getClass()))
68 {
69 return (!left.equals(right)) ? Boolean.TRUE : Boolean.FALSE;
70 }
71 else if(left instanceof Float || left instanceof Double ||
72 right instanceof Float || right instanceof Double)
73 {
74 return (!Coercion.coerceDouble(left).equals(Coercion.coerceDouble(right)))
75 ? Boolean.TRUE : Boolean.FALSE;
76 }
77 else if ( left instanceof Number || right instanceof Number ||
78 left instanceof Character || right instanceof Character)
79 {
80 return (!Coercion.coerceLong(left).equals(Coercion.coerceLong(right)))
81 ? Boolean.TRUE : Boolean.FALSE;
82 }
83 else if (left instanceof Boolean || right instanceof Boolean)
84 {
85 return (!Coercion.coerceBoolean(left).equals(Coercion.coerceBoolean(right)))
86 ? Boolean.TRUE : Boolean.FALSE;
87 }
88 else if (left instanceof java.lang.String || right instanceof String)
89 {
90 return (!left.toString().equals(right.toString())) ? Boolean.TRUE : Boolean.FALSE;
91 }
92
93 return (!left.equals(right)) ? Boolean.TRUE : Boolean.FALSE;
94 }
95 }