Skip to content

Commit ccb1721

Browse files
committed
Make this a legacy override instead of feature.
1 parent f5c3682 commit ccb1721

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

src/main/java/com/hubspot/jinjava/LegacyOverrides.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class LegacyOverrides {
1717
.withParseWhitespaceControlStrictly(true)
1818
.withAllowAdjacentTextNodes(true)
1919
.withUseTrimmingForNotesAndExpressions(true)
20+
.withKeepNullableLoopValues(true)
2021
.build();
2122
private final boolean evaluateMapKeys;
2223
private final boolean iterateOverMapKeys;
@@ -27,6 +28,7 @@ public class LegacyOverrides {
2728
private final boolean parseWhitespaceControlStrictly;
2829
private final boolean allowAdjacentTextNodes;
2930
private final boolean useTrimmingForNotesAndExpressions;
31+
private final boolean keepNullableLoopValues;
3032

3133
private LegacyOverrides(Builder builder) {
3234
evaluateMapKeys = builder.evaluateMapKeys;
@@ -38,6 +40,7 @@ private LegacyOverrides(Builder builder) {
3840
parseWhitespaceControlStrictly = builder.parseWhitespaceControlStrictly;
3941
allowAdjacentTextNodes = builder.allowAdjacentTextNodes;
4042
useTrimmingForNotesAndExpressions = builder.useTrimmingForNotesAndExpressions;
43+
keepNullableLoopValues = builder.keepNullableLoopValues;
4144
}
4245

4346
public static Builder newBuilder() {
@@ -80,6 +83,10 @@ public boolean isUseTrimmingForNotesAndExpressions() {
8083
return useTrimmingForNotesAndExpressions;
8184
}
8285

86+
public boolean isKeepNullableLoopValues() {
87+
return keepNullableLoopValues;
88+
}
89+
8390
public static class Builder {
8491
private boolean evaluateMapKeys = false;
8592
private boolean iterateOverMapKeys = false;
@@ -90,6 +97,7 @@ public static class Builder {
9097
private boolean parseWhitespaceControlStrictly = false;
9198
private boolean allowAdjacentTextNodes = false;
9299
private boolean useTrimmingForNotesAndExpressions = false;
100+
private boolean keepNullableLoopValues = false;
93101

94102
private Builder() {}
95103

@@ -168,5 +176,10 @@ public Builder withUseTrimmingForNotesAndExpressions(
168176
this.useTrimmingForNotesAndExpressions = useTrimmingForNotesAndExpressions;
169177
return this;
170178
}
179+
180+
public Builder withKeepNullableLoopValues(boolean keepNullableLoopValues) {
181+
this.keepNullableLoopValues = keepNullableLoopValues;
182+
return this;
183+
}
171184
}
172185
}

src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,11 @@ public String renderForCollection(
201201

202202
// set item variables
203203
if (loopVars.size() == 1) {
204-
if (val == null && interpreter.getContext().get(loopVars.get(0)) != null) {
204+
if (
205+
val == null &&
206+
interpreter.getContext().get(loopVars.get(0)) != null &&
207+
interpreter.getConfig().getLegacyOverrides().isKeepNullableLoopValues()
208+
) {
205209
interpreter.getContext().put(loopVars.get(0), NullValue.INSTANCE);
206210
} else {
207211
interpreter.getContext().put(loopVars.get(0), val);

src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ public void baseSetup() {
1212
JinjavaConfig
1313
.newBuilder()
1414
.withLegacyOverrides(
15-
LegacyOverrides.newBuilder().withUsePyishObjectMapper(true).build()
15+
LegacyOverrides
16+
.newBuilder()
17+
.withUsePyishObjectMapper(true)
18+
.withKeepNullableLoopValues(true)
19+
.build()
1620
)
1721
.build()
1822
);

src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerForTagTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ public void eagerSetup() {
3232
.withMaxOutputSize(MAX_OUTPUT_SIZE)
3333
.withExecutionMode(EagerExecutionMode.instance())
3434
.withLegacyOverrides(
35-
LegacyOverrides.newBuilder().withUsePyishObjectMapper(true).build()
35+
LegacyOverrides
36+
.newBuilder()
37+
.withUsePyishObjectMapper(true)
38+
.withKeepNullableLoopValues(true)
39+
.build()
3640
)
3741
.build()
3842
);

0 commit comments

Comments
 (0)