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);
-        }
+        });
     }
 
     /**

Reply via email to