From db63f7dd4a20f03019e9f63864342643cc6d8b46 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 5 Dec 2018 14:13:24 +0100 Subject: [PATCH] StandardEvaluationContext.setVariable leniently ignores null name Issue: SPR-17565 --- .../spel/support/StandardEvaluationContext.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java index de0a8c781cc..590120e5033 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java @@ -229,12 +229,17 @@ public class StandardEvaluationContext implements EvaluationContext { } @Override - public void setVariable(String name, @Nullable Object value) { - if (value != null) { - this.variables.put(name, value); - } - else { - this.variables.remove(name); + public void setVariable(@Nullable String name, @Nullable Object value) { + // For backwards compatibility, we ignore null names here... + // And since ConcurrentHashMap cannot store null values, we simply take null + // as a remove from the Map (with the same result from lookupVariable below). + if (name != null) { + if (value != null) { + this.variables.put(name, value); + } + else { + this.variables.remove(name); + } } }