From 4f6912c99f7c9ba0445087f7de6a2738b2b594ab Mon Sep 17 00:00:00 2001 From: RYOKO TOMINAGA Date: Wed, 21 Feb 2024 16:20:49 +0900 Subject: [PATCH 1/2] fix test case --- .../src/test/resources/io/digdag/core/agent/eval/basic.dig | 2 +- .../resources/io/digdag/core/agent/eval/basic_expected.dig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic.dig b/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic.dig index 44b521236d..5abe731452 100644 --- a/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic.dig +++ b/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic.dig @@ -2,5 +2,5 @@ a: ${timezone} b: ${a} c: ${a}${b} nested: - value: v + value: ${c} ref: ${nested.value} diff --git a/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic_expected.dig b/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic_expected.dig index 764f720227..04402de180 100644 --- a/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic_expected.dig +++ b/digdag-core/src/test/resources/io/digdag/core/agent/eval/basic_expected.dig @@ -2,5 +2,5 @@ a: UTC b: UTC c: UTCUTC nested: - value: v -ref: v + value: UTCUTC +ref: UTCUTC From 4b13be25cc9f677f9ef913df0e92b7cd05e6ebb7 Mon Sep 17 00:00:00 2001 From: RYOKO TOMINAGA Date: Thu, 22 Feb 2024 19:26:19 +0900 Subject: [PATCH 2/2] use params field to keep the built values --- .../digdag/core/agent/ConfigEvalEngine.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/digdag-core/src/main/java/io/digdag/core/agent/ConfigEvalEngine.java b/digdag-core/src/main/java/io/digdag/core/agent/ConfigEvalEngine.java index 820818e3f5..774bd2e740 100644 --- a/digdag-core/src/main/java/io/digdag/core/agent/ConfigEvalEngine.java +++ b/digdag-core/src/main/java/io/digdag/core/agent/ConfigEvalEngine.java @@ -187,22 +187,23 @@ else if (value.isObject()) { evaluated = evalObjectRecursive((ObjectNode) value); } else if (value.isArray()) { - evaluated = evalArrayRecursive(built, (ArrayNode) value); + evaluated = evalArrayRecursive((ArrayNode) value); } else if (value.isTextual()) { // eval using template engine String code = value.textValue(); - evaluated = evalValue(built, code); + evaluated = evalValue(code); } else { evaluated = value; } built.set(pair.getKey(), evaluated); + params.set(pair.getKey(), evaluated); } return built; } - private ArrayNode evalArrayRecursive(ObjectNode local, ArrayNode array) + private ArrayNode evalArrayRecursive(ArrayNode array) throws TemplateException { ArrayNode built = array.arrayNode(); @@ -212,12 +213,12 @@ private ArrayNode evalArrayRecursive(ObjectNode local, ArrayNode array) evaluated = evalObjectRecursive((ObjectNode) value); } else if (value.isArray()) { - evaluated = evalArrayRecursive(local, (ArrayNode) value); + evaluated = evalArrayRecursive((ArrayNode) value); } else if (value.isTextual()) { // eval using template engine String code = value.textValue(); - evaluated = evalValue(local, code); + evaluated = evalValue(code); } else { evaluated = value; @@ -227,16 +228,12 @@ else if (value.isTextual()) { return built; } - private JsonNode evalValue(ObjectNode local, String code) + private JsonNode evalValue(String code) throws TemplateException { - Config scopedParams = params.deepCopy(); - for (Map.Entry pair : ImmutableList.copyOf(local.fields())) { - scopedParams.set(pair.getKey(), pair.getValue()); - } String resultText = null; if (isInvokeTemplateRequired(code)) { - resultText = evaluator.evaluate(code, scopedParams, jsonMapper); + resultText = evaluator.evaluate(code, params, jsonMapper); } else { resultText = code;