1 16 17 package org.apache.taglibs.standard.lang.jstl; 18 19 import java.util.List ; 20 import java.util.Map ; 21 22 30 31 public class BinaryOperatorExpression 32 extends Expression 33 { 34 39 Expression mExpression; 40 public Expression getExpression () 41 { return mExpression; } 42 public void setExpression (Expression pExpression) 43 { mExpression = pExpression; } 44 45 48 List mOperators; 49 public List getOperators () 50 { return mOperators; } 51 public void setOperators (List pOperators) 52 { mOperators = pOperators; } 53 54 57 List mExpressions; 58 public List getExpressions () 59 { return mExpressions; } 60 public void setExpressions (List pExpressions) 61 { mExpressions = pExpressions; } 62 63 68 public BinaryOperatorExpression (Expression pExpression, 69 List pOperators, 70 List pExpressions) 71 { 72 mExpression = pExpression; 73 mOperators = pOperators; 74 mExpressions = pExpressions; 75 } 76 77 84 public String getExpressionString () 85 { 86 StringBuffer buf = new StringBuffer (); 87 buf.append ("("); 88 buf.append (mExpression.getExpressionString ()); 89 for (int i = 0; i < mOperators.size (); i++) { 90 BinaryOperator operator = (BinaryOperator) mOperators.get (i); 91 Expression expression = (Expression) mExpressions.get (i); 92 buf.append (" "); 93 buf.append (operator.getOperatorSymbol ()); 94 buf.append (" "); 95 buf.append (expression.getExpressionString ()); 96 } 97 buf.append (")"); 98 99 return buf.toString (); 100 } 101 102 107 public Object evaluate (Object pContext, 108 VariableResolver pResolver, 109 Map functions, 110 String defaultPrefix, 111 Logger pLogger) 112 throws ELException 113 { 114 Object value = mExpression.evaluate (pContext, pResolver, functions, 115 defaultPrefix, pLogger); 116 for (int i = 0; i < mOperators.size (); i++) { 117 BinaryOperator operator = (BinaryOperator) mOperators.get (i); 118 119 if (operator.shouldCoerceToBoolean ()) { 122 value = Coercions.coerceToBoolean (value, pLogger); 123 } 124 125 if (operator.shouldEvaluate (value)) { 126 Expression expression = (Expression) mExpressions.get (i); 127 Object nextValue = expression.evaluate (pContext, pResolver, 128 functions, defaultPrefix, 129 pLogger); 130 131 value = operator.apply (value, nextValue, pContext, pLogger); 132 } 133 } 134 return value; 135 } 136 137 } 139 | Popular Tags |