private void executeQuery(JsonGenerator jg, Query query) throws IOException { query.setStart(System.currentTimeMillis()); try (Transaction ignored = database.beginTx(); Result result = database.execute(query.toCypher())) { query.setEnd(System.currentTimeMillis()); jg.writeNumberField("duration", query.getDuration()); if (!query.isCountQuery()) jg.writeArrayFieldStart(query.getResultHeader()); while (result.hasNext()) { Map<String, Object> row = result.next(); if (!query.isCountQuery()) jg.writeStartObject(); for (Entry<String, Object> column : row.entrySet()) { writeField(column, jg); } if (!query.isCountQuery()) jg.writeEndObject(); } if (!query.isCountQuery()) jg.writeEndArray(); } }