@Override public Component getComponent() { final StringBuilder message = new StringBuilder(); for (TemplateError error : this.errors) { message.append(error.getSeverity()) .append(": ") .append(error.getMessage()) .append("@") .append(error.getLineno()) .append("\n"); // NMS-8660: Retrieve the full stack trace from the underlying exception if available if (error.getException() != null) { StringWriter stackTraceStringWriter = new StringWriter(); PrintWriter stackTracePrintWriter = new PrintWriter(stackTraceStringWriter); error.getException().printStackTrace(stackTracePrintWriter); message.append(stackTraceStringWriter.toString()); message.append("\n"); } } return new Label(message.toString(), ContentMode.PREFORMATTED); }
@Override public Component getComponent() { final StringBuilder message = new StringBuilder(); for (TemplateError error : this.errors) { message.append(error.getSeverity()) .append(": ") .append(error.getMessage()) .append("@") .append(error.getLineno()) .append("\n"); // NMS-8660: Retrieve the full stack trace from the underlying exception if available if (error.getException() != null) { StringWriter stackTraceStringWriter = new StringWriter(); PrintWriter stackTracePrintWriter = new PrintWriter(stackTraceStringWriter); error.getException().printStackTrace(stackTracePrintWriter); message.append(stackTraceStringWriter.toString()); message.append("\n"); } } return new Label(message.toString(), ContentMode.PREFORMATTED); }
@Test public void syntaxError() { interpreter.resolveELExpression("(*&W", 123); assertThat(interpreter.getErrorsCopy()).hasSize(1); TemplateError e = interpreter.getErrorsCopy().get(0); assertThat(e.getReason()).isEqualTo(ErrorReason.SYNTAX_ERROR); assertThat(e.getLineno()).isEqualTo(123); assertThat(e.getMessage()).contains("invalid character"); }
@Test public void syntaxError() { interpreter.resolveELExpression("(*&W", 123); assertThat(interpreter.getErrorsCopy()).hasSize(1); TemplateError e = interpreter.getErrorsCopy().get(0); assertThat(e.getReason()).isEqualTo(ErrorReason.SYNTAX_ERROR); assertThat(e.getLineno()).isEqualTo(123); assertThat(e.getMessage()).contains("invalid character"); }
@Test public void itReturnsCorrectSyntaxErrorPositions() { assertThat(interpreter.render("hi {{ missing thing }}{{ missing thing }}\nI am {{ blah blabbity }} too")).isEqualTo("hi \nI am too"); assertThat(interpreter.getErrorsCopy().size()).isEqualTo(3); assertThat(interpreter.getErrorsCopy().get(0).getLineno()).isEqualTo(1); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("position 14"); assertThat(interpreter.getErrorsCopy().get(0).getStartPosition()).isEqualTo(14); assertThat(interpreter.getErrorsCopy().get(0).getFieldName()).isEqualTo("thing"); assertThat(interpreter.getErrorsCopy().get(1).getLineno()).isEqualTo(1); assertThat(interpreter.getErrorsCopy().get(1).getMessage()).contains("position 33"); assertThat(interpreter.getErrorsCopy().get(1).getStartPosition()).isEqualTo(33); assertThat(interpreter.getErrorsCopy().get(1).getFieldName()).isEqualTo("thing"); assertThat(interpreter.getErrorsCopy().get(2).getLineno()).isEqualTo(2); assertThat(interpreter.getErrorsCopy().get(2).getMessage()).contains("position 13"); assertThat(interpreter.getErrorsCopy().get(2).getStartPosition()).isEqualTo(13); assertThat(interpreter.getErrorsCopy().get(2).getFieldName()).isEqualTo("blabbity"); }
@Test public void itReturnsCorrectSyntaxErrorPositions() { assertThat(interpreter.render("hi {{ missing thing }}{{ missing thing }}\nI am {{ blah blabbity }} too")).isEqualTo("hi \nI am too"); assertThat(interpreter.getErrorsCopy().size()).isEqualTo(3); assertThat(interpreter.getErrorsCopy().get(0).getLineno()).isEqualTo(1); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("position 14"); assertThat(interpreter.getErrorsCopy().get(0).getStartPosition()).isEqualTo(14); assertThat(interpreter.getErrorsCopy().get(0).getFieldName()).isEqualTo("thing"); assertThat(interpreter.getErrorsCopy().get(1).getLineno()).isEqualTo(1); assertThat(interpreter.getErrorsCopy().get(1).getMessage()).contains("position 33"); assertThat(interpreter.getErrorsCopy().get(1).getStartPosition()).isEqualTo(33); assertThat(interpreter.getErrorsCopy().get(1).getFieldName()).isEqualTo("thing"); assertThat(interpreter.getErrorsCopy().get(2).getLineno()).isEqualTo(2); assertThat(interpreter.getErrorsCopy().get(2).getMessage()).contains("position 13"); assertThat(interpreter.getErrorsCopy().get(2).getStartPosition()).isEqualTo(13); assertThat(interpreter.getErrorsCopy().get(2).getFieldName()).isEqualTo("blabbity"); }
@Test public void unknownProperty() { interpreter.resolveELExpression("foo", 23); assertThat(interpreter.getErrorsCopy()).isEmpty(); context.put("foo", new Object()); interpreter.resolveELExpression("foo.bar", 23); assertThat(interpreter.getErrorsCopy()).hasSize(1); TemplateError e = interpreter.getErrorsCopy().get(0); assertThat(e.getReason()).isEqualTo(ErrorReason.UNKNOWN); assertThat(e.getLineno()).isEqualTo(23); assertThat(e.getFieldName()).isEqualTo("bar"); assertThat(e.getMessage()).contains("Cannot resolve property 'bar'"); }
@Test public void unknownProperty() { interpreter.resolveELExpression("foo", 23); assertThat(interpreter.getErrorsCopy()).isEmpty(); context.put("foo", new Object()); interpreter.resolveELExpression("foo.bar", 23); assertThat(interpreter.getErrorsCopy()).hasSize(1); TemplateError e = interpreter.getErrorsCopy().get(0); assertThat(e.getReason()).isEqualTo(ErrorReason.UNKNOWN); assertThat(e.getLineno()).isEqualTo(23); assertThat(e.getFieldName()).isEqualTo("bar"); assertThat(e.getMessage()).contains("Cannot resolve property 'bar'"); }
public TemplateError withScopeDepth(int scopeDepth) { return new TemplateError(getSeverity(), getReason(), getItem(), getMessage(), getFieldName(), getLineno(), getStartPosition(), getException(), getCategory(), getCategoryErrors(), scopeDepth); }