diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java index 3bbc2fd1f..844fda665 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/AbstractFilter.java @@ -15,6 +15,7 @@ **********************************************************************/ package com.hubspot.jinjava.lib.filter; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; import com.hubspot.jinjava.doc.annotations.JinjavaDoc; import com.hubspot.jinjava.doc.annotations.JinjavaParam; @@ -208,6 +209,12 @@ public String getIndexedArgumentName(int position) { public Map initNamedArguments() { JinjavaDoc jinjavaDoc = this.getClass().getAnnotation(JinjavaDoc.class); + + if (jinjavaDoc != null && !Strings.isNullOrEmpty(jinjavaDoc.aliasOf())) { + // aliased functions extend the base function. We need to get the annotations on the base + jinjavaDoc = this.getClass().getSuperclass().getAnnotation(JinjavaDoc.class); + } + if (jinjavaDoc != null) { ImmutableMap.Builder namedArgsBuilder = ImmutableMap.builder(); diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java new file mode 100644 index 000000000..5e95309ce --- /dev/null +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DAliasedDefaultFilterTest.java @@ -0,0 +1,18 @@ +package com.hubspot.jinjava.lib.filter; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.hubspot.jinjava.BaseJinjavaTest; +import java.util.HashMap; +import org.junit.Test; + +public class DAliasedDefaultFilterTest extends BaseJinjavaTest { + + @Test + public void itSetsDefaultStringValues() { + assertThat( + jinjava.render("{% set d=d |d(\"some random value\") %}{{ d }}", new HashMap<>()) + ) + .isEqualTo("some random value"); + } +}