Skip to content

Commit 4b4fcb3

Browse files
committed
0.5.0 - revert lazy evaluation for switch function
1 parent da473ea commit 4b4fcb3

File tree

3 files changed

+5
-46
lines changed

3 files changed

+5
-46
lines changed

java/json-transform/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group 'co.nlighten'
12-
version = '0.4.0'
12+
version = '0.5.0'
1313

1414
ext {
1515
gsonVersion = "2.10.1"

java/json-transform/src/main/java/co/nlighten/jsontransform/functions/TransformerFunctionSwitch.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,14 @@ public TransformerFunctionSwitch(JsonAdapter<JE, JA, JO> adapter) {
3030
public Object apply(FunctionContext<JE, JA, JO> context) {
3131
var alias = context.getAlias();
3232
var value = context.getString(null);
33-
var transformed = false;
34-
var caseMapEl = context.getJsonElement("cases", false);
35-
if (adapter.isJsonString(caseMapEl)) {
36-
caseMapEl = context.transform(caseMapEl);
37-
transformed = true;
38-
}
33+
var caseMapEl = context.getJsonElement("cases");
3934
if (!jObject.is(caseMapEl)) {
4035
logger.warn("{}.cases was not specified with an object as case map", alias);
4136
return null;
4237
}
4338
var caseMap = jObject.convert(caseMapEl);
44-
if (!jObject.has(caseMap, value)) {
45-
return context.getJsonElement("default");
46-
}
47-
var caseValue = jObject.get(caseMap, value);
48-
return transformed ? caseValue : context.transform(caseValue);
39+
return jObject.has(caseMap, value)
40+
? jObject.get(caseMap, value)
41+
: context.getJsonElement("default");
4942
}
5043
}

java/json-transform/src/test/java/co/nlighten/jsontransform/functions/TransformerFunctionSwitchTest.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -56,38 +56,4 @@ void inline() {
5656
assertTransformation(fromJson("{ \"a\": 1, \"B\": 2, \"c\": 3 }"),
5757
"$$switch($,'$$decimal:4'):C", fromJson("4"));
5858
}
59-
60-
61-
@Test
62-
void lazyEval() {
63-
var transformer = fromJson("""
64-
{
65-
"$$switch": "$",
66-
"cases": {
67-
"a": "$$switchLazyEval:1",
68-
"B": "$$switchLazyEval:2",
69-
"c": "$$switchLazyEval:3"
70-
}
71-
}
72-
""");
73-
74-
var callCount = new AtomicInteger();
75-
GsonJsonTransformer.FUNCTIONS.registerFunctions(Map.entry("switchLazyEval", new TransformerFunction<>(GsonJsonTransformer.ADAPTER) {
76-
@Override
77-
public Object apply(FunctionContext<JsonElement, JsonArray, JsonObject> context) {
78-
callCount.incrementAndGet();
79-
return context.get(null);
80-
}
81-
}));
82-
83-
callCount.set(0);
84-
assertTransformation("B", transformer, "2");
85-
// assert that "c" was called twice (check A, check B, break)
86-
Assertions.assertEquals(1, callCount.get());
87-
88-
callCount.set(0);
89-
assertTransformation("c", transformer, "3");
90-
// assert that "c" was called once (check A, break)
91-
Assertions.assertEquals(1, callCount.get());
92-
}
9359
}

0 commit comments

Comments
 (0)