1 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 28 public class ASTMulNode extends SimpleNode { 29 34 public ASTMulNode(int id) { 35 super(id); 36 } 37 38 44 public ASTMulNode(Parser p, int id) { 45 super(p, id); 46 } 47 48 49 public Object jjtAccept(ParserVisitor visitor, Object data) { 50 return visitor.visit(this, data); 51 } 52 53 54 public Object value(JexlContext context) throws Exception { 55 Object left = ((SimpleNode) jjtGetChild(0)).value(context); 56 Object right = ((SimpleNode) jjtGetChild(1)).value(context); 57 58 61 if (left == null && right == null) { 62 return new Byte ((byte) 0); 63 } 64 65 69 if (left instanceof Float 70 || left instanceof Double 71 || right instanceof Float 72 || right instanceof Double 73 || (left instanceof String 74 && (((String ) left).indexOf(".") != -1 75 || ((String ) left).indexOf("e") != -1 76 || ((String ) left).indexOf("E") != -1)) 77 || (right instanceof String 78 && (((String ) right).indexOf(".") != -1 79 || ((String ) right).indexOf("e") != -1 80 || ((String ) right).indexOf("E") != -1))) { 81 Double l = Coercion.coerceDouble(left); 82 Double r = Coercion.coerceDouble(right); 83 84 return new Double (l.doubleValue() * r.doubleValue()); 85 } 86 87 90 91 Long l = Coercion.coerceLong(left); 92 Long r = Coercion.coerceLong(right); 93 94 return new Long (l.longValue() * r.longValue()); 95 } 96 97 } 98 | Popular Tags |