Search in sources :

Example 1 with SuccessMessage

use of org.neo4j.bolt.v1.messaging.message.SuccessMessage in project neo4j by neo4j.

the class BoltInteraction method collectResults.

private static BoltResult collectResults(TransportConnection client) throws Exception {
    ResponseMessage message = TransportTestUtil.receiveOneResponseMessage(client);
    List<String> fieldNames = new ArrayList<>();
    List<Map<String, Object>> result = new ArrayList<>();
    if (message instanceof SuccessMessage) {
        Map<String, Object> metadata = ((SuccessMessage) message).meta();
        fieldNames = (List<String>) metadata.get("fields");
    } else if (message instanceof FailureMessage) {
        FailureMessage failMessage = (FailureMessage) message;
        // drain ignoredMessage, ack failure, get successMessage
        TransportTestUtil.receiveOneResponseMessage(client);
        client.send(TransportTestUtil.chunk(reset()));
        TransportTestUtil.receiveOneResponseMessage(client);
        throw new AuthenticationException(failMessage.status(), failMessage.message());
    }
    do {
        message = TransportTestUtil.receiveOneResponseMessage(client);
        if (message instanceof RecordMessage) {
            Object[] row = ((RecordMessage) message).record().fields();
            Map<String, Object> rowMap = new HashMap<>();
            for (int i = 0; i < row.length; i++) {
                rowMap.put(fieldNames.get(i), row[i]);
            }
            result.add(rowMap);
        }
    } while (!(message instanceof SuccessMessage) && !(message instanceof FailureMessage));
    if (message instanceof FailureMessage) {
        FailureMessage failMessage = (FailureMessage) message;
        // ack failure, get successMessage
        client.send(TransportTestUtil.chunk(reset()));
        TransportTestUtil.receiveOneResponseMessage(client);
        throw new AuthenticationException(failMessage.status(), failMessage.message());
    }
    return new BoltResult(result);
}
Also used : AuthenticationException(org.neo4j.bolt.security.auth.AuthenticationException) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ResponseMessage(org.neo4j.bolt.v1.messaging.message.ResponseMessage) SuccessMessage(org.neo4j.bolt.v1.messaging.message.SuccessMessage) FailureMessage(org.neo4j.bolt.v1.messaging.message.FailureMessage) RecordMessage(org.neo4j.bolt.v1.messaging.message.RecordMessage) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 AuthenticationException (org.neo4j.bolt.security.auth.AuthenticationException)1 FailureMessage (org.neo4j.bolt.v1.messaging.message.FailureMessage)1 RecordMessage (org.neo4j.bolt.v1.messaging.message.RecordMessage)1 ResponseMessage (org.neo4j.bolt.v1.messaging.message.ResponseMessage)1 SuccessMessage (org.neo4j.bolt.v1.messaging.message.SuccessMessage)1