Skip to content

Commit 817f449

Browse files
committed
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
1 parent 6dd7c0c commit 817f449

File tree

13 files changed

+81
-159
lines changed

13 files changed

+81
-159
lines changed

driver/clirr-ignored-differences.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -412,19 +412,13 @@
412412
<difference>
413413
<className>org/neo4j/driver/Driver</className>
414414
<differenceType>7012</differenceType>
415-
<method>org.neo4j.driver.QueryTask queryTask(java.lang.String)</method>
415+
<method>org.neo4j.driver.ExecuteQueryBuilder executeQueryBuilder(java.lang.String)</method>
416416
</difference>
417417

418418
<difference>
419419
<className>org/neo4j/driver/Driver</className>
420420
<differenceType>7012</differenceType>
421-
<method>org.neo4j.driver.BookmarkManager queryBookmarkManager()</method>
422-
</difference>
423-
424-
<difference>
425-
<className>org/neo4j/driver/Driver</className>
426-
<differenceType>7012</differenceType>
427-
<method>org.neo4j.driver.BookmarkManager queryTaskBookmarkManager()</method>
421+
<method>org.neo4j.driver.BookmarkManager defaultExecuteQueryBookmarkManager()</method>
428422
</difference>
429423

430424
</differences>

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

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ public final class Config implements Serializable {
7575

7676
private static final Config EMPTY = builder().build();
7777

78-
private final BookmarkManager queryBookmarkManager;
79-
8078
/**
8179
* User defined logging
8280
*/
@@ -104,7 +102,6 @@ public final class Config implements Serializable {
104102
private final MetricsAdapter metricsAdapter;
105103

106104
private Config(ConfigBuilder builder) {
107-
this.queryBookmarkManager = builder.queryBookmarkManager;
108105
this.logging = builder.logging;
109106
this.logLeakedSessions = builder.logLeakedSessions;
110107

@@ -126,21 +123,6 @@ private Config(ConfigBuilder builder) {
126123
this.metricsAdapter = builder.metricsAdapter;
127124
}
128125

129-
/**
130-
* A {@link BookmarkManager} implementation for the driver to use on
131-
* {@link Driver#queryTask(String)} method and its variants by default.
132-
* <p>
133-
* Please note that sessions will not use this automatically, but it is possible to enable it explicitly
134-
* using {@link SessionConfig.Builder#withBookmarkManager(BookmarkManager)}.
135-
*
136-
* @return bookmark manager, must not be {@code null}
137-
* @since 5.5
138-
*/
139-
@Experimental
140-
public BookmarkManager queryTaskBookmarkManager() {
141-
return queryBookmarkManager;
142-
}
143-
144126
/**
145127
* Logging provider
146128
*
@@ -280,8 +262,6 @@ public String userAgent() {
280262
* Used to build new config instances
281263
*/
282264
public static final class ConfigBuilder {
283-
private BookmarkManager queryBookmarkManager =
284-
BookmarkManagers.defaultManager(BookmarkManagerConfig.builder().build());
285265
private Logging logging = DEV_NULL_LOGGING;
286266
private boolean logLeakedSessions;
287267
private int maxConnectionPoolSize = PoolSettings.DEFAULT_MAX_CONNECTION_POOL_SIZE;
@@ -301,24 +281,6 @@ public static final class ConfigBuilder {
301281

302282
private ConfigBuilder() {}
303283

304-
/**
305-
* Sets a {@link BookmarkManager} implementation for the driver to use on
306-
* {@link Driver#queryTask(String)} method and its variants by default.
307-
* <p>
308-
* Please note that sessions will not use this automatically, but it is possible to enable it explicitly
309-
* using {@link SessionConfig.Builder#withBookmarkManager(BookmarkManager)}.
310-
*
311-
* @param bookmarkManager bookmark manager, must not be {@code null}
312-
* @return this builder
313-
* @since 5.5
314-
*/
315-
@Experimental
316-
public ConfigBuilder withQueryTaskBookmarkManager(BookmarkManager bookmarkManager) {
317-
Objects.requireNonNull(bookmarkManager, "bookmarkManager must not be null");
318-
this.queryBookmarkManager = bookmarkManager;
319-
return this;
320-
}
321-
322284
/**
323285
* Provide a logging implementation for the driver to use. Java logging framework {@link java.util.logging} with {@link Level#INFO} is used by default.
324286
* 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: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,24 +64,24 @@
6464
*/
6565
public interface Driver extends AutoCloseable {
6666
/**
67-
* Creates a new {@link QueryTask} instance that executes a query in a managed transaction with automatic retries on
67+
* Creates a new {@link ExecuteQueryBuilder} instance that executes a query in a managed transaction with automatic retries on
6868
* retryable errors.
6969
*
7070
* @param query query string
7171
* @return new query task instance
7272
* @since 5.5
7373
*/
7474
@Experimental
75-
QueryTask queryTask(String query);
75+
ExecuteQueryBuilder executeQueryBuilder(String query);
7676

7777
/**
78-
* Returns an instance of {@link BookmarkManager} used by {@link QueryTask} instances by default.
78+
* Returns an instance of {@link BookmarkManager} used by {@link ExecuteQueryBuilder} instances by default.
7979
*
8080
* @return bookmark manager, must not be {@code null}
8181
* @since 5.6
8282
*/
8383
@Experimental
84-
BookmarkManager queryTaskBookmarkManager();
84+
BookmarkManager defaultExecuteQueryBookmarkManager();
8585

8686
/**
8787
* 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/ExecuteQueryBuilder.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,9 @@
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
42-
* {@link QueryConfig.Builder#withBookmarkManager(BookmarkManager)} on individual basis.
41+
* {@link ExecuteQueryConfig.Builder#withBookmarkManager(BookmarkManager)} on individual basis.
4342
* <p>
4443
* Sample usage:
4544
* <pre>
@@ -98,24 +97,24 @@
9897
* @since 5.5
9998
*/
10099
@Experimental
101-
public interface QueryTask {
100+
public interface ExecuteQueryBuilder {
102101
/**
103102
* Sets query parameters.
104103
*
105104
* @param parameters parameters map, must not be {@code null}
106105
* @return a new query task
107106
*/
108-
QueryTask withParameters(Map<String, Object> parameters);
107+
ExecuteQueryBuilder withParameters(Map<String, Object> parameters);
109108

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

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

driver/src/main/java/org/neo4j/driver/QueryConfig.java renamed to driver/src/main/java/org/neo4j/driver/ExecuteQueryConfig.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727
import org.neo4j.driver.util.Experimental;
2828

2929
/**
30-
* Query configuration used by {@link Driver#queryTask(String)} and its variants.
30+
* Query configuration used by {@link Driver#executeQueryBuilder(String)} and its variants.
3131
* @since 5.5
3232
*/
3333
@Experimental
34-
public final class QueryConfig implements Serializable {
34+
public final class ExecuteQueryConfig implements Serializable {
3535
@Serial
3636
private static final long serialVersionUID = -2632780731598141754L;
3737

38-
private static final QueryConfig DEFAULT = builder().build();
38+
private static final ExecuteQueryConfig DEFAULT = builder().build();
3939

4040
private final RoutingControl routing;
4141
private final String database;
@@ -48,11 +48,11 @@ public final class QueryConfig implements Serializable {
4848
*
4949
* @return config value
5050
*/
51-
public static QueryConfig defaultConfig() {
51+
public static ExecuteQueryConfig defaultConfig() {
5252
return DEFAULT;
5353
}
5454

55-
private QueryConfig(Builder builder) {
55+
private ExecuteQueryConfig(Builder builder) {
5656
this.routing = builder.routing;
5757
this.database = builder.database;
5858
this.impersonatedUser = builder.impersonatedUser;
@@ -113,7 +113,7 @@ public Optional<BookmarkManager> bookmarkManager(BookmarkManager defaultBookmark
113113
public boolean equals(Object o) {
114114
if (this == o) return true;
115115
if (o == null || getClass() != o.getClass()) return false;
116-
QueryConfig that = (QueryConfig) o;
116+
ExecuteQueryConfig that = (ExecuteQueryConfig) o;
117117
return useDefaultBookmarkManager == that.useDefaultBookmarkManager
118118
&& routing == that.routing
119119
&& Objects.equals(database, that.database)
@@ -137,7 +137,7 @@ public String toString() {
137137
}
138138

139139
/**
140-
* Builder used to configure {@link QueryConfig} which will be used to execute a query.
140+
* Builder used to configure {@link ExecuteQueryConfig} which will be used to execute a query.
141141
*/
142142
public static final class Builder {
143143
private RoutingControl routing = RoutingControl.WRITERS;
@@ -207,10 +207,10 @@ public Builder withBookmarkManager(BookmarkManager bookmarkManager) {
207207
/**
208208
* Create a config instance from this builder.
209209
*
210-
* @return a new {@link QueryConfig} instance.
210+
* @return a new {@link ExecuteQueryConfig} instance.
211211
*/
212-
public QueryConfig build() {
213-
return new QueryConfig(this);
212+
public ExecuteQueryConfig build() {
213+
return new ExecuteQueryConfig(this);
214214
}
215215
}
216216
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
import java.util.function.Supplier;
3333
import org.neo4j.driver.AuthToken;
3434
import org.neo4j.driver.AuthTokens;
35+
import org.neo4j.driver.BookmarkManager;
36+
import org.neo4j.driver.BookmarkManagerConfig;
37+
import org.neo4j.driver.BookmarkManagers;
3538
import org.neo4j.driver.Config;
3639
import org.neo4j.driver.Driver;
3740
import org.neo4j.driver.Logger;
@@ -269,8 +272,7 @@ protected InternalDriver createRoutingDriver(
269272
*/
270273
protected InternalDriver createDriver(
271274
SecurityPlan securityPlan, SessionFactory sessionFactory, MetricsProvider metricsProvider, Config config) {
272-
return new InternalDriver(
273-
config.queryTaskBookmarkManager(), securityPlan, sessionFactory, metricsProvider, config.logging());
275+
return new InternalDriver(securityPlan, sessionFactory, metricsProvider, config.logging());
274276
}
275277

276278
/**

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

Lines changed: 8 additions & 8 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;
2931
import org.neo4j.driver.Logger;
3032
import org.neo4j.driver.Logging;
3133
import org.neo4j.driver.Metrics;
3234
import org.neo4j.driver.Query;
33-
import org.neo4j.driver.QueryConfig;
34-
import org.neo4j.driver.QueryTask;
35+
import org.neo4j.driver.ExecuteQueryConfig;
36+
import org.neo4j.driver.ExecuteQueryBuilder;
3537
import org.neo4j.driver.Session;
3638
import org.neo4j.driver.SessionConfig;
3739
import org.neo4j.driver.async.AsyncSession;
@@ -47,7 +49,7 @@
4749
import org.neo4j.driver.types.TypeSystem;
4850

4951
public class InternalDriver implements Driver {
50-
private final BookmarkManager queryBookmarkManager;
52+
private final BookmarkManager queryBookmarkManager = BookmarkManagers.defaultManager(BookmarkManagerConfig.builder().build());
5153
private final SecurityPlan securityPlan;
5254
private final SessionFactory sessionFactory;
5355
private final Logger log;
@@ -56,25 +58,23 @@ public class InternalDriver implements Driver {
5658
private final MetricsProvider metricsProvider;
5759

5860
InternalDriver(
59-
BookmarkManager queryBookmarkManager,
6061
SecurityPlan securityPlan,
6162
SessionFactory sessionFactory,
6263
MetricsProvider metricsProvider,
6364
Logging logging) {
64-
this.queryBookmarkManager = queryBookmarkManager;
6565
this.securityPlan = securityPlan;
6666
this.sessionFactory = sessionFactory;
6767
this.metricsProvider = metricsProvider;
6868
this.log = logging.getLog(getClass());
6969
}
7070

7171
@Override
72-
public QueryTask queryTask(String query) {
73-
return new InternalQueryTask(this, new Query(query), QueryConfig.defaultConfig());
72+
public ExecuteQueryBuilder executeQueryBuilder(String query) {
73+
return new InternalExecuteQueryBuilder(this, new Query(query), ExecuteQueryConfig.defaultConfig());
7474
}
7575

7676
@Override
77-
public BookmarkManager queryTaskBookmarkManager() {
77+
public BookmarkManager defaultExecuteQueryBookmarkManager() {
7878
return queryBookmarkManager;
7979
}
8080

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@
2424
import java.util.stream.Collector;
2525
import org.neo4j.driver.Driver;
2626
import org.neo4j.driver.Query;
27-
import org.neo4j.driver.QueryConfig;
28-
import org.neo4j.driver.QueryTask;
27+
import org.neo4j.driver.ExecuteQueryConfig;
28+
import org.neo4j.driver.ExecuteQueryBuilder;
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 InternalExecuteQueryBuilder implements ExecuteQueryBuilder {
3434
private final Driver driver;
3535
private final Query query;
36-
private final QueryConfig config;
36+
private final ExecuteQueryConfig config;
3737

38-
public InternalQueryTask(Driver driver, Query query, QueryConfig config) {
38+
public InternalExecuteQueryBuilder(Driver driver, Query query, ExecuteQueryConfig 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,23 @@ public InternalQueryTask(Driver driver, Query query, QueryConfig config) {
4545
}
4646

4747
@Override
48-
public QueryTask withParameters(Map<String, Object> parameters) {
48+
public ExecuteQueryBuilder 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 InternalExecuteQueryBuilder(driver, query.withParameters(parameters), config);
5151
}
5252

5353
@Override
54-
public QueryTask withConfig(QueryConfig config) {
54+
public ExecuteQueryBuilder withConfig(ExecuteQueryConfig config) {
5555
requireNonNull(config, "config must not be null");
56-
return new InternalQueryTask(driver, query, config);
56+
return new InternalExecuteQueryBuilder(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.defaultExecuteQueryBookmarkManager()).ifPresent(sessionConfigBuilder::withBookmarkManager);
6565
var supplier = recordCollector.supplier();
6666
var accumulator = recordCollector.accumulator();
6767
var finisher = recordCollector.finisher();
@@ -99,7 +99,7 @@ public Map<String, Object> parameters() {
9999
}
100100

101101
// For testing only
102-
public QueryConfig config() {
102+
public ExecuteQueryConfig config() {
103103
return config;
104104
}
105105
}

0 commit comments

Comments
 (0)