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
Attachments
Issue Links
- is a child of
-
VELOCITY-916 Debugging flag: track template location of references and directives at rendering time
- Closed