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) {

Reply via email to