From 09f88741e0b5b48837a413ac278ab4c0da2a5069 Mon Sep 17 00:00:00 2001 From: jasmith-hs Date: Wed, 6 May 2026 15:17:20 -0400 Subject: [PATCH] Add NamedParameter to JinjavaFunctions allowlist group NamedParameter needs to be allowlisted so that when a NamedParameter object is accessed through the EL resolver (e.g. from context), the return type and method validators don't reject it. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../jinjava/el/ext/AllowlistGroup.java | 5 +++- .../jinjava/el/ext/AllowlistGroupTest.java | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/hubspot/jinjava/el/ext/AllowlistGroupTest.java diff --git a/src/main/java/com/hubspot/jinjava/el/ext/AllowlistGroup.java b/src/main/java/com/hubspot/jinjava/el/ext/AllowlistGroup.java index 78d22c44b..0205f572a 100644 --- a/src/main/java/com/hubspot/jinjava/el/ext/AllowlistGroup.java +++ b/src/main/java/com/hubspot/jinjava/el/ext/AllowlistGroup.java @@ -156,7 +156,10 @@ String[] allowedReturnTypeCanonicalClassPrefixes() { } }, JinjavaFunctions { - private static final String[] ARRAY = { ZonedDateTime.class.getCanonicalName() }; + private static final String[] ARRAY = { + ZonedDateTime.class.getCanonicalName(), + NamedParameter.class.getCanonicalName(), + }; @Override String[] allowedDeclaredMethodsFromClasses() { diff --git a/src/test/java/com/hubspot/jinjava/el/ext/AllowlistGroupTest.java b/src/test/java/com/hubspot/jinjava/el/ext/AllowlistGroupTest.java new file mode 100644 index 000000000..454372f5f --- /dev/null +++ b/src/test/java/com/hubspot/jinjava/el/ext/AllowlistGroupTest.java @@ -0,0 +1,27 @@ +package com.hubspot.jinjava.el.ext; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.hubspot.jinjava.BaseJinjavaTest; +import java.util.HashMap; +import java.util.Map; +import org.junit.Test; + +public class AllowlistGroupTest extends BaseJinjavaTest { + + @Test + public void itResolvesNamedParameterNameThroughAllowlist() { + Map context = new HashMap<>(); + context.put("np", new NamedParameter("greeting", "hello")); + String result = jinjava.render("{{ np.name }}", context); + assertThat(result).isEqualTo("greeting"); + } + + @Test + public void itResolvesNamedParameterValueThroughAllowlist() { + Map context = new HashMap<>(); + context.put("np", new NamedParameter("greeting", "hello")); + String result = jinjava.render("{{ np.value }}", context); + assertThat(result).isEqualTo("hello"); + } +}