@Override public void close() { // if there is no current transaction available, the response is already closed. if (transactionManager.getCurrentTransaction() != null) { // release the response resource result.consume(); } }
@Override public void close() { // if there is no current transaction available, the response is already closed. if (transactionManager.getCurrentTransaction() != null) { // release the response resource result.consume(); } }
@Override public GraphQueryResult executeBatch(List<String> queries, Map<String, Object> statementParameters) { try (Driver driver = GraphDatabase.driver(url, auth); Session session = driver.session()) { Neo4jBoltBuffer buffer = new Neo4jBoltBuffer(); long startTime = System.currentTimeMillis(); for (String query : queries) { session.run(query, statementParameters).consume(); } long endTime = System.currentTimeMillis(); return new Neo4jBoltQueryResult(endTime - startTime, buffer); } } }
private StatementResult mockResult(List<String> cols, Object... data) { StatementResult result = mock(StatementResult.class); Statement statement = mock(Statement.class); ResultSummary summary = mock(ResultSummary.class); when(summary.statement()).thenReturn(statement); when(result.keys()).thenReturn(cols); List<Record> records = new ArrayList<>(); List<Object> input = asList(data); int width = cols.size(); for (int row = 0; row < input.size() / width; row++) { records.add(record(cols, input.subList(row * width, (row + 1) * width))); } when(result.list()).thenReturn(records); when(result.consume()).thenReturn(summary); when(result.summary()).thenReturn(summary); return result; }
@Override public Response<RowModel> execute(DefaultRequest query) { final List<RowModel> rowModels = new ArrayList<>(); String[] columns = null; for (Statement statement : query.getStatements()) { StatementResult result = executeRequest(statement); if (columns == null) { try { List<String> columnSet = result.keys(); columns = columnSet.toArray(new String[columnSet.size()]); } catch (ClientException e) { throw new CypherException(e.code(), e.getMessage(), e); } } try (RowModelResponse rowModelResponse = new RowModelResponse(result, transactionManager, entityAdapter)) { RowModel model; while ((model = rowModelResponse.next()) != null) { rowModels.add(model); } result.consume(); } } return new MultiStatementBasedResponse(columns, rowModels); }
@Override public Response<RowModel> execute(DefaultRequest query) { final List<RowModel> rowModels = new ArrayList<>(); String[] columns = null; for (Statement statement : query.getStatements()) { StatementResult result = executeRequest(statement); if (columns == null) { try { List<String> columnSet = result.keys(); columns = columnSet.toArray(new String[columnSet.size()]); } catch (ClientException e) { throw new CypherException(e.code(), e.getMessage(), e); } } try (RowModelResponse rowModelResponse = new RowModelResponse(result, transactionManager)) { RowModel model; while ((model = rowModelResponse.next()) != null) { rowModels.add(model); } result.consume(); } } return new MultiStatementBasedResponse(columns, rowModels); }
@Test public void consume() { List<Map<String, Object>> results = asList( getRow(1), getRow(2) ); StatementResult statementResult = new GremlinServerStatementResult(serverInfo, statement, results.iterator(), converter); assertThat(statementResult.hasNext()).isTrue(); assertThat(statementResult.consume().server()).isEqualTo(serverInfo); assertThat(statementResult.hasNext()).isFalse(); }
public static ServerVersion version( Driver driver ) { try ( Session session = driver.session() ) { String versionString = session.readTransaction( tx -> tx.run( "RETURN 1" ).consume().server().version() ); return version( versionString ); } }
private void reconnect() { String bookmark = null; if (session != null) { bookmark = session.lastBookmark(); session.close(); } session = driver.session(AccessMode.WRITE, bookmark); StatementResult run = session.run("RETURN 1"); this.version = run.summary().server().version(); run.consume(); }
@Override public int executeBackendUpdateQuery(BackendQuery<String> query, QueryParameters queryParameters, TupleContext tupleContext) { Map<String, Object> parameters = getParameters( queryParameters ); String nativeQuery = buildNativeQuery( query, queryParameters ); Statement statement = new Statement( nativeQuery, parameters ); Transaction transaction = transaction( tupleContext ); StatementResult statementResult = transaction.run( statement ); validateNativeQuery( statementResult ); ResultSummary summary = statementResult.consume(); return updatesCount( summary ); }
@Test public void exceptionsFromSilentDisconnectAreSuppressedToReportOriginalErrors() throws CommandException { Session session = mock(Session.class); StatementResult resultMock = mock(StatementResult.class); RuntimeException originalException = new RuntimeException("original exception"); RuntimeException thrownFromSilentDisconnect = new RuntimeException("exception from silent disconnect"); Driver mockedDriver = stubVersionInAnOpenSession(resultMock, session, "neo4j-version"); OfflineBoltStateHandler boltStateHandler = new OfflineBoltStateHandler(mockedDriver); when(resultMock.consume()).thenThrow(originalException); doThrow(thrownFromSilentDisconnect).when(session).close(); try { boltStateHandler.connect(); fail("should fail on silent disconnect"); } catch (Exception e) { assertThat(e.getSuppressed()[0], is(thrownFromSilentDisconnect)); assertThat(e, is(originalException)); } }
@Override public GraphQueryResult execute(String query, Map<String, Object> statementParameters) { try { Driver driver = GraphDatabase.driver(url, auth); try { try (Session session = driver.session()) { Neo4jBoltBuffer buffer = new Neo4jBoltBuffer(); long startTime = System.currentTimeMillis(); StatementResult statementResult = session.run(query, statementParameters); buffer.addColumns(statementResult.keys()); for (Record record : statementResult.list()) { // Add row buffer.addRow(record.asMap()); } buffer.addResultSummary(statementResult.consume()); long endTime = System.currentTimeMillis(); return new Neo4jBoltQueryResult(endTime - startTime, buffer); } } finally { driver.closeAsync(); } } catch (UnresolvedAddressException e) { throw new ClientException(e.getMessage()); } }
@Override public QueryStatisticsModel adapt(StatementResult result) { QueryStatisticsModel queryStatisticsModel = new QueryStatisticsModel(); SummaryCounters stats = result.consume().counters(); queryStatisticsModel.setContains_updates(stats.containsUpdates()); queryStatisticsModel.setNodes_created(stats.nodesCreated()); queryStatisticsModel.setNodes_deleted(stats.nodesDeleted()); queryStatisticsModel.setProperties_set(stats.propertiesSet()); queryStatisticsModel.setRelationships_created(stats.relationshipsCreated()); queryStatisticsModel.setRelationship_deleted(stats.relationshipsDeleted()); queryStatisticsModel.setLabels_added(stats.labelsAdded()); queryStatisticsModel.setLabels_removed(stats.labelsRemoved()); queryStatisticsModel.setIndexes_added(stats.indexesAdded()); queryStatisticsModel.setIndexes_removed(stats.indexesRemoved()); queryStatisticsModel.setConstraints_added(stats.constraintsAdded()); queryStatisticsModel.setConstraints_removed(stats.constraintsRemoved()); return queryStatisticsModel; } }
@Override public QueryStatisticsModel adapt(StatementResult result) { QueryStatisticsModel queryStatisticsModel = new QueryStatisticsModel(); SummaryCounters stats = result.consume().counters(); queryStatisticsModel.setContains_updates(stats.containsUpdates()); queryStatisticsModel.setNodes_created(stats.nodesCreated()); queryStatisticsModel.setNodes_deleted(stats.nodesDeleted()); queryStatisticsModel.setProperties_set(stats.propertiesSet()); queryStatisticsModel.setRelationships_created(stats.relationshipsCreated()); queryStatisticsModel.setRelationship_deleted(stats.relationshipsDeleted()); queryStatisticsModel.setLabels_added(stats.labelsAdded()); queryStatisticsModel.setLabels_removed(stats.labelsRemoved()); queryStatisticsModel.setIndexes_added(stats.indexesAdded()); queryStatisticsModel.setIndexes_removed(stats.indexesRemoved()); queryStatisticsModel.setConstraints_added(stats.constraintsAdded()); queryStatisticsModel.setConstraints_removed(stats.constraintsRemoved()); return queryStatisticsModel; } }