diff options
Diffstat (limited to 'velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java')
-rw-r--r-- | velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java index 82cf3b4e..0425ff45 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java @@ -139,7 +139,7 @@ public class ASTDirective extends SimpleNode throw new VelocityException( "Couldn't initialize directive of class " + parser.getDirective(directiveName).getClass().getName(), - e); + e, rsvc.getLogContext().getStackTrace()); } t = getFirstToken(); @@ -165,6 +165,7 @@ public class ASTDirective extends SimpleNode { throw new TemplateInitException(die.getMessage(), (ParseException) die.getCause(), + rsvc.getLogContext().getStackTrace(), die.getTemplateName(), die.getColumnNumber() + getColumn(), die.getLineNumber() + getLine()); @@ -201,6 +202,7 @@ public class ASTDirective extends SimpleNode { throw new TemplateInitException(die.getMessage(), (ParseException) die.getCause(), + rsvc.getLogContext().getStackTrace(), die.getTemplateName(), die.getColumnNumber() + getColumn(), die.getLineNumber() + getLine()); @@ -346,4 +348,22 @@ public class ASTDirective extends SimpleNode + directiveName + "]"; } + /** + * Returns the string "#<i>directive_name</i>(...)". Arguments literals are not rendered. This method is only + * used for displaying the VTL stacktrace when a rendering error is encountered when runtime.log.track_location is true. + * @return + */ + @Override + public String literal() + { + if (literal != null) + { + return literal; + } + StringBuilder builder = new StringBuilder(); + builder.append('#').append(getDirectiveName()).append("(...)"); + + return literal = builder.toString(); + } + } |