use of org.neo4j.shell.exception.AnsiFormattedException in project neo4j by neo4j.
the class AnsiLogger method getFormattedMessage.
/**
* Formatting for Bolt exceptions.
*/
@Nonnull
public String getFormattedMessage(@Nonnull final Throwable e) {
AnsiFormattedText msg = AnsiFormattedText.s().colorRed();
if (isDebugEnabled()) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
e.printStackTrace(ps);
msg.append(new String(baos.toByteArray(), StandardCharsets.UTF_8));
} else {
if (e instanceof AnsiFormattedException) {
msg = msg.append(((AnsiFormattedException) e).getFormattedMessage());
} else if (e instanceof ClientException && e.getMessage() != null && e.getMessage().contains("Missing username")) {
// Username and password was not specified
msg = msg.append(e.getMessage()).append("\nPlease specify --username, and optionally --password, as argument(s)").append("\nor as environment variable(s), NEO4J_USERNAME, and NEO4J_PASSWORD respectively.").append("\nSee --help for more info.");
} else {
Throwable cause = e;
// Get the suppressed root cause of ServiceUnavailableExceptions
if (e instanceof ServiceUnavailableException) {
Throwable[] suppressed = e.getSuppressed();
for (Throwable s : suppressed) {
if (s instanceof DiscoveryException) {
cause = getRootCause(s);
break;
}
}
}
if (cause.getMessage() != null) {
msg = msg.append(cause.getMessage());
} else {
msg = msg.append(cause.getClass().getSimpleName());
}
}
}
return msg.formattedString();
}
Aggregations