aboutsummaryrefslogtreecommitdiff
path: root/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTDirective.java
diff options
context:
space:
mode:
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.java22
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();
+ }
+
}