William Price created JEXL-416:
--
Summary: Null-valued pragma throws NPE in 3.3
Key: JEXL-416
URL: https://issues.apache.org/jira/browse/JEXL-416
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.3
Environment: JEXL 3.3
Java 21 (21+35) Red Hat, Inc.
Linux 5.15.133.1-microsoft-standard-WSL2 (amd64)
Reporter: William Price
Version 3.2.1 seemed to allow {{null}} as a value for pragmas, but version 3.3
throws NPE. I'm not necessarily advocating for null pragma values, but it's a
behavior regression due to the use of {{{}TreeMap::merge{}}}. Even if
disallowing nulls was desired, it should be a JexlException not NPE.
Passes on 3.2.1:
{code:java}
var script = engine.createScript("#pragma myNull null\n");
var pragmas = script.getPragmas();
assertTrue(pragmas.containsKey("myNull"), "pragma key present?");
assertNull(pragmas.get("myNull"), "expected null value"); {code}
Behavior on 3.3:
{code:java}
assertThrows(
NullPointerException.class,
() -> engine.createScript("#pragma myNull null\n"));
{code}
{noformat}
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at java.base/java.util.TreeMap.merge(TreeMap.java:743)
at
org.apache.commons.jexl3.parser.JexlParser.declarePragma(JexlParser.java:557)
at org.apache.commons.jexl3.parser.Parser.Pragma(Parser.java:1246)
at org.apache.commons.jexl3.parser.Parser.JexlScript(Parser.java:63)
at org.apache.commons.jexl3.parser.Parser.parse(Parser.java:25)
at org.apache.commons.jexl3.internal.Engine.parse(Engine.java:1009)
at
org.apache.commons.jexl3.internal.Engine.createScript(Engine.java:617)
at org.apache.commons.jexl3.internal.Engine.createScript(Engine.java:69)
at org.apache.commons.jexl3.JexlEngine.createScript(JexlEngine.java:375)
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)