Search in sources :

Example 1 with AnsiFormattedException

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();
}
Also used : PrintStream(java.io.PrintStream) AnsiFormattedException(org.neo4j.shell.exception.AnsiFormattedException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ClientException(org.neo4j.driver.exceptions.ClientException) ServiceUnavailableException(org.neo4j.driver.exceptions.ServiceUnavailableException) DiscoveryException(org.neo4j.driver.exceptions.DiscoveryException) Nonnull(javax.annotation.Nonnull)

Aggregations

ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 PrintStream (java.io.PrintStream)1 Nonnull (javax.annotation.Nonnull)1 ClientException (org.neo4j.driver.exceptions.ClientException)1 DiscoveryException (org.neo4j.driver.exceptions.DiscoveryException)1 ServiceUnavailableException (org.neo4j.driver.exceptions.ServiceUnavailableException)1 AnsiFormattedException (org.neo4j.shell.exception.AnsiFormattedException)1