Skip to content

Commit 1059bda

Browse files
committed
Migrate LegacyOverrides to Immutable
1 parent cfe9407 commit 1059bda

1 file changed

Lines changed: 44 additions & 153 deletions

File tree

Lines changed: 44 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package 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

Comments
 (0)