Search in sources :

Example 11 with Notification

use of org.neo4j.graphdb.Notification in project neo4j by neo4j.

the class AuthProceduresIT method assertNotification.

private void assertNotification(LoginContext subject, String query, Notification wantedNotification) {
    try (Transaction tx = systemDb.beginTransaction(KernelTransaction.Type.IMPLICIT, subject)) {
        Result result = tx.execute(query);
        Iterator<Notification> givenNotifications = result.getNotifications().iterator();
        if (givenNotifications.hasNext()) {
            // only checks first notification
            assertEquals(wantedNotification, givenNotifications.next());
        } else {
            fail("Expected notifications from '" + query + "'");
        }
        tx.commit();
    }
}
Also used : Transaction(org.neo4j.graphdb.Transaction) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) Notification(org.neo4j.graphdb.Notification) Result(org.neo4j.graphdb.Result)

Example 12 with Notification

use of org.neo4j.graphdb.Notification in project neo4j by neo4j.

the class LineDelimitedEventSourceJoltSerializer method writeNotifications.

private void writeNotifications() {
    if (notifications.isEmpty()) {
        return;
    }
    try {
        jsonGenerator.writeArrayFieldStart("notifications");
        try {
            for (Notification notification : notifications) {
                jsonGenerator.writeStartObject();
                try {
                    jsonGenerator.writeStringField("code", notification.getCode());
                    jsonGenerator.writeStringField("severity", notification.getSeverity().toString());
                    jsonGenerator.writeStringField("title", notification.getTitle());
                    jsonGenerator.writeStringField("description", notification.getDescription());
                    writePosition(notification.getPosition());
                } finally {
                    jsonGenerator.writeEndObject();
                }
            }
        } finally {
            jsonGenerator.writeEndArray();
        }
    } catch (IOException e) {
        throw new ConnectionException("Failed to write to the response stream", e);
    }
}
Also used : IOException(java.io.IOException) Notification(org.neo4j.graphdb.Notification) ConnectionException(org.neo4j.server.http.cypher.format.api.ConnectionException)

Example 13 with Notification

use of org.neo4j.graphdb.Notification in project neo4j by neo4j.

the class ExecutionResultSerializer method writeNotifications.

private void writeNotifications(Iterable<Notification> notifications) {
    // don't add anything if notifications are empty
    if (!notifications.iterator().hasNext()) {
        return;
    }
    try {
        ensureResultsFieldClosed();
        jsonGenerator.writeArrayFieldStart("notifications");
        try {
            for (Notification notification : notifications) {
                jsonGenerator.writeStartObject();
                try {
                    jsonGenerator.writeStringField("code", notification.getCode());
                    jsonGenerator.writeStringField("severity", notification.getSeverity().toString());
                    jsonGenerator.writeStringField("title", notification.getTitle());
                    jsonGenerator.writeStringField("description", notification.getDescription());
                    writePosition(notification.getPosition());
                } finally {
                    jsonGenerator.writeEndObject();
                }
            }
        } finally {
            jsonGenerator.writeEndArray();
        }
    } catch (IOException e) {
        throw new ConnectionException("Failed to write to the response stream", e);
    }
}
Also used : IOException(java.io.IOException) Notification(org.neo4j.graphdb.Notification) ConnectionException(org.neo4j.server.http.cypher.format.api.ConnectionException)

Example 14 with Notification

use of org.neo4j.graphdb.Notification in project neo4j by neo4j.

the class ExecutionResultSerializer method notifications.

public void notifications(Iterable<Notification> notifications) throws IOException {
    //don't add anything if notifications are empty
    if (!notifications.iterator().hasNext()) {
        return;
    }
    try {
        ensureResultsFieldClosed();
        out.writeArrayFieldStart("notifications");
        try {
            for (Notification notification : notifications) {
                out.writeStartObject();
                try {
                    out.writeStringField("code", notification.getCode());
                    out.writeStringField("severity", notification.getSeverity().toString());
                    out.writeStringField("title", notification.getTitle());
                    out.writeStringField("description", notification.getDescription());
                    writePosition(notification.getPosition());
                } finally {
                    out.writeEndObject();
                }
            }
        } finally {
            out.writeEndArray();
        }
    } catch (IOException e) {
        throw loggedIOException(e);
    }
}
Also used : IOException(java.io.IOException) Notification(org.neo4j.graphdb.Notification)

Example 15 with Notification

use of org.neo4j.graphdb.Notification in project neo4j by neo4j.

the class ExecutionResultSerializerTest method shouldReturnNotifications.

@Test
public void shouldReturnNotifications() throws IOException {
    // given
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    ExecutionResultSerializer serializer = getSerializerWith(output);
    Notification notification = NotificationCode.CARTESIAN_PRODUCT.notification(new InputPosition(1, 2, 3));
    List<Notification> notifications = Arrays.asList(notification);
    Result executionResult = mockExecutionResult(null, notifications, map("column1", "value1", "column2", "value2"));
    // when
    serializer.transactionCommitUri(URI.create("commit/uri/1"));
    serializer.statementResult(executionResult, false);
    serializer.notifications(notifications);
    serializer.finish();
    // then
    String result = output.toString(UTF_8.name());
    assertEquals("{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"],\"meta\":[null,null]}]}],\"notifications\":[{\"code\":\"Neo" + ".ClientNotification.Statement.CartesianProductWarning\",\"severity\":\"WARNING\",\"title\":\"This " + "query builds a cartesian product between disconnected patterns.\",\"description\":\"If a " + "part of a query contains multiple disconnected patterns, this will build a cartesian product" + " between all those parts. This may produce a large amount of data and slow down query " + "processing. While occasionally intended, it may often be possible to reformulate the query " + "that avoids the use of this cross product, perhaps by adding a relationship between the " + "different parts or by using OPTIONAL MATCH\",\"position\":{\"offset\":1,\"line\":2," + "\"column\":3}}],\"errors\":[]}", result);
}
Also used : InputPosition(org.neo4j.graphdb.InputPosition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Notification(org.neo4j.graphdb.Notification) Result(org.neo4j.graphdb.Result) Test(org.junit.Test) Neo4jJsonCodecTest(org.neo4j.server.rest.transactional.Neo4jJsonCodecTest)

Aggregations

Notification (org.neo4j.graphdb.Notification)21 Test (org.junit.jupiter.api.Test)10 InputPosition (org.neo4j.graphdb.InputPosition)5 Result (org.neo4j.graphdb.Result)4 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 IOException (java.io.IOException)3 Test (org.junit.Test)3 Neo4jJsonCodecTest (org.neo4j.server.rest.transactional.Neo4jJsonCodecTest)3 ExecutionPlanDescription (org.neo4j.graphdb.ExecutionPlanDescription)2 QueryExecutionType (org.neo4j.graphdb.QueryExecutionType)2 Transaction (org.neo4j.graphdb.Transaction)2 ConnectionException (org.neo4j.server.http.cypher.format.api.ConnectionException)2 ArrayList (java.util.ArrayList)1 TreeSet (java.util.TreeSet)1 Matchers.containsString (org.hamcrest.Matchers.containsString)1 Config (org.neo4j.configuration.Config)1 ResultStringBuilder (org.neo4j.cypher.internal.result.string.ResultStringBuilder)1 CypherExecutionException (org.neo4j.exceptions.CypherExecutionException)1 Neo4jException (org.neo4j.exceptions.Neo4jException)1 QueryExecutionException (org.neo4j.graphdb.QueryExecutionException)1