Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.7
    • Fix Version/s: 1.7.x
    • Component/s: Engine
    • Labels:

      Description

      Hey guys I made a patch to Velocity 1.7 to enable you to print out velocity stack traces. If you dump a stack trace in a Java function that was called from a velocity file, you usually see a bunch of calls to velocity parser functions like this in the Java stack trace:

      ...
      at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:209)
      at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
      at org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:530)
      at org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:62)
      at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:85)
      at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
      at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
      at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
      at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:216)
      at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:312)
      at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:230)
      at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
      at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
      at org.apache.velocity.runtime.parser.node.ASTStringLiteral.value(ASTStringLiteral.java:330)
      ...

      The velocity stack trace created by this patches is much more informative:

      Velocity Stack Trace: Invocation of method 'getAvatarUrl' in class Member
      at avatarUrl called at common/Macros.vm[line 426, column 29]
      at simpleAvatarUrl called at common/Macros.vm[line 487, column 22]
      at drawSimpleImage called at common/Macros.vm[line 487, column 3]
      at simpleMemberAvatar called at site/photo_pane.vm[line 153, column 32]
      at displayAvatarImage called at site/photo_pane.vm[line 162, column 3]

      This sort of stack trace is very useful when debugging code and trying to figure out which sequence of macros called into the currently executing Java code that dumped out the Java stack trace. Please consider adding something like this to a future release of Velocity - it would be very useful!

      Thanks,
      Luke

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              lowerlogic Luke Perkins
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:

                Time Tracking

                Estimated:
                Original Estimate - 2h
                2h
                Remaining:
                Remaining Estimate - 2h
                2h
                Logged:
                Time Spent - Not Specified
                Not Specified