From 006d018be4e243a2fab03e04fa4ca84aa6441266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bhr=C3=A9in=20Brannick?= Date: Mon, 4 Oct 2021 18:09:22 +0100 Subject: [PATCH 1/3] Track Current Processed Node In The Context --- src/main/java/com/hubspot/jinjava/interpret/Context.java | 9 +++++++++ .../java/com/hubspot/jinjava/tree/ExpressionNode.java | 1 + src/main/java/com/hubspot/jinjava/tree/TagNode.java | 1 + src/main/java/com/hubspot/jinjava/tree/TextNode.java | 1 + 4 files changed, 12 insertions(+) diff --git a/src/main/java/com/hubspot/jinjava/interpret/Context.java b/src/main/java/com/hubspot/jinjava/interpret/Context.java index 945b83db8..3c0e773da 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/Context.java +++ b/src/main/java/com/hubspot/jinjava/interpret/Context.java @@ -111,6 +111,7 @@ public enum Library { private boolean unwrapRawOverride = false; private DynamicVariableResolver dynamicVariableResolver = null; private final Set metaContextVariables; // These variable names aren't tracked in eager execution + private Node currentProcessedNode; public Context() { this(null, null, null, true); @@ -732,4 +733,12 @@ public void close() { resetValueConsumer.accept(previousValue); } } + + public Node getCurrentProcessedNode() { + return this.currentProcessedNode; + } + + public void setCurrentProcessedNode(final Node currentProcessedNode) { + this.currentProcessedNode = currentProcessedNode; + } } diff --git a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java index 354a1fb1a..8694f1002 100644 --- a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java @@ -43,6 +43,7 @@ public ExpressionNode(ExpressionStrategy expressionStrategy, ExpressionToken tok @Override public OutputNode render(JinjavaInterpreter interpreter) { + interpreter.getContext().setCurrentProcessedNode(this); try { return expressionStrategy.interpretOutput(master, interpreter); } catch (DeferredValueException e) { diff --git a/src/main/java/com/hubspot/jinjava/tree/TagNode.java b/src/main/java/com/hubspot/jinjava/tree/TagNode.java index 38bcef271..def653916 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TagNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TagNode.java @@ -44,6 +44,7 @@ public TagNode(Tag tag, TagToken token, TokenScannerSymbols symbols) { @Override public OutputNode render(JinjavaInterpreter interpreter) { + interpreter.getContext().setCurrentProcessedNode(this); if ( interpreter.getContext().isValidationMode() && !tag.isRenderedInValidationMode() ) { diff --git a/src/main/java/com/hubspot/jinjava/tree/TextNode.java b/src/main/java/com/hubspot/jinjava/tree/TextNode.java index 76036d1d3..1fedfa41b 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TextNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TextNode.java @@ -32,6 +32,7 @@ public TextNode(TextToken token) { @Override public OutputNode render(JinjavaInterpreter interpreter) { + interpreter.getContext().setCurrentProcessedNode(this); return new RenderedOutputNode( interpreter.getContext().isValidationMode() ? "" : master.output() ); From 2356a60c418bb1a4d0a89e3148687469c893061d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bhr=C3=A9in=20Brannick?= Date: Mon, 4 Oct 2021 18:36:20 +0100 Subject: [PATCH 2/3] Track Current Processed Node In The Context Pr Feedback --- .../java/com/hubspot/jinjava/interpret/Context.java | 10 +++++----- .../java/com/hubspot/jinjava/tree/ExpressionNode.java | 2 +- src/main/java/com/hubspot/jinjava/tree/TagNode.java | 2 +- src/main/java/com/hubspot/jinjava/tree/TextNode.java | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hubspot/jinjava/interpret/Context.java b/src/main/java/com/hubspot/jinjava/interpret/Context.java index 3c0e773da..c4e207fb6 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/Context.java +++ b/src/main/java/com/hubspot/jinjava/interpret/Context.java @@ -111,7 +111,7 @@ public enum Library { private boolean unwrapRawOverride = false; private DynamicVariableResolver dynamicVariableResolver = null; private final Set metaContextVariables; // These variable names aren't tracked in eager execution - private Node currentProcessedNode; + private Node currentNode; public Context() { this(null, null, null, true); @@ -734,11 +734,11 @@ public void close() { } } - public Node getCurrentProcessedNode() { - return this.currentProcessedNode; + public Node getCurrentNode() { + return this.currentNode; } - public void setCurrentProcessedNode(final Node currentProcessedNode) { - this.currentProcessedNode = currentProcessedNode; + public void setCurrentNode(final Node currentNode) { + this.currentNode = currentNode; } } diff --git a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java index 8694f1002..f1d6467d1 100644 --- a/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/ExpressionNode.java @@ -43,7 +43,7 @@ public ExpressionNode(ExpressionStrategy expressionStrategy, ExpressionToken tok @Override public OutputNode render(JinjavaInterpreter interpreter) { - interpreter.getContext().setCurrentProcessedNode(this); + interpreter.getContext().setCurrentNode(this); try { return expressionStrategy.interpretOutput(master, interpreter); } catch (DeferredValueException e) { diff --git a/src/main/java/com/hubspot/jinjava/tree/TagNode.java b/src/main/java/com/hubspot/jinjava/tree/TagNode.java index def653916..d89bf6ac8 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TagNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TagNode.java @@ -44,7 +44,7 @@ public TagNode(Tag tag, TagToken token, TokenScannerSymbols symbols) { @Override public OutputNode render(JinjavaInterpreter interpreter) { - interpreter.getContext().setCurrentProcessedNode(this); + interpreter.getContext().setCurrentNode(this); if ( interpreter.getContext().isValidationMode() && !tag.isRenderedInValidationMode() ) { diff --git a/src/main/java/com/hubspot/jinjava/tree/TextNode.java b/src/main/java/com/hubspot/jinjava/tree/TextNode.java index 1fedfa41b..a67bd5cc1 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TextNode.java +++ b/src/main/java/com/hubspot/jinjava/tree/TextNode.java @@ -32,7 +32,7 @@ public TextNode(TextToken token) { @Override public OutputNode render(JinjavaInterpreter interpreter) { - interpreter.getContext().setCurrentProcessedNode(this); + interpreter.getContext().setCurrentNode(this); return new RenderedOutputNode( interpreter.getContext().isValidationMode() ? "" : master.output() ); From bf4e1912b466a5be44d7d6c329e26ec0d5db65aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bhr=C3=A9in=20Brannick?= Date: Mon, 4 Oct 2021 18:38:55 +0100 Subject: [PATCH 3/3] Track Current Processed Node In The Context Pr Feedback I --- src/main/java/com/hubspot/jinjava/interpret/Context.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hubspot/jinjava/interpret/Context.java b/src/main/java/com/hubspot/jinjava/interpret/Context.java index c4e207fb6..d038691e4 100644 --- a/src/main/java/com/hubspot/jinjava/interpret/Context.java +++ b/src/main/java/com/hubspot/jinjava/interpret/Context.java @@ -735,7 +735,7 @@ public void close() { } public Node getCurrentNode() { - return this.currentNode; + return currentNode; } public void setCurrentNode(final Node currentNode) {