This is an automated email from the ASF dual-hosted git repository.
henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push:
new 4ffa7ac JEXL-305: TemplateDebugger must be able to behave as (script)
Debugger (its superclass) when there are no template expressions Task #JEXL-305
- Script debugger produces incorrect syntax
4ffa7ac is described below
commit 4ffa7acc032f58cdf484f4ceae1283111cf1c3b5
Author: henrib <[email protected]>
AuthorDate: Fri Jun 14 17:00:39 2019 +0200
JEXL-305: TemplateDebugger must be able to behave as (script) Debugger (its
superclass) when there are no template expressions
Task #JEXL-305 - Script debugger produces incorrect syntax
---
.../commons/jexl3/internal/TemplateDebugger.java | 9 +++++++--
src/test/java/org/apache/commons/jexl3/JXLTTest.java | 18 ++++++++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git
a/src/main/java/org/apache/commons/jexl3/internal/TemplateDebugger.java
b/src/main/java/org/apache/commons/jexl3/internal/TemplateDebugger.java
index 6ff3d68..d5791f9 100644
--- a/src/main/java/org/apache/commons/jexl3/internal/TemplateDebugger.java
+++ b/src/main/java/org/apache/commons/jexl3/internal/TemplateDebugger.java
@@ -104,9 +104,9 @@ public class TemplateDebugger extends Debugger {
@Override
protected Object visit(ASTBlock node, Object data) {
- // if not really a template, use super impl
+ // if not really a template, must use super impl
if (exprs == null) {
- return super.visit(node, data);
+ return super.visit((ASTBlock) node, data);
}
// open the block
builder.append('{');
@@ -138,8 +138,13 @@ public class TemplateDebugger extends Debugger {
@Override
protected Object acceptStatement(JexlNode child, Object data) {
+ // if not really a template, must use super impl
+ if (exprs == null) {
+ return super.acceptStatement(child, data);
+ }
TemplateExpression te = getPrintStatement(child);
if (te != null) {
+ // if statement is a jexl:print(...), may need to prepend '\n'
newJxltLine();
return visit(te, data);
} else {
diff --git a/src/test/java/org/apache/commons/jexl3/JXLTTest.java
b/src/test/java/org/apache/commons/jexl3/JXLTTest.java
index 1ae1dbf..664a088 100644
--- a/src/test/java/org/apache/commons/jexl3/JXLTTest.java
+++ b/src/test/java/org/apache/commons/jexl3/JXLTTest.java
@@ -18,6 +18,8 @@ package org.apache.commons.jexl3;
import org.apache.commons.jexl3.internal.TemplateDebugger;
import org.apache.commons.jexl3.internal.TemplateScript;
+import org.apache.commons.jexl3.internal.Debugger;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -548,6 +550,22 @@ public class JXLTTest extends JexlTestCase {
Assert.assertNotNull(refactored);
Assert.assertEquals(test42, refactored);
}
+
+ @Test
+ public void testInheritedDebugger() throws Exception {
+ String src = "if ($A) { $B + 1; } else { $C - 2 }";
+ JexlEngine jexl = JXLT.getEngine();
+ JexlScript script = jexl.createScript(src);
+
+ Debugger sd = new Debugger();
+ String rscript = sd.debug(script)? sd.toString() : null;
+ Assert.assertNotNull(rscript);
+
+ TemplateDebugger td = new TemplateDebugger();
+ String refactored = td.debug(script)? td.toString() : null;
+ Assert.assertNotNull(refactored);
+ Assert.assertEquals(refactored, rscript);
+ }
public static class FrobozWriter extends PrintWriter {
public FrobozWriter(Writer w) {