This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push: new a6199de4 JEXL-380: use the more elegant map.merge() to handle promotion of pragma values; a6199de4 is described below commit a6199de400ed3b6225cb337dd5419af5861f0f33 Author: henrib <hen...@apache.org> AuthorDate: Mon Aug 22 18:50:06 2022 +0200 JEXL-380: use the more elegant map.merge() to handle promotion of pragma values; --- .../org/apache/commons/jexl3/parser/JexlParser.java | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java b/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java index f46f87e0..bae8e971 100644 --- a/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java +++ b/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java @@ -518,22 +518,18 @@ public abstract class JexlParser extends StringParser { namespaces.add(nsname); } } - Object previous = pragmas.put(key, value); - if (previous != null) { - Set<Object> values; + // merge new value into a set created on the fly if key is already mapped + pragmas.merge(key, value, (previous, newValue)->{ if (previous instanceof Set<?>) { - // reinsert previous value which was the set - values = (Set<Object>) previous; - pragmas.put(key, values); + ((Set<Object>) previous).add(newValue); + return previous; } else { - // create a new set as value - values = new LinkedHashSet<Object>(); - pragmas.put(key, values); + Set<Object> values = new LinkedHashSet<>(); values.add(previous); + values.add(newValue); + return values; } - // add the new value to the set of values - values.add(value); - } + }); } /**