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 <hen...@apache.org> 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) {