11package com .hubspot .jinjava ;
22
3- /**
4- * This class allows Jinjava to be configured to override legacy behaviour.
5- * LegacyOverrides.NONE signifies that none of the legacy functionality will be overridden.
6- * LegacyOverrides.ALL signifies that all new functionality will be used; avoid legacy "bugs".
7- */
8- public class LegacyOverrides {
9-
10- public static final LegacyOverrides NONE = new LegacyOverrides .Builder ().build ();
11- public static final LegacyOverrides THREE_POINT_0 = new LegacyOverrides .Builder ()
3+ import com .hubspot .immutable .collection .encoding .ImmutableListEncodingEnabled ;
4+ import com .hubspot .immutable .collection .encoding .ImmutableMapEncodingEnabled ;
5+ import com .hubspot .immutable .collection .encoding .ImmutableSetEncodingEnabled ;
6+ import org .immutables .value .Value ;
7+
8+ @ Value .Immutable (singleton = true )
9+ @ Value .Style (init = "with*" , get = { "is*" , "get*" })
10+ @ ImmutableSetEncodingEnabled
11+ @ ImmutableListEncodingEnabled
12+ @ ImmutableMapEncodingEnabled
13+ public interface LegacyOverrides {
14+ LegacyOverrides NONE = new Builder ().build ();
15+ LegacyOverrides THREE_POINT_0 = new Builder ()
1216 .withEvaluateMapKeys (true )
1317 .withIterateOverMapKeys (true )
1418 .withUsePyishObjectMapper (true )
@@ -19,7 +23,7 @@ public class LegacyOverrides {
1923 .withUseTrimmingForNotesAndExpressions (true )
2024 .withKeepNullableLoopValues (true )
2125 .build ();
22- public static final LegacyOverrides ALL = new LegacyOverrides . Builder ()
26+ LegacyOverrides ALL = new Builder ()
2327 .withEvaluateMapKeys (true )
2428 .withIterateOverMapKeys (true )
2529 .withUsePyishObjectMapper (true )
@@ -30,168 +34,55 @@ public class LegacyOverrides {
3034 .withUseTrimmingForNotesAndExpressions (true )
3135 .withKeepNullableLoopValues (true )
3236 .build ();
33- private final boolean evaluateMapKeys ;
34- private final boolean iterateOverMapKeys ;
35- private final boolean usePyishObjectMapper ;
36- private final boolean useSnakeCasePropertyNaming ;
37- private final boolean whitespaceRequiredWithinTokens ;
38- private final boolean useNaturalOperatorPrecedence ;
39- private final boolean parseWhitespaceControlStrictly ;
40- private final boolean allowAdjacentTextNodes ;
41- private final boolean useTrimmingForNotesAndExpressions ;
42- private final boolean keepNullableLoopValues ;
43-
44- private LegacyOverrides (Builder builder ) {
45- evaluateMapKeys = builder .evaluateMapKeys ;
46- iterateOverMapKeys = builder .iterateOverMapKeys ;
47- usePyishObjectMapper = builder .usePyishObjectMapper ;
48- useSnakeCasePropertyNaming = builder .useSnakeCasePropertyNaming ;
49- whitespaceRequiredWithinTokens = builder .whitespaceRequiredWithinTokens ;
50- useNaturalOperatorPrecedence = builder .useNaturalOperatorPrecedence ;
51- parseWhitespaceControlStrictly = builder .parseWhitespaceControlStrictly ;
52- allowAdjacentTextNodes = builder .allowAdjacentTextNodes ;
53- useTrimmingForNotesAndExpressions = builder .useTrimmingForNotesAndExpressions ;
54- keepNullableLoopValues = builder .keepNullableLoopValues ;
55- }
56-
57- public static Builder newBuilder () {
58- return new Builder ();
59- }
6037
61- public boolean isEvaluateMapKeys () {
62- return evaluateMapKeys ;
38+ @ Value .Default
39+ default boolean isEvaluateMapKeys () {
40+ return false ;
6341 }
6442
65- public boolean isIterateOverMapKeys () {
66- return iterateOverMapKeys ;
43+ @ Value .Default
44+ default boolean isIterateOverMapKeys () {
45+ return false ;
6746 }
6847
69- public boolean isUsePyishObjectMapper () {
70- return usePyishObjectMapper ;
48+ @ Value .Default
49+ default boolean isUsePyishObjectMapper () {
50+ return false ;
7151 }
7252
73- public boolean isUseSnakeCasePropertyNaming () {
74- return useSnakeCasePropertyNaming ;
53+ @ Value .Default
54+ default boolean isUseSnakeCasePropertyNaming () {
55+ return false ;
7556 }
7657
77- public boolean isWhitespaceRequiredWithinTokens () {
78- return whitespaceRequiredWithinTokens ;
58+ @ Value .Default
59+ default boolean isUseNaturalOperatorPrecedence () {
60+ return false ;
7961 }
8062
81- public boolean isUseNaturalOperatorPrecedence () {
82- return useNaturalOperatorPrecedence ;
63+ @ Value .Default
64+ default boolean isParseWhitespaceControlStrictly () {
65+ return false ;
8366 }
8467
85- public boolean isParseWhitespaceControlStrictly () {
86- return parseWhitespaceControlStrictly ;
68+ @ Value .Default
69+ default boolean isAllowAdjacentTextNodes () {
70+ return false ;
8771 }
8872
89- public boolean isAllowAdjacentTextNodes () {
90- return allowAdjacentTextNodes ;
73+ @ Value .Default
74+ default boolean isUseTrimmingForNotesAndExpressions () {
75+ return false ;
9176 }
9277
93- public boolean isUseTrimmingForNotesAndExpressions () {
94- return useTrimmingForNotesAndExpressions ;
78+ @ Value .Default
79+ default boolean isKeepNullableLoopValues () {
80+ return false ;
9581 }
9682
97- public boolean isKeepNullableLoopValues () {
98- return keepNullableLoopValues ;
99- }
100-
101- public static class Builder {
102-
103- private boolean evaluateMapKeys = false ;
104- private boolean iterateOverMapKeys = false ;
105- private boolean usePyishObjectMapper = false ;
106- private boolean useSnakeCasePropertyNaming = false ;
107- private boolean whitespaceRequiredWithinTokens = false ;
108- private boolean useNaturalOperatorPrecedence = false ;
109- private boolean parseWhitespaceControlStrictly = false ;
110- private boolean allowAdjacentTextNodes = false ;
111- private boolean useTrimmingForNotesAndExpressions = false ;
112- private boolean keepNullableLoopValues = false ;
113-
114- private Builder () {}
115-
116- public LegacyOverrides build () {
117- return new LegacyOverrides (this );
118- }
83+ class Builder extends ImmutableLegacyOverrides .Builder {}
11984
120- public static Builder from (LegacyOverrides legacyOverrides ) {
121- return new Builder ()
122- .withEvaluateMapKeys (legacyOverrides .evaluateMapKeys )
123- .withIterateOverMapKeys (legacyOverrides .iterateOverMapKeys )
124- .withUsePyishObjectMapper (legacyOverrides .usePyishObjectMapper )
125- .withUseSnakeCasePropertyNaming (legacyOverrides .useSnakeCasePropertyNaming )
126- .withWhitespaceRequiredWithinTokens (
127- legacyOverrides .whitespaceRequiredWithinTokens
128- )
129- .withUseNaturalOperatorPrecedence (legacyOverrides .useNaturalOperatorPrecedence )
130- .withParseWhitespaceControlStrictly (
131- legacyOverrides .parseWhitespaceControlStrictly
132- )
133- .withAllowAdjacentTextNodes (legacyOverrides .allowAdjacentTextNodes )
134- .withUseTrimmingForNotesAndExpressions (
135- legacyOverrides .useTrimmingForNotesAndExpressions
136- );
137- }
138-
139- public Builder withEvaluateMapKeys (boolean evaluateMapKeys ) {
140- this .evaluateMapKeys = evaluateMapKeys ;
141- return this ;
142- }
143-
144- public Builder withIterateOverMapKeys (boolean iterateOverMapKeys ) {
145- this .iterateOverMapKeys = iterateOverMapKeys ;
146- return this ;
147- }
148-
149- public Builder withUsePyishObjectMapper (boolean usePyishObjectMapper ) {
150- this .usePyishObjectMapper = usePyishObjectMapper ;
151- return this ;
152- }
153-
154- public Builder withUseSnakeCasePropertyNaming (boolean useSnakeCasePropertyNaming ) {
155- this .useSnakeCasePropertyNaming = useSnakeCasePropertyNaming ;
156- return this ;
157- }
158-
159- public Builder withWhitespaceRequiredWithinTokens (
160- boolean whitespaceRequiredWithinTokens
161- ) {
162- this .whitespaceRequiredWithinTokens = whitespaceRequiredWithinTokens ;
163- return this ;
164- }
165-
166- public Builder withUseNaturalOperatorPrecedence (
167- boolean useNaturalOperatorPrecedence
168- ) {
169- this .useNaturalOperatorPrecedence = useNaturalOperatorPrecedence ;
170- return this ;
171- }
172-
173- public Builder withParseWhitespaceControlStrictly (
174- boolean parseWhitespaceControlStrictly
175- ) {
176- this .parseWhitespaceControlStrictly = parseWhitespaceControlStrictly ;
177- return this ;
178- }
179-
180- public Builder withAllowAdjacentTextNodes (boolean allowAdjacentTextNodes ) {
181- this .allowAdjacentTextNodes = allowAdjacentTextNodes ;
182- return this ;
183- }
184-
185- public Builder withUseTrimmingForNotesAndExpressions (
186- boolean useTrimmingForNotesAndExpressions
187- ) {
188- this .useTrimmingForNotesAndExpressions = useTrimmingForNotesAndExpressions ;
189- return this ;
190- }
191-
192- public Builder withKeepNullableLoopValues (boolean keepNullableLoopValues ) {
193- this .keepNullableLoopValues = keepNullableLoopValues ;
194- return this ;
195- }
85+ static Builder newBuilder () {
86+ return new Builder ();
19687 }
19788}
0 commit comments