Search in sources :

Example 6 with ResponseMessage

use of org.neo4j.bolt.v1.messaging.message.ResponseMessage 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)

Example 7 with ResponseMessage

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

the class TransportTestUtil method eventuallyReceives.

public static Matcher<TransportConnection> eventuallyReceives(final Matcher<ResponseMessage>... messages) {
    return new TypeSafeMatcher<TransportConnection>() {

        @Override
        protected boolean matchesSafely(TransportConnection conn) {
            try {
                for (Matcher<ResponseMessage> matchesMessage : messages) {
                    final ResponseMessage message = receiveOneResponseMessage(conn);
                    assertThat(message, matchesMessage);
                }
                return true;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

        @Override
        public void describeTo(Description description) {
            description.appendValueList("Messages[", ",", "]", messages);
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) TransportConnection(org.neo4j.bolt.v1.transport.socket.client.TransportConnection) Description(org.hamcrest.Description) ResponseMessage(org.neo4j.bolt.v1.messaging.message.ResponseMessage) IOException(java.io.IOException)

Aggregations

ResponseMessage (org.neo4j.bolt.v1.messaging.message.ResponseMessage)5 Description (org.hamcrest.Description)3 TypeSafeMatcher (org.hamcrest.TypeSafeMatcher)3 IOException (java.io.IOException)2 FailureMessage (org.neo4j.bolt.v1.messaging.message.FailureMessage)2 RecordMessage (org.neo4j.bolt.v1.messaging.message.RecordMessage)2 BufferedChannelOutput (org.neo4j.bolt.v1.packstream.BufferedChannelOutput)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 AuthenticationException (org.neo4j.bolt.security.auth.AuthenticationException)1 BoltResponseMessageReader (org.neo4j.bolt.v1.messaging.BoltResponseMessageReader)1 BoltResponseMessageRecorder (org.neo4j.bolt.v1.messaging.BoltResponseMessageRecorder)1 BoltResponseMessageWriter (org.neo4j.bolt.v1.messaging.BoltResponseMessageWriter)1 Neo4jPack (org.neo4j.bolt.v1.messaging.Neo4jPack)1 RecordingByteChannel (org.neo4j.bolt.v1.messaging.RecordingByteChannel)1 SuccessMessage (org.neo4j.bolt.v1.messaging.message.SuccessMessage)1 BufferedChannelInput (org.neo4j.bolt.v1.packstream.BufferedChannelInput)1 TransportConnection (org.neo4j.bolt.v1.transport.socket.client.TransportConnection)1