diff --git a/pom.xml b/pom.xml index ab66976dd..4da593feb 100644 --- a/pom.xml +++ b/pom.xml @@ -98,7 +98,7 @@ ${java.version} ${java.version} 2.23.4 - 2.0.0-alpha02 + 2.0.0-alpha03 3.5.2 UTF-8 1.2.1 diff --git a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultNeo4jClient.java b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultNeo4jClient.java index 72d964b32..9518de531 100644 --- a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultNeo4jClient.java +++ b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultNeo4jClient.java @@ -72,7 +72,7 @@ class DefaultNeo4jClient implements Neo4jClient { StatementRunner statementRunner = retrieveTransaction(driver, targetDatabase) .map(StatementRunner.class::cast) - .orElseGet(() -> driver.session(defaultSessionParameters(targetDatabase))); + .orElseGet(() -> driver.session(defaultSessionConfig(targetDatabase))); return (AutoCloseableStatementRunner) Proxy.newProxyInstance(StatementRunner.class.getClassLoader(), new Class[] { AutoCloseableStatementRunner.class }, diff --git a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultReactiveNeo4jClient.java b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultReactiveNeo4jClient.java index 02b58f911..bf85b11c7 100644 --- a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultReactiveNeo4jClient.java +++ b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/DefaultReactiveNeo4jClient.java @@ -69,7 +69,7 @@ class DefaultReactiveNeo4jClient implements ReactiveNeo4jClient { return retrieveReactiveTransaction(driver, targetDatabase) .map(rxTransaction -> new RxStatementRunnerHolder(rxTransaction, Mono.empty(), Mono.empty())) // .switchIfEmpty( - Mono.using(() -> driver.rxSession(defaultSessionParameters(targetDatabase)), + Mono.using(() -> driver.rxSession(defaultSessionConfig(targetDatabase)), session -> Mono.from(session.beginTransaction()) .map(tx -> new RxStatementRunnerHolder(tx, tx.commit(), tx.rollback())), RxSession::close) ); diff --git a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManager.java b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManager.java index 7f9bc2bfd..9d4567fe7 100644 --- a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManager.java +++ b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManager.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.Optional; import org.apiguardian.api.API; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; @@ -96,7 +95,7 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } // Otherwise we open a session and synchronize it. - Session session = driver.session(defaultSessionParameters(targetDatabase)); + Session session = driver.session(defaultSessionConfig(targetDatabase)); Transaction transaction = session.beginTransaction(TransactionConfig.empty()); // Manually create a new synchronization connectionHolder = new Neo4jTransactionHolder(targetDatabase, session, transaction); @@ -144,14 +143,13 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager TransactionConfig transactionConfig = createTransactionConfigFrom(definition); boolean readOnly = definition.isReadOnly(); - AccessMode accessMode = readOnly ? AccessMode.READ : AccessMode.WRITE; - List bookmarks = Collections.emptyList(); // TODO Bookmarksupport + TransactionSynchronizationManager.setCurrentTransactionReadOnly(readOnly); try { - Session session = this.driver - .session(t -> t.withDefaultAccessMode(accessMode).withBookmarks(bookmarks).withDatabase(databaseName)); + List bookmarks = Collections.emptyList(); // TODO Bookmarksupport; + Session session = this.driver.session(sessionConfig(readOnly, bookmarks, databaseName)); Transaction nativeTransaction = session.beginTransaction(transactionConfig); Neo4jTransactionHolder transactionHolder = diff --git a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionUtils.java b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionUtils.java index c99ecc7a4..8fa0bfe71 100644 --- a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionUtils.java +++ b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionUtils.java @@ -20,11 +20,11 @@ package org.neo4j.springframework.data.core.transaction; import java.time.Duration; import java.util.Collections; -import java.util.function.Consumer; +import java.util.List; import org.neo4j.driver.AccessMode; -import org.neo4j.driver.SessionParametersTemplate; import org.neo4j.driver.TransactionConfig; +import org.neo4j.driver.internal.SessionConfig; import org.springframework.lang.Nullable; import org.springframework.transaction.IllegalTransactionStateException; import org.springframework.transaction.InvalidIsolationLevelException; @@ -43,15 +43,21 @@ public final class Neo4jTransactionUtils { * @param databaseName The database to use. May be null, which then designates the default database. * @return Session parameters to configure the default session used */ - public static Consumer defaultSessionParameters(@Nullable String databaseName) { - return (SessionParametersTemplate t) -> { - t.withDefaultAccessMode(AccessMode.WRITE) - .withBookmarks(Collections.EMPTY_LIST); + public static SessionConfig defaultSessionConfig(@Nullable String databaseName) { + return sessionConfig(false, Collections.emptyList(), databaseName); + } - if (databaseName != null) { - t.withDatabase(databaseName); - } - }; + public static SessionConfig sessionConfig(boolean readOnly, List bookmarks, + @Nullable String databaseName) { + SessionConfig.Builder builder = SessionConfig.builder() + .withDefaultAccessMode(readOnly ? AccessMode.READ : AccessMode.WRITE) + .withBookmarks(bookmarks); + + if (databaseName != null) { + builder.withDatabase(databaseName); + } + + return builder.build(); } /** diff --git a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManager.java b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManager.java index 84618de65..83b4651c4 100644 --- a/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManager.java +++ b/spring-data-neo4j/src/main/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManager.java @@ -26,7 +26,6 @@ import java.util.Collections; import java.util.List; import org.apiguardian.api.API; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.reactive.RxSession; @@ -85,7 +84,7 @@ public class ReactiveNeo4jTransactionManager extends AbstractReactiveTransaction // Otherwise open up a new native transaction return Mono.defer(() -> { - RxSession session = driver.rxSession(defaultSessionParameters(targetDatabase)); + RxSession session = driver.rxSession(defaultSessionConfig(targetDatabase)); return Mono.from(session.beginTransaction(TransactionConfig.empty())).map(tx -> { ReactiveNeo4jTransactionHolder newConnectionHolder = new ReactiveNeo4jTransactionHolder( @@ -147,13 +146,11 @@ public class ReactiveNeo4jTransactionManager extends AbstractReactiveTransaction TransactionConfig transactionConfig = createTransactionConfigFrom(transactionDefinition); boolean readOnly = transactionDefinition.isReadOnly(); - AccessMode accessMode = readOnly ? AccessMode.READ : AccessMode.WRITE; - List bookmarks = Collections.emptyList(); // TODO Bookmarksupport transactionSynchronizationManager.setCurrentTransactionReadOnly(readOnly); - RxSession session = this.driver - .rxSession(t -> t.withDefaultAccessMode(accessMode).withBookmarks(bookmarks).withDatabase(databaseName)); + List bookmarks = Collections.emptyList(); // TODO Bookmarksupport; + RxSession session = this.driver.rxSession(sessionConfig(readOnly, bookmarks, databaseName)); return Mono.from(session.beginTransaction(transactionConfig)).doOnNext(nativeTransaction -> { diff --git a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/Neo4jClientTest.java b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/Neo4jClientTest.java index 9c88e464f..16ed606d6 100644 --- a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/Neo4jClientTest.java +++ b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/Neo4jClientTest.java @@ -32,7 +32,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.BiFunction; -import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Stream; @@ -46,13 +45,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; import org.neo4j.driver.Session; import org.neo4j.driver.StatementResult; import org.neo4j.driver.Values; -import org.neo4j.driver.internal.SessionParameters; +import org.neo4j.driver.internal.SessionConfig; import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.types.TypeSystem; @@ -65,10 +63,7 @@ class Neo4jClientTest { @Mock private Driver driver; - private ArgumentCaptor sessionTemplateCaptor = ArgumentCaptor.forClass(Consumer.class); - - @Mock - private SessionParameters.Template sessionParametersTemplate; + private ArgumentCaptor configArgumentCaptor = ArgumentCaptor.forClass(SessionConfig.class); @Mock private Session session; @@ -91,11 +86,7 @@ class Neo4jClientTest { @BeforeEach void prepareMocks() { - when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); - when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) - .thenReturn(sessionParametersTemplate); - - when(driver.session(any(Consumer.class))).thenReturn(session); + when(driver.session(any(SessionConfig.class))).thenReturn(session); when(driver.defaultTypeSystem()).thenReturn(typeSystem); } @@ -150,7 +141,6 @@ class Neo4jClientTest { @Test void databaseSelectionShouldBePossibleOnlyOnce() { - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(session.run(anyString(), anyMap())).thenReturn(statementResult); when(statementResult.stream()).thenReturn(Stream.of(record1, record2)); @@ -200,8 +190,6 @@ class Neo4jClientTest { @Test void withDatabase() { - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); - Neo4jClient client = Neo4jClient.create(driver); Optional result = client .delegateTo(runner -> Optional.of(42)) @@ -419,12 +407,13 @@ class Neo4jClientTest { void verifyDatabaseSelection(String targetDatabase) { - verify(driver).session(sessionTemplateCaptor.capture()); - sessionTemplateCaptor.getValue().accept(sessionParametersTemplate); + verify(driver).session(configArgumentCaptor.capture()); + SessionConfig config = configArgumentCaptor.getValue(); + if (targetDatabase != null) { - verify(sessionParametersTemplate).withDatabase(targetDatabase); + assertThat(config.database()).isPresent().contains(targetDatabase); } else { - verify(sessionParametersTemplate, never()).withDatabase(any()); + assertThat(config.database()).isEmpty(); } } diff --git a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/ReactiveNeo4jClientTest.java b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/ReactiveNeo4jClientTest.java index 1f81c773f..edbc53fa7 100644 --- a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/ReactiveNeo4jClientTest.java +++ b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/ReactiveNeo4jClientTest.java @@ -18,6 +18,7 @@ */ package org.neo4j.springframework.data.core; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.mockito.hamcrest.MockitoHamcrest.argThat; @@ -31,7 +32,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -42,11 +42,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; import org.neo4j.driver.Values; -import org.neo4j.driver.internal.SessionParameters; +import org.neo4j.driver.internal.SessionConfig; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxStatementResult; import org.neo4j.driver.reactive.RxTransaction; @@ -70,10 +69,7 @@ class ReactiveNeo4jClientTest { @Mock private TypeSystem typeSystem; - private ArgumentCaptor sessionTemplateCaptor = ArgumentCaptor.forClass(Consumer.class); - - @Mock - private SessionParameters.Template sessionParametersTemplate; + private ArgumentCaptor configArgumentCaptor = ArgumentCaptor.forClass(SessionConfig.class); @Mock private RxSession session; @@ -98,11 +94,7 @@ class ReactiveNeo4jClientTest { when(driver.defaultTypeSystem()).thenReturn(typeSystem); - when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); - when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) - .thenReturn(sessionParametersTemplate); - - when(driver.rxSession(any(Consumer.class))).thenReturn(session); + when(driver.rxSession(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction()).thenReturn(Mono.just(transaction)); when(session.close()).thenReturn(Mono.empty()); @@ -164,7 +156,6 @@ class ReactiveNeo4jClientTest { @Test void databaseSelectionShouldBePossibleOnlyOnce() { - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(transaction.run(anyString(), anyMap())).thenReturn(statementResult); when(transaction.commit()).thenReturn(Mono.empty()); when(statementResult.records()).thenReturn(Flux.just(record1, record2)); @@ -224,7 +215,6 @@ class ReactiveNeo4jClientTest { @Test void withDatabase() { - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(transaction.commit()).thenReturn(Mono.empty()); ReactiveNeo4jClient client = ReactiveNeo4jClient.create(driver); @@ -421,12 +411,14 @@ class ReactiveNeo4jClientTest { } void verifyDatabaseSelection(String targetDatabase) { - verify(driver).rxSession(sessionTemplateCaptor.capture()); - sessionTemplateCaptor.getValue().accept(sessionParametersTemplate); + + verify(driver).rxSession(configArgumentCaptor.capture()); + SessionConfig config = configArgumentCaptor.getValue(); + if (targetDatabase != null) { - verify(sessionParametersTemplate).withDatabase(targetDatabase); + assertThat(config.database()).isPresent().contains(targetDatabase); } else { - verify(sessionParametersTemplate, never()).withDatabase(any()); + assertThat(config.database()).isEmpty(); } } } diff --git a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/TransactionHandlingTest.java b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/TransactionHandlingTest.java index a4775f3ac..8c762d01c 100644 --- a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/TransactionHandlingTest.java +++ b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/TransactionHandlingTest.java @@ -18,6 +18,7 @@ */ package org.neo4j.springframework.data.core; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -25,7 +26,6 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Consumer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -35,12 +35,11 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; -import org.neo4j.driver.internal.SessionParameters; +import org.neo4j.driver.internal.SessionConfig; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.types.TypeSystem; @@ -64,16 +63,12 @@ class TransactionHandlingTest { @Mock private TypeSystem typeSystem; - @Mock - private SessionParameters.Template sessionParametersTemplate; - @BeforeEach void prepareMocks() { when(driver.defaultTypeSystem()).thenReturn(typeSystem); } - @AfterEach void verifyTypeSystemOnSession() { @@ -92,13 +87,9 @@ class TransactionHandlingTest { @Test void shouldCallCloseOnSession() { - ArgumentCaptor consumerCaptor = ArgumentCaptor.forClass(Consumer.class); + ArgumentCaptor configArgumentCaptor = ArgumentCaptor.forClass(SessionConfig.class); - when(driver.session(any(Consumer.class))).thenReturn(session); - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); - when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); - when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) - .thenReturn(sessionParametersTemplate); + when(driver.session(any(SessionConfig.class))).thenReturn(session); // Make template acquire session DefaultNeo4jClient neo4jClient = new DefaultNeo4jClient(driver); @@ -106,14 +97,14 @@ class TransactionHandlingTest { s.run("MATCH (n) RETURN n"); } - verify(driver).session(consumerCaptor.capture()); - consumerCaptor.getValue().accept(sessionParametersTemplate); - verify(sessionParametersTemplate).withDatabase("aDatabase"); + verify(driver).session(configArgumentCaptor.capture()); + SessionConfig sessionConfig = configArgumentCaptor.getValue(); + assertThat(sessionConfig.database()).isPresent().contains("aDatabase"); verify(session).run(any(String.class)); verify(session).close(); - verifyNoMoreInteractions(driver, sessionParametersTemplate, session, transaction); + verifyNoMoreInteractions(driver, session, transaction); } @Test @@ -121,7 +112,7 @@ class TransactionHandlingTest { AtomicBoolean transactionIsOpen = new AtomicBoolean(true); - when(driver.session(any(Consumer.class))).thenReturn(session); + when(driver.session(any(SessionConfig.class))).thenReturn(session); when(session.isOpen()).thenReturn(true); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); // Mock closing of the transaction @@ -168,14 +159,14 @@ class TransactionHandlingTest { DefaultReactiveNeo4jClient neo4jClient = new DefaultReactiveNeo4jClient(driver); neo4jClient.query("RETURN 1").in("aDatabase").fetch().one(); - verify(driver, never()).rxSession(any(Consumer.class)); + verify(driver, never()).rxSession(any(SessionConfig.class)); verifyZeroInteractions(driver, session); } @Test void shouldCloseUnmanagedSessionOnComplete() { - when(driver.rxSession(any(Consumer.class))).thenReturn(session); + when(driver.rxSession(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction()).thenReturn(Mono.just(transaction)); when(transaction.commit()).thenReturn(Mono.empty()); when(session.close()).thenReturn(Mono.empty()); @@ -188,7 +179,7 @@ class TransactionHandlingTest { .expectNext("1") .verifyComplete(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(); verify(transaction).commit(); verify(transaction).rollback(); @@ -199,8 +190,7 @@ class TransactionHandlingTest { @Test void shouldCloseUnmanagedSessionOnError() { - - when(driver.rxSession(any(Consumer.class))).thenReturn(session); + when(driver.rxSession(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction()).thenReturn(Mono.just(transaction)); when(transaction.rollback()).thenReturn(Mono.empty()); when(session.close()).thenReturn(Mono.empty()); @@ -214,7 +204,7 @@ class TransactionHandlingTest { .expectError(SomeException.class) .verify(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(); verify(transaction).commit(); verify(transaction).rollback(); diff --git a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManagerTest.java b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManagerTest.java index 929efab97..ed0ed467b 100644 --- a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManagerTest.java +++ b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/Neo4jTransactionManagerTest.java @@ -24,7 +24,6 @@ import static org.neo4j.springframework.data.core.transaction.Neo4jTransactionMa import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Consumer; import javax.transaction.Status; import javax.transaction.UserTransaction; @@ -41,6 +40,7 @@ import org.neo4j.driver.Session; import org.neo4j.driver.StatementResult; import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; +import org.neo4j.driver.internal.SessionConfig; import org.neo4j.driver.types.TypeSystem; import org.neo4j.springframework.data.core.Neo4jClient; import org.springframework.transaction.TransactionStatus; @@ -85,7 +85,7 @@ class Neo4jTransactionManagerTest { void triggerCommitCorrectly() { when(driver.defaultTypeSystem()).thenReturn(typeSystem); - when(driver.session(any(Consumer.class))).thenReturn(session); + when(driver.session(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); when(transaction.run(anyString(), anyMap())).thenReturn(statementResult); when(session.isOpen()).thenReturn(true); @@ -99,7 +99,7 @@ class Neo4jTransactionManagerTest { txManager.commit(txStatus); - verify(driver).session(any(Consumer.class)); + verify(driver).session(any(SessionConfig.class)); verify(session).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); @@ -120,7 +120,7 @@ class Neo4jTransactionManagerTest { AtomicBoolean sessionIsOpen = new AtomicBoolean(true); AtomicBoolean transactionIsOpen = new AtomicBoolean(true); - when(driver.session(any(Consumer.class))).thenReturn(session); + when(driver.session(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); doAnswer(invocation -> { @@ -172,7 +172,7 @@ class Neo4jTransactionManagerTest { } }); - verify(driver).session(any(Consumer.class)); + verify(driver).session(any(SessionConfig.class)); verify(session).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); @@ -214,7 +214,7 @@ class Neo4jTransactionManagerTest { } }); - verify(driver).session(any(Consumer.class)); + verify(driver).session(any(SessionConfig.class)); verify(session).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); @@ -257,7 +257,7 @@ class Neo4jTransactionManagerTest { verify(userTransaction).begin(); - verify(driver).session(any(Consumer.class)); + verify(driver).session(any(SessionConfig.class)); verify(session, times(2)).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); @@ -298,7 +298,7 @@ class Neo4jTransactionManagerTest { verify(userTransaction).begin(); verify(userTransaction).rollback(); - verify(driver).session(any(Consumer.class)); + verify(driver).session(any(SessionConfig.class)); verify(session, times(2)).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); diff --git a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManagerTest.java b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManagerTest.java index f6b6d4b78..f6e239296 100644 --- a/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManagerTest.java +++ b/spring-data-neo4j/src/test/java/org/neo4j/springframework/data/core/transaction/ReactiveNeo4jTransactionManagerTest.java @@ -28,8 +28,6 @@ import io.r2dbc.h2.H2ConnectionFactory; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import java.util.function.Consumer; - import javax.transaction.UserTransaction; import org.junit.jupiter.api.BeforeEach; @@ -42,6 +40,7 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import org.neo4j.driver.Driver; import org.neo4j.driver.TransactionConfig; +import org.neo4j.driver.internal.SessionConfig; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; import org.springframework.data.r2dbc.connectionfactory.R2dbcTransactionManager; @@ -71,7 +70,7 @@ class ReactiveNeo4jTransactionManagerTest { @BeforeEach void setUp() { - when(driver.rxSession(any(Consumer.class))).thenReturn(session); + when(driver.rxSession(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(Mono.just(transaction)); when(transaction.rollback()).thenReturn(Mono.empty()); when(transaction.commit()).thenReturn(Mono.empty()); @@ -106,7 +105,7 @@ class ReactiveNeo4jTransactionManagerTest { .expectNextCount(1L) .verifyComplete(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(any(TransactionConfig.class)); verify(session).close(); @@ -133,7 +132,7 @@ class ReactiveNeo4jTransactionManagerTest { .expectNextCount(1L) .verifyComplete(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(any(TransactionConfig.class)); verify(session).close(); @@ -164,7 +163,7 @@ class ReactiveNeo4jTransactionManagerTest { .expectNextCount(1L) .verifyComplete(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(any(TransactionConfig.class)); verify(session).close(); @@ -195,7 +194,7 @@ class ReactiveNeo4jTransactionManagerTest { .expectNextCount(1L) .verifyComplete(); - verify(driver).rxSession(any(Consumer.class)); + verify(driver).rxSession(any(SessionConfig.class)); verify(session).beginTransaction(any(TransactionConfig.class)); verify(session).close();