fixed to not throw classcastexception if condition doesnt evaluate to boolean
This commit is contained in:
		
							parent
							
								
									144325eb06
								
							
						
					
					
						commit
						e2ffac9a7c
					
				|  | @ -17,8 +17,8 @@ package org.springframework.expression.spel.ast; | |||
| 
 | ||||
| import org.antlr.runtime.Token; | ||||
| import org.springframework.expression.EvaluationException; | ||||
| import org.springframework.expression.spel.SpelException; | ||||
| import org.springframework.expression.spel.ExpressionState; | ||||
| import org.springframework.expression.spel.SpelException; | ||||
| 
 | ||||
| /** | ||||
|  * Represents a ternary expression, for example: "someCheck()?true:false". | ||||
|  | @ -31,18 +31,25 @@ public class Ternary extends SpelNode { | |||
| 		super(payload); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Evaluate the condition and if true evaluate the first alternative, otherwise evaluate the second alternative. | ||||
| 	 *  | ||||
| 	 * @param state the expression state | ||||
| 	 * @throws EvaluationException if the condition does not evaluate correctly to a boolean or there is a problem | ||||
| 	 * executing the chosen alternative | ||||
| 	 */ | ||||
| 	@Override | ||||
| 	public Object getValue(ExpressionState state) throws EvaluationException { | ||||
| 		Object condition = getChild(0).getValue(state); | ||||
| 		Boolean b = (Boolean) getChild(0).getValue(state, Boolean.class); | ||||
| 		try { | ||||
| 			boolean b = state.toBoolean(condition); | ||||
| 			if (b) | ||||
| 			if (b) { | ||||
| 				return getChild(1).getValue(state); | ||||
| 			else | ||||
| 			} else { | ||||
| 				return getChild(2).getValue(state); | ||||
| 		} catch (SpelException see) { | ||||
| 			see.setPosition(getChild(0).getCharPositionInLine()); | ||||
| 			throw see; | ||||
| 			} | ||||
| 		} catch (SpelException ex) { | ||||
| 			ex.setPosition(getChild(0).getCharPositionInLine()); | ||||
| 			throw ex; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -52,7 +59,6 @@ public class Ternary extends SpelNode { | |||
| 				.append(" : ").append(getChild(2).toStringAST()).toString(); | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO 3 should this say TRUE if the left or the right are writable??? | ||||
| 	@Override | ||||
| 	public boolean isWritable(ExpressionState expressionState) throws SpelException { | ||||
| 		return false; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue