Skip to content

Commit 22232ea

Browse files
fbivilleinjectives
andauthored
Align driver with latest revision of ExecuteQuery ADR (#1377)
* Align driver with latest revision of `ExecuteQuery` ADR Rename `QueryTask` occurrences with `ExecuteQuery` Rename default `ExecuteQuery`'s default `BookmarkManager` getter Make default `ExecuteQuery`'s default `BookmarkManager` unchangeable * Fix Javadoc error * s/Builder/Template/ * Update naming * Update clirr * Update variable names * Update Javadoc * Update test name * Update default ExecutableQuery BookmarkManager accessor * Update Bookmark Manager accessor * Update clirr config to align with the naming update --------- Co-authored-by: Dmitriy Tverdiakov <[email protected]>
1 parent aa72681 commit 22232ea

File tree

12 files changed

+118
-154
lines changed

12 files changed

+118
-154
lines changed

driver/clirr-ignored-differences.xml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,4 +457,50 @@
457457
<method>java.util.Optional rawCategory()</method>
458458
</difference>
459459

460+
<difference>
461+
<className>org/neo4j/driver/Driver</className>
462+
<differenceType>7002</differenceType>
463+
<method>org.neo4j.driver.QueryTask queryTask(java.lang.String)</method>
464+
</difference>
465+
466+
<difference>
467+
<className>org/neo4j/driver/Driver</className>
468+
<differenceType>7002</differenceType>
469+
<method>org.neo4j.driver.BookmarkManager queryTaskBookmarkManager()</method>
470+
</difference>
471+
472+
<difference>
473+
<className>org/neo4j/driver/Config</className>
474+
<differenceType>7002</differenceType>
475+
<method>org.neo4j.driver.BookmarkManager queryTaskBookmarkManager()</method>
476+
</difference>
477+
478+
<difference>
479+
<className>org/neo4j/driver/Config$ConfigBuilder</className>
480+
<differenceType>7002</differenceType>
481+
<method>org.neo4j.driver.Config$ConfigBuilder withQueryTaskBookmarkManager(org.neo4j.driver.BookmarkManager)</method>
482+
</difference>
483+
484+
<difference>
485+
<className>org/neo4j/driver/QueryTask</className>
486+
<differenceType>8001</differenceType>
487+
</difference>
488+
489+
<difference>
490+
<className>org/neo4j/driver/QueryTask$ResultFinisher</className>
491+
<differenceType>8001</differenceType>
492+
</difference>
493+
494+
<difference>
495+
<className>org/neo4j/driver/Driver</className>
496+
<differenceType>7012</differenceType>
497+
<method>org.neo4j.driver.ExecutableQuery executableQuery(java.lang.String)</method>
498+
</difference>
499+
500+
<difference>
501+
<className>org/neo4j/driver/Driver</className>
502+
<differenceType>7012</differenceType>
503+
<method>org.neo4j.driver.BookmarkManager executableQueryBookmarkManager()</method>
504+
</difference>
505+
460506
</differences>

driver/src/main/java/org/neo4j/driver/Config.java

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.neo4j.driver.net.ServerAddressResolver;
4242
import org.neo4j.driver.util.Experimental;
4343
import org.neo4j.driver.util.Immutable;
44-
import org.neo4j.driver.util.Preview;
4544

4645
/**
4746
* A configuration class to config driver properties.
@@ -77,11 +76,6 @@ public final class Config implements Serializable {
7776

7877
private static final Config EMPTY = builder().build();
7978

80-
/**
81-
* The {@link QueryTask} {@link BookmarkManager}.
82-
*/
83-
private final BookmarkManager queryBookmarkManager;
84-
8579
/**
8680
* User defined logging
8781
*/
@@ -155,7 +149,6 @@ public final class Config implements Serializable {
155149
private final MetricsAdapter metricsAdapter;
156150

157151
private Config(ConfigBuilder builder) {
158-
this.queryBookmarkManager = builder.queryBookmarkManager;
159152
this.logging = builder.logging;
160153
this.logLeakedSessions = builder.logLeakedSessions;
161154

@@ -178,21 +171,6 @@ private Config(ConfigBuilder builder) {
178171
this.metricsAdapter = builder.metricsAdapter;
179172
}
180173

181-
/**
182-
* A {@link BookmarkManager} implementation for the driver to use on
183-
* {@link Driver#queryTask(String)} method and its variants by default.
184-
* <p>
185-
* Please note that sessions will not use this automatically, but it is possible to enable it explicitly
186-
* using {@link SessionConfig.Builder#withBookmarkManager(BookmarkManager)}.
187-
*
188-
* @return bookmark manager, must not be {@code null}
189-
* @since 5.5
190-
*/
191-
@Preview(name = "Driver Level Queries")
192-
public BookmarkManager queryTaskBookmarkManager() {
193-
return queryBookmarkManager;
194-
}
195-
196174
/**
197175
* Logging provider
198176
*
@@ -361,8 +339,6 @@ public String userAgent() {
361339
* Used to build new config instances
362340
*/
363341
public static final class ConfigBuilder {
364-
private BookmarkManager queryBookmarkManager =
365-
BookmarkManagers.defaultManager(BookmarkManagerConfig.builder().build());
366342
private Logging logging = DEV_NULL_LOGGING;
367343
private boolean logLeakedSessions;
368344
private int maxConnectionPoolSize = PoolSettings.DEFAULT_MAX_CONNECTION_POOL_SIZE;
@@ -383,24 +359,6 @@ public static final class ConfigBuilder {
383359

384360
private ConfigBuilder() {}
385361

386-
/**
387-
* Sets a {@link BookmarkManager} implementation for the driver to use on
388-
* {@link Driver#queryTask(String)} method and its variants by default.
389-
* <p>
390-
* Please note that sessions will not use this automatically, but it is possible to enable it explicitly
391-
* using {@link SessionConfig.Builder#withBookmarkManager(BookmarkManager)}.
392-
*
393-
* @param bookmarkManager bookmark manager, must not be {@code null}
394-
* @return this builder
395-
* @since 5.5
396-
*/
397-
@Preview(name = "Driver Level Queries")
398-
public ConfigBuilder withQueryTaskBookmarkManager(BookmarkManager bookmarkManager) {
399-
Objects.requireNonNull(bookmarkManager, "bookmarkManager must not be null");
400-
this.queryBookmarkManager = bookmarkManager;
401-
return this;
402-
}
403-
404362
/**
405363
* Provide a logging implementation for the driver to use. Java logging framework {@link java.util.logging} with {@link Level#INFO} is used by default.
406364
* Callers are expected to either implement {@link Logging} interface or provide one of the existing implementations available from static factory

driver/src/main/java/org/neo4j/driver/Driver.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,24 @@
6565
*/
6666
public interface Driver extends AutoCloseable {
6767
/**
68-
* Creates a new {@link QueryTask} instance that executes a query in a managed transaction with automatic retries on
68+
* Creates a new {@link ExecutableQuery} instance that executes a query in a managed transaction with automatic retries on
6969
* retryable errors.
7070
*
7171
* @param query query string
72-
* @return new query task instance
73-
* @since 5.5
72+
* @return new executable query instance
73+
* @since 5.7
7474
*/
7575
@Preview(name = "Driver Level Queries")
76-
QueryTask queryTask(String query);
76+
ExecutableQuery executableQuery(String query);
7777

7878
/**
79-
* Returns an instance of {@link BookmarkManager} used by {@link QueryTask} instances by default.
79+
* Returns an instance of {@link BookmarkManager} used by {@link ExecutableQuery} instances by default.
8080
*
8181
* @return bookmark manager, must not be {@code null}
82-
* @since 5.6
82+
* @since 5.7
8383
*/
8484
@Preview(name = "Driver Level Queries")
85-
BookmarkManager queryTaskBookmarkManager();
85+
BookmarkManager executableQueryBookmarkManager();
8686

8787
/**
8888
* Return a flag to indicate whether or not encryption is used for this driver.

driver/src/main/java/org/neo4j/driver/QueryTask.java renamed to driver/src/main/java/org/neo4j/driver/ExecutableQuery.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,21 @@
2929
import org.neo4j.driver.util.Preview;
3030

3131
/**
32-
* A task that executes a query in a managed transaction with automatic retries on retryable errors.
32+
* An executable query that executes a query in a managed transaction with automatic retries on retryable errors.
3333
* <p>
3434
* This is a high-level API for executing a query. There are more advanced APIs available.
3535
* For instance, {@link Session}, {@link Transaction} and transaction functions that are accessible via
3636
* methods like {@link Session#executeWrite(TransactionCallback)}, {@link Session#executeWriteWithoutResult(Consumer)}
3737
* and {@link Session#executeRead(TransactionCallback)} (there are also overloaded options available).
3838
* <p>
39-
* Causal consistency is managed via driver's {@link BookmarkManager} that is enabled by default and may
40-
* be replaced using {@link Config.ConfigBuilder#withQueryTaskBookmarkManager(BookmarkManager)}. It is also possible
39+
* Causal consistency is managed via driver's {@link BookmarkManager} that is enabled by default. It is possible
4140
* to use a different {@link BookmarkManager} or disable it via
4241
* {@link QueryConfig.Builder#withBookmarkManager(BookmarkManager)} on individual basis.
4342
* <p>
4443
* Sample usage:
4544
* <pre>
4645
* {@code
47-
* var eagerResult = driver.queryTask("CREATE (n{field: $value}) RETURN n")
46+
* var eagerResult = driver.executableQuery("CREATE (n{field: $value}) RETURN n")
4847
* .withParameters(Map.of("value", "5"))
4948
* .execute();
5049
* }
@@ -72,13 +71,13 @@
7271
* {@code
7372
* import static java.util.stream.Collectors.*;
7473
*
75-
* var averagingLong = driver.queryTask("UNWIND range(0, 5) as N RETURN N")
74+
* var averagingLong = driver.executableQuery("UNWIND range(0, 5) as N RETURN N")
7675
* .execute(averagingLong(record -> record.get("N").asLong()));
7776
*
78-
* var filteredValues = driver.queryTask("UNWIND range(0, 5) as N RETURN N")
77+
* var filteredValues = driver.executableQuery("UNWIND range(0, 5) as N RETURN N")
7978
* .execute(mapping(record -> record.get("N").asLong(), filtering(value -> value > 2, toList())));
8079
*
81-
* var maxValue = driver.queryTask("UNWIND range(0, 5) as N RETURN N")
80+
* var maxValue = driver.executableQuery("UNWIND range(0, 5) as N RETURN N")
8281
* .execute(mapping(record -> record.get("N").asLong(), maxBy(Long::compare)));
8382
* }
8483
* </pre>
@@ -90,32 +89,32 @@
9089
*
9190
* private record ResultValue(List<String> keys, Set<Long> values, ResultSummary summary) {}
9291
*
93-
* var result = driver.queryTask("UNWIND range(0, 5) as N RETURN N")
92+
* var result = driver.executableQuery("UNWIND range(0, 5) as N RETURN N")
9493
* .execute(Collectors.mapping(record -> record.get("N").asLong(), toSet()), ResultValue::new);
9594
* }
9695
* </pre>
9796
*
98-
* @since 5.5
97+
* @since 5.7
9998
*/
10099
@Preview(name = "Driver Level Queries")
101-
public interface QueryTask {
100+
public interface ExecutableQuery {
102101
/**
103102
* Sets query parameters.
104103
*
105104
* @param parameters parameters map, must not be {@code null}
106-
* @return a new query task
105+
* @return a new executable query
107106
*/
108-
QueryTask withParameters(Map<String, Object> parameters);
107+
ExecutableQuery withParameters(Map<String, Object> parameters);
109108

110109
/**
111110
* Sets {@link QueryConfig}.
112111
* <p>
113-
* By default, {@link QueryTask} has {@link QueryConfig#defaultConfig()} value.
112+
* By default, {@link ExecutableQuery} has {@link QueryConfig#defaultConfig()} value.
114113
*
115114
* @param config query config, must not be {@code null}
116-
* @return a new query task
115+
* @return a new executable query
117116
*/
118-
QueryTask withConfig(QueryConfig config);
117+
ExecutableQuery withConfig(QueryConfig config);
119118

120119
/**
121120
* Executes query, collects all results eagerly and returns a result.

driver/src/main/java/org/neo4j/driver/QueryConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.neo4j.driver.util.Preview;
2828

2929
/**
30-
* Query configuration used by {@link Driver#queryTask(String)} and its variants.
30+
* Query configuration used by {@link Driver#executableQuery(String)} and its variants.
3131
* @since 5.5
3232
*/
3333
@Preview(name = "Driver Level Queries")
@@ -116,7 +116,6 @@ public Optional<String> impersonatedUser() {
116116
* Returns bookmark manager for the query.
117117
*
118118
* @param defaultBookmarkManager default bookmark manager to use when none has been configured explicitly,
119-
* {@link Config#queryTaskBookmarkManager()} as a default value by the driver
120119
* @return bookmark manager
121120
*/
122121
public Optional<BookmarkManager> bookmarkManager(BookmarkManager defaultBookmarkManager) {

driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,7 @@ protected InternalDriver createRoutingDriver(
275275
*/
276276
protected InternalDriver createDriver(
277277
SecurityPlan securityPlan, SessionFactory sessionFactory, MetricsProvider metricsProvider, Config config) {
278-
return new InternalDriver(
279-
config.queryTaskBookmarkManager(), securityPlan, sessionFactory, metricsProvider, config.logging());
278+
return new InternalDriver(securityPlan, sessionFactory, metricsProvider, config.logging());
280279
}
281280

282281
/**

driver/src/main/java/org/neo4j/driver/internal/InternalDriver.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525
import java.util.concurrent.atomic.AtomicBoolean;
2626
import org.neo4j.driver.BaseSession;
2727
import org.neo4j.driver.BookmarkManager;
28+
import org.neo4j.driver.BookmarkManagerConfig;
29+
import org.neo4j.driver.BookmarkManagers;
2830
import org.neo4j.driver.Driver;
31+
import org.neo4j.driver.ExecutableQuery;
2932
import org.neo4j.driver.Logger;
3033
import org.neo4j.driver.Logging;
3134
import org.neo4j.driver.Metrics;
3235
import org.neo4j.driver.Query;
3336
import org.neo4j.driver.QueryConfig;
34-
import org.neo4j.driver.QueryTask;
3537
import org.neo4j.driver.Session;
3638
import org.neo4j.driver.SessionConfig;
3739
import org.neo4j.driver.async.AsyncSession;
@@ -47,7 +49,8 @@
4749
import org.neo4j.driver.types.TypeSystem;
4850

4951
public class InternalDriver implements Driver {
50-
private final BookmarkManager queryBookmarkManager;
52+
private final BookmarkManager queryBookmarkManager =
53+
BookmarkManagers.defaultManager(BookmarkManagerConfig.builder().build());
5154
private final SecurityPlan securityPlan;
5255
private final SessionFactory sessionFactory;
5356
private final Logger log;
@@ -56,25 +59,23 @@ public class InternalDriver implements Driver {
5659
private final MetricsProvider metricsProvider;
5760

5861
InternalDriver(
59-
BookmarkManager queryBookmarkManager,
6062
SecurityPlan securityPlan,
6163
SessionFactory sessionFactory,
6264
MetricsProvider metricsProvider,
6365
Logging logging) {
64-
this.queryBookmarkManager = queryBookmarkManager;
6566
this.securityPlan = securityPlan;
6667
this.sessionFactory = sessionFactory;
6768
this.metricsProvider = metricsProvider;
6869
this.log = logging.getLog(getClass());
6970
}
7071

7172
@Override
72-
public QueryTask queryTask(String query) {
73-
return new InternalQueryTask(this, new Query(query), QueryConfig.defaultConfig());
73+
public ExecutableQuery executableQuery(String query) {
74+
return new InternalExecutableQuery(this, new Query(query), QueryConfig.defaultConfig());
7475
}
7576

7677
@Override
77-
public BookmarkManager queryTaskBookmarkManager() {
78+
public BookmarkManager executableQueryBookmarkManager() {
7879
return queryBookmarkManager;
7980
}
8081

driver/src/main/java/org/neo4j/driver/internal/InternalQueryTask.java renamed to driver/src/main/java/org/neo4j/driver/internal/InternalExecutableQuery.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@
2323
import java.util.Map;
2424
import java.util.stream.Collector;
2525
import org.neo4j.driver.Driver;
26+
import org.neo4j.driver.ExecutableQuery;
2627
import org.neo4j.driver.Query;
2728
import org.neo4j.driver.QueryConfig;
28-
import org.neo4j.driver.QueryTask;
2929
import org.neo4j.driver.Record;
3030
import org.neo4j.driver.SessionConfig;
3131
import org.neo4j.driver.TransactionCallback;
3232

33-
public class InternalQueryTask implements QueryTask {
33+
public class InternalExecutableQuery implements ExecutableQuery {
3434
private final Driver driver;
3535
private final Query query;
3636
private final QueryConfig config;
3737

38-
public InternalQueryTask(Driver driver, Query query, QueryConfig config) {
38+
public InternalExecutableQuery(Driver driver, Query query, QueryConfig config) {
3939
requireNonNull(driver, "driver must not be null");
4040
requireNonNull(query, "query must not be null");
4141
requireNonNull(config, "config must not be null");
@@ -45,23 +45,24 @@ public InternalQueryTask(Driver driver, Query query, QueryConfig config) {
4545
}
4646

4747
@Override
48-
public QueryTask withParameters(Map<String, Object> parameters) {
48+
public ExecutableQuery withParameters(Map<String, Object> parameters) {
4949
requireNonNull(parameters, "parameters must not be null");
50-
return new InternalQueryTask(driver, query.withParameters(parameters), config);
50+
return new InternalExecutableQuery(driver, query.withParameters(parameters), config);
5151
}
5252

5353
@Override
54-
public QueryTask withConfig(QueryConfig config) {
54+
public ExecutableQuery withConfig(QueryConfig config) {
5555
requireNonNull(config, "config must not be null");
56-
return new InternalQueryTask(driver, query, config);
56+
return new InternalExecutableQuery(driver, query, config);
5757
}
5858

5959
@Override
6060
public <A, R, T> T execute(Collector<Record, A, R> recordCollector, ResultFinisher<R, T> resultFinisher) {
6161
var sessionConfigBuilder = SessionConfig.builder();
6262
config.database().ifPresent(sessionConfigBuilder::withDatabase);
6363
config.impersonatedUser().ifPresent(sessionConfigBuilder::withImpersonatedUser);
64-
config.bookmarkManager(driver.queryTaskBookmarkManager()).ifPresent(sessionConfigBuilder::withBookmarkManager);
64+
config.bookmarkManager(driver.executableQueryBookmarkManager())
65+
.ifPresent(sessionConfigBuilder::withBookmarkManager);
6566
var supplier = recordCollector.supplier();
6667
var accumulator = recordCollector.accumulator();
6768
var finisher = recordCollector.finisher();

0 commit comments

Comments
 (0)