You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "William Price (Jira)" <ji...@apache.org> on 2023/11/22 21:40:00 UTC

[jira] [Created] (JEXL-416) Null-valued pragma throws NPE in 3.3

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)