private static Locale getLocale(JinjavaInterpreter interpreter, FormattedDate d) { if (!StringUtils.isBlank(d.getLanguage())) { try { return LocaleUtils.toLocale(d.getLanguage()); } catch (IllegalArgumentException e) { interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.SYNTAX_ERROR, ErrorItem.OTHER, e.getMessage(), null, interpreter.getLineNumber(), -1, null, BasicTemplateErrorCategory.UNKNOWN_LOCALE, ImmutableMap.of("date", d.getDate().toString(), "exception", e.getMessage(), "lineNumber", String.valueOf(interpreter.getLineNumber())))); } } return Locale.US; }
private static DateTimeFormatter getFormatter(JinjavaInterpreter interpreter, FormattedDate d) { if (!StringUtils.isBlank(d.getFormat())) { try { return StrftimeFormatter.formatter(d.getFormat(), interpreter.getConfig().getLocale()); } catch (IllegalArgumentException e) { interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.SYNTAX_ERROR, ErrorItem.OTHER, e.getMessage(), null, interpreter.getLineNumber(), -1, null, BasicTemplateErrorCategory.UNKNOWN_DATE, ImmutableMap.of("date", d.getDate().toString(), "exception", e.getMessage(), "lineNumber", String.valueOf(interpreter.getLineNumber())))); } } return DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); }
interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.UNKNOWN, ErrorItem.PROPERTY, e.getMessage(), "", interpreter.getLineNumber(), interpreter.getPosition(), e, BasicTemplateErrorCategory.UNKNOWN, ImmutableMap.of("exception", e.getMessage()))); } catch (TreeBuilderException e) { interpreter.addError(TemplateError.fromException(new TemplateSyntaxException(expression.substring(e.getPosition() - EXPRESSION_START_TOKEN.length()), "Error parsing '" + expression + "': " + errorMessage, interpreter.getLineNumber(), position, e))); } catch (ELException e) { interpreter.addError(TemplateError.fromException(new TemplateSyntaxException(expression, e.getMessage(), interpreter.getLineNumber(), e))); } catch (DisabledException e) { interpreter.addError(new TemplateError(ErrorType.FATAL, ErrorReason.DISABLED, ErrorItem.FUNCTION, e.getMessage(), expression, interpreter.getLineNumber(), interpreter.getPosition(), e)); } catch (UnknownTokenException e) { interpreter.addError(TemplateError.fromException(new InterpretException( String.format("Error resolving expression [%s]: " + getRootCauseMessage(e), expression), e, interpreter.getLineNumber(), interpreter.getPosition())));
interpreter.getContext().getImportPathStack().push(path, tagNode.getLineNumber(), tagNode.getStartPosition()); } catch (ImportTagCycleException e) { interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.EXCEPTION, ErrorItem.TAG, "Import cycle detected for path: '" + path + "'", null, tagNode.getLineNumber(), tagNode.getStartPosition(), e, BasicTemplateErrorCategory.IMPORT_CYCLE_DETECTED, ImmutableMap.of("path", path)));
public Node buildTree() { Node root = new RootNode(); parent = root; while (scanner.hasNext()) { Node node = nextNode(); if (node != null) { parent.getChildren().add(node); } } if (parent != root) { interpreter.addError(TemplateError.fromException( new MissingEndTagException(((TagNode) parent).getEndName(), parent.getMaster().getImage(), parent.getLineNumber(), parent.getStartPosition()))); } return root; }
interpreter.getContext().pushFromStack(templateFile, tagNode.getLineNumber(), tagNode.getStartPosition()); } catch (FromTagCycleException e) { interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.EXCEPTION, ErrorItem.TAG, "From cycle detected for path: '" + templateFile + "'", null, tagNode.getLineNumber(), tagNode .getStartPosition(), e,
tag = interpreter.getContext().getTag(tagToken.getTagName()); if (tag == null) { interpreter.addError(TemplateError.fromException(new UnknownTagException(tagToken))); return null; interpreter.addError(new TemplateError(ErrorType.FATAL, ErrorReason.DISABLED, ErrorItem.TAG, e.getMessage(), tagToken.getTagName(), interpreter.getLineNumber(), tagToken.getStartPosition(), e)); return null;
/** * @return null if EOF or error */ private Node nextNode() { Token token = scanner.next(); switch (token.getType()) { case TOKEN_FIXED: return text((TextToken) token); case TOKEN_EXPR_START: return expression((ExpressionToken) token); case TOKEN_TAG: return tag((TagToken) token); case TOKEN_NOTE: break; default: interpreter.addError(TemplateError.fromException(new UnexpectedTokenException(token.getImage(), token.getLineNumber(), token.getStartPosition()))); } return null; }
interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.OTHER, ErrorItem.FILTER,
private void endTag(Tag tag, TagToken tagToken) { final Node lastSibling = getLastSibling(); if (parent instanceof TagNode && tagToken.isLeftTrim() && lastSibling != null && lastSibling instanceof TextNode) { lastSibling.getMaster().setRightTrim(true); } if (parent.getMaster() != null) { // root node parent.getMaster().setRightTrimAfterEnd(tagToken.isRightTrim()); } while (!(parent instanceof RootNode)) { TagNode parentTag = (TagNode) parent; parent = parent.getParent(); if (parentTag.getEndName().equals(tag.getEndTagName())) { break; } else { interpreter.addError(TemplateError.fromException( new TemplateSyntaxException(tagToken.getImage(), "Mismatched end tag, expected: " + parentTag.getEndName(), tagToken.getLineNumber(), tagToken.getStartPosition()))); } } } }
if (context.doesRenderStackContain(renderStr)) { addError(new TemplateError(ErrorType.WARNING, ErrorReason.EXCEPTION, ErrorItem.TAG, "Rendering cycle detected: '" + renderStr + "'", null, getLineNumber(), node.getStartPosition(), null, BasicTemplateErrorCategory.IMPORT_CYCLE_DETECTED, ImmutableMap.of("string", renderStr)));
@Override public String interpret(TagNode tagNode, JinjavaInterpreter interpreter) { HelperStringTokenizer helper = new HelperStringTokenizer(tagNode.getHelpers()); if (!helper.hasNext()) { throw new TemplateSyntaxException(tagNode.getMaster().getImage(), "Tag 'include' expects template path", tagNode.getLineNumber(), tagNode.getStartPosition()); } String path = StringUtils.trimToEmpty(helper.next()); String templateFile = interpreter.resolveString(path, tagNode.getLineNumber(), tagNode.getStartPosition()); try { interpreter.getContext().getIncludePathStack().push(templateFile, tagNode.getLineNumber(), tagNode.getStartPosition()); } catch (IncludeTagCycleException e) { interpreter.addError(new TemplateError(ErrorType.WARNING, ErrorReason.EXCEPTION, ErrorItem.TAG, "Include cycle detected for path: '" + templateFile + "'", null, tagNode.getLineNumber(), tagNode.getStartPosition(), e, BasicTemplateErrorCategory.INCLUDE_CYCLE_DETECTED, ImmutableMap.of("path", templateFile))); return ""; } try { String template = interpreter.getResource(templateFile); Node node = interpreter.parse(template); interpreter.getContext().addDependency("coded_files", templateFile); JinjavaInterpreter child = new JinjavaInterpreter(interpreter); String result = child.render(node); interpreter.addAllErrors(child.getErrorsCopy()); return result; } catch (IOException e) { throw new InterpretException(e.getMessage(), e, tagNode.getLineNumber(), tagNode.getStartPosition()); } finally { interpreter.getContext().getIncludePathStack().pop(); } }
interpreter.addError(new TemplateError(TemplateError.ErrorType.WARNING, TemplateError.ErrorReason.EXCEPTION, TemplateError.ErrorItem.TAG,