in velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/MacroParseException.java [127:195]
public String getMessage()
{
if (!specialConstructor)
{
StringBuilder sb = new StringBuilder(super.getMessage());
appendTemplateInfo(sb);
return sb.toString();
}
int maxSize = 0;
StringBuilder expected = new StringBuilder();
for (int[] expectedTokenSequence : expectedTokenSequences)
{
if (maxSize < expectedTokenSequence.length)
{
maxSize = expectedTokenSequence.length;
}
for (int i : expectedTokenSequence)
{
expected.append(tokenImage[i]).append(" ");
}
if (expectedTokenSequence[expectedTokenSequence.length - 1] != 0)
{
expected.append("...");
}
expected.append(eol).append(" ");
}
StringBuilder retval = new StringBuilder("Encountered \"");
Token tok = currentToken.next;
for (int i = 0; i < maxSize; i++)
{
if (i != 0)
{
retval.append(" ");
}
if (tok.kind == 0)
{
retval.append(tokenImage[0]);
break;
}
retval.append(add_escapes(tok.image));
tok = tok.next;
}
retval.append("\"");
appendTemplateInfo(retval);
if (expectedTokenSequences.length == 1)
{
retval.append("Was expecting:").append(eol).append(" ");
}
else
{
retval.append("Was expecting one of:").append(eol).append(" ");
}
// avoid JDK 1.3 StringBuffer.append(Object o) vs 1.4 StringBuffer.append(StringBuffer sb) gotcha.
retval.append(expected.toString());
return retval.toString();
}