Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Commit 6d47ae3

Browse files
Use new typed session API.
1 parent 637870c commit 6d47ae3

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

neo4j-http/src/main/java/org/neo4j/http/db/DefaultNeo4jAdapter.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
import org.neo4j.driver.Record;
2626
import org.neo4j.driver.SessionConfig;
2727
import org.neo4j.driver.exceptions.Neo4jException;
28-
import org.neo4j.driver.reactive.RxQueryRunner;
29-
import org.neo4j.driver.reactive.RxSession;
28+
import org.neo4j.driver.reactivestreams.ReactiveQueryRunner;
29+
import org.neo4j.driver.reactivestreams.ReactiveResult;
30+
import org.neo4j.driver.reactivestreams.ReactiveSession;
3031
import org.neo4j.driver.summary.ResultSummary;
3132
import org.neo4j.http.config.ApplicationProperties;
3233
import org.reactivestreams.Publisher;
@@ -60,15 +61,13 @@ class DefaultNeo4jAdapter implements Neo4jAdapter {
6061
}
6162

6263
@Override
63-
@SuppressWarnings({"deprecation", "RedundantSuppression"})
6464
public Flux<Record> stream(Neo4jPrincipal principal, String database, Query query) {
6565

6666
return queryEvaluator.getExecutionRequirements(principal, query.text())
67-
.flatMapMany(requirements -> this.execute0(principal, database, requirements, q -> Flux.from(q.run(query).records())));
67+
.flatMapMany(requirements -> this.execute0(principal, database, requirements, q -> Mono.fromDirect(q.run(query)).flatMapMany(ReactiveResult::records)));
6868
}
6969

7070
@Override
71-
@SuppressWarnings({"deprecation", "RedundantSuppression"})
7271
public Mono<ResultContainer> run(Neo4jPrincipal principal, String database, AnnotatedQuery query, AnnotatedQuery... additionalQueries) {
7372

7473
Flux<AnnotatedQuery> queries = Flux.just(query);
@@ -83,9 +82,10 @@ record ResultAndSummary(EagerResult result, ResultSummary summary) {
8382
.flatMap(q -> Mono.fromDirect(this.execute0(principal, database, q.getT2(), runner -> {
8483
var annotatedQuery = q.getT1();
8584
var rxResult = runner.run(annotatedQuery.value());
86-
return Mono.fromDirect(rxResult.keys())
87-
.zipWith(Flux.from(rxResult.records()).collectList())
88-
.flatMap(v -> Mono.just(v).zipWith(Mono.fromDirect(rxResult.consume()), (t, s) -> Tuples.of(t.getT1(), t.getT2(), s)))
85+
return Mono.fromDirect(rxResult)
86+
.flatMap(reactiveResult -> Mono.just(reactiveResult.keys())
87+
.zipWith(Flux.from(reactiveResult.records()).collectList())
88+
.flatMap(v -> Mono.just(v).zipWith(Mono.fromDirect(reactiveResult.consume()), (t, s) -> Tuples.of(t.getT1(), t.getT2(), s))))
8989
.map(content -> new ResultAndSummary(EagerResult.success(content, annotatedQuery.includeStats(), annotatedQuery.resultDataContents(), driver.defaultTypeSystem()), content.getT3()));
9090
}))).onErrorResume(Neo4jException.class, e -> Mono.just(new ResultAndSummary(EagerResult.error(e), null)))
9191
)
@@ -99,8 +99,7 @@ record ResultAndSummary(EagerResult result, ResultSummary summary) {
9999
});
100100
}
101101

102-
@SuppressWarnings("deprecation")
103-
<T> Publisher<T> execute0(Neo4jPrincipal principal, String database, QueryEvaluator.ExecutionRequirements requirements, Function<RxQueryRunner, Publisher<T>> query) {
102+
<T> Publisher<T> execute0(Neo4jPrincipal principal, String database, QueryEvaluator.ExecutionRequirements requirements, Function<ReactiveQueryRunner, Publisher<T>> query) {
104103

105104
var sessionSupplier = queryEvaluator.isEnterpriseEdition().
106105
flatMap(v -> {
@@ -110,23 +109,23 @@ <T> Publisher<T> execute0(Neo4jPrincipal principal, String database, QueryEvalua
110109
.withDatabase(database)
111110
.withDefaultAccessMode(requirements.target() == QueryEvaluator.Target.WRITERS ? AccessMode.WRITE : AccessMode.READ)
112111
.build();
113-
return Mono.fromCallable(() -> driver.rxSession(sessionConfig));
112+
return Mono.fromCallable(() -> driver.reactiveSession(ReactiveSession.class, sessionConfig));
114113
});
115114

116115
Flux<T> flow;
117116
if (requirements.transactionMode() == QueryEvaluator.TransactionMode.IMPLICIT) {
118-
flow = Flux.usingWhen(sessionSupplier, query, RxSession::close);
117+
flow = Flux.usingWhen(sessionSupplier, query, ReactiveSession::close);
119118
} else {
120119
flow = switch (requirements.target()) {
121120
case WRITERS -> Flux.usingWhen(
122121
sessionSupplier,
123-
session -> session.writeTransaction(query::apply),
124-
RxSession::close
122+
session -> session.executeWrite(query::apply),
123+
ReactiveSession::close
125124
);
126125
case READERS -> Flux.usingWhen(
127126
sessionSupplier,
128-
session -> session.readTransaction(query::apply),
129-
RxSession::close
127+
session -> session.executeRead(query::apply),
128+
ReactiveSession::close
130129
);
131130
};
132131
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
<maven.compiler.release>${java.version}</maven.compiler.release>
109109
<maven.version>3.8.6</maven.version>
110110
<!-- Different name than the one managed by boot to proper manage it centrally and be able to override it -->
111-
<neo4j-driver.version>5.1.0</neo4j-driver.version>
111+
<neo4j-driver.version>5.0-SNAPSHOT</neo4j-driver.version>
112112
<neo4j.version>4.4.12</neo4j.version>
113113
<project.build.docs>${project.build.directory}/docs</project.build.docs>
114114
<project.build.docs.branch>main</project.build.docs.branch>

0 commit comments

Comments
 (0)