Search in sources :

Example 1 with RecordMessage

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

the class MessageMatchers method msgRecord.

public static Matcher<ResponseMessage> msgRecord(final Matcher<Record> matcher) {
    return new TypeSafeMatcher<ResponseMessage>() {

        @Override
        protected boolean matchesSafely(ResponseMessage t) {
            assertThat(t, instanceOf(RecordMessage.class));
            RecordMessage msg = (RecordMessage) t;
            assertThat(msg.record(), matcher);
            return true;
        }

        @Override
        public void describeTo(Description description) {
            description.appendText("RECORD ");
            description.appendDescriptionOf(matcher);
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) ResponseMessage(org.neo4j.bolt.v1.messaging.message.ResponseMessage) RecordMessage(org.neo4j.bolt.v1.messaging.message.RecordMessage)

Example 2 with RecordMessage

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

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