From edaa4ce77aad385254dc7ddfa5d10a56db3624f6 Mon Sep 17 00:00:00 2001 From: Michael Simons Date: Wed, 22 Mar 2023 15:19:53 +0100 Subject: [PATCH] GH-2699 - Upgrade Java Driver to 5.6.0. Closes #2699. --- pom.xml | 2 +- .../config/Neo4jCdiConfigurationSupport.java | 3 ++- .../data/neo4j/core/DefaultNeo4jClient.java | 8 +++---- .../core/DefaultReactiveNeo4jClient.java | 4 +--- .../data/neo4j/core/Neo4jClientTest.java | 3 --- .../neo4j/core/ReactiveNeo4jClientTest.java | 7 ------ .../neo4j/core/TransactionHandlingTest.java | 23 +++---------------- .../Neo4jTransactionManagerTest.java | 2 -- 8 files changed, 10 insertions(+), 42 deletions(-) diff --git a/pom.xml b/pom.xml index 08c481ffb..ba8d35e4e 100644 --- a/pom.xml +++ b/pom.xml @@ -101,7 +101,7 @@ ${java.version} ${mockito.version} 4.4.0 - 5.4.0 + 5.6.0 1.13.1 4.4.8 3.0.1 diff --git a/src/main/java/org/springframework/data/neo4j/config/Neo4jCdiConfigurationSupport.java b/src/main/java/org/springframework/data/neo4j/config/Neo4jCdiConfigurationSupport.java index 0859cd97f..b725b0000 100644 --- a/src/main/java/org/springframework/data/neo4j/config/Neo4jCdiConfigurationSupport.java +++ b/src/main/java/org/springframework/data/neo4j/config/Neo4jCdiConfigurationSupport.java @@ -19,6 +19,7 @@ import org.apiguardian.api.API; import org.neo4j.cypherdsl.core.renderer.Configuration; import org.neo4j.cypherdsl.core.renderer.Renderer; import org.neo4j.driver.Driver; +import org.neo4j.driver.types.TypeSystem; import org.springframework.data.neo4j.core.DatabaseSelectionProvider; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.data.neo4j.core.Neo4jOperations; @@ -89,7 +90,7 @@ class Neo4jCdiConfigurationSupport { @Produces @Singleton public Neo4jMappingContext neo4jMappingContext(@SuppressWarnings("CdiInjectionPointsInspection") Driver driver, @Any Instance neo4JConversions) { - return Neo4jMappingContext.builder().withNeo4jConversions(resolve(neo4JConversions)).withTypeSystem(driver.defaultTypeSystem()).build(); + return Neo4jMappingContext.builder().withNeo4jConversions(resolve(neo4JConversions)).withTypeSystem(TypeSystem.getDefault()).build(); } @Produces @Singleton diff --git a/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java b/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java index 51477fd57..6d08d6306 100644 --- a/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java +++ b/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java @@ -62,7 +62,6 @@ import org.springframework.util.StringUtils; final class DefaultNeo4jClient implements Neo4jClient { private final Driver driver; - private final TypeSystem typeSystem; private @Nullable final DatabaseSelectionProvider databaseSelectionProvider; private @Nullable final UserSelectionProvider userSelectionProvider; private final ConversionService conversionService; @@ -75,7 +74,6 @@ final class DefaultNeo4jClient implements Neo4jClient { DefaultNeo4jClient(Builder builder) { this.driver = builder.driver; - this.typeSystem = driver.defaultTypeSystem(); this.databaseSelectionProvider = builder.databaseSelectionProvider; this.userSelectionProvider = builder.userSelectionProvider; @@ -452,7 +450,7 @@ final class DefaultNeo4jClient implements Neo4jClient { try (QueryRunner statementRunner = getQueryRunner(this.databaseSelection, this.impersonatedUser)) { Result result = runnableStatement.runWith(statementRunner); Optional optionalValue = result.hasNext() ? - Optional.ofNullable(mappingFunction.apply(typeSystem, result.single())) : + Optional.ofNullable(mappingFunction.apply(TypeSystem.getDefault(), result.single())) : Optional.empty(); ResultSummaries.process(result.consume()); return optionalValue; @@ -468,7 +466,7 @@ final class DefaultNeo4jClient implements Neo4jClient { try (QueryRunner statementRunner = getQueryRunner(this.databaseSelection, this.impersonatedUser)) { Result result = runnableStatement.runWith(statementRunner); - Optional optionalValue = result.stream().map(partialMappingFunction(typeSystem)).filter(Objects::nonNull).findFirst(); + Optional optionalValue = result.stream().map(partialMappingFunction(TypeSystem.getDefault())).filter(Objects::nonNull).findFirst(); ResultSummaries.process(result.consume()); return optionalValue; } catch (RuntimeException e) { @@ -483,7 +481,7 @@ final class DefaultNeo4jClient implements Neo4jClient { try (QueryRunner statementRunner = getQueryRunner(this.databaseSelection, this.impersonatedUser)) { Result result = runnableStatement.runWith(statementRunner); - Collection values = result.stream().map(partialMappingFunction(typeSystem)).filter(Objects::nonNull).collect(Collectors.toList()); + Collection values = result.stream().map(partialMappingFunction(TypeSystem.getDefault())).filter(Objects::nonNull).collect(Collectors.toList()); ResultSummaries.process(result.consume()); return values; } catch (RuntimeException e) { diff --git a/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java b/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java index a9de67c50..d1e94ec50 100644 --- a/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java +++ b/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java @@ -65,7 +65,6 @@ import java.util.function.Supplier; final class DefaultReactiveNeo4jClient implements ReactiveNeo4jClient { private final Driver driver; - private final TypeSystem typeSystem; private @Nullable final ReactiveDatabaseSelectionProvider databaseSelectionProvider; private @Nullable final ReactiveUserSelectionProvider userSelectionProvider; private final ConversionService conversionService; @@ -78,7 +77,6 @@ final class DefaultReactiveNeo4jClient implements ReactiveNeo4jClient { DefaultReactiveNeo4jClient(Builder builder) { this.driver = builder.driver; - this.typeSystem = driver.defaultTypeSystem(); this.databaseSelectionProvider = builder.databaseSelectionProvider; this.userSelectionProvider = builder.impersonatedUserProvider; @@ -418,7 +416,7 @@ final class DefaultReactiveNeo4jClient implements ReactiveNeo4jClient { Flux executeWith(Tuple2> t, ReactiveQueryRunner runner) { return Flux.usingWhen(Flux.from(runner.run(t.getT1(), t.getT2())), - result -> Flux.from(result.records()).mapNotNull(r -> mappingFunction.apply(typeSystem, r)), + result -> Flux.from(result.records()).mapNotNull(r -> mappingFunction.apply(TypeSystem.getDefault(), r)), result -> Flux.from(result.consume()).doOnNext(ResultSummaries::process)); } diff --git a/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java b/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java index 2222e2b08..4c350c0b9 100644 --- a/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java @@ -90,7 +90,6 @@ class Neo4jClientTest { void prepareMocks() { when(driver.session(any(SessionConfig.class))).thenReturn(session); - when(driver.defaultTypeSystem()).thenReturn(typeSystem); when(session.lastBookmarks()).thenReturn(Set.of(Mockito.mock(Bookmark.class))); } @@ -308,8 +307,6 @@ class Neo4jClientTest { for (String invalidDatabaseName : invalidDatabaseNames) { assertThatIllegalArgumentException().isThrownBy(() -> client.query("RETURN 1").in(invalidDatabaseName)); } - - verify(driver).defaultTypeSystem(); } @Test // GH-2159 diff --git a/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java b/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java index f64bda693..fd2c3dbae 100644 --- a/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java @@ -33,7 +33,6 @@ import org.neo4j.driver.Values; import org.neo4j.driver.reactivestreams.ReactiveResult; import org.neo4j.driver.reactivestreams.ReactiveSession; import org.neo4j.driver.summary.ResultSummary; -import org.neo4j.driver.types.TypeSystem; import org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils; import org.springframework.lang.Nullable; import org.springframework.util.ReflectionUtils; @@ -70,8 +69,6 @@ class ReactiveNeo4jClientTest { @Mock private Driver driver; - @Mock private TypeSystem typeSystem; - private ArgumentCaptor configArgumentCaptor = ArgumentCaptor.forClass(SessionConfig.class); @Mock private ReactiveSession session; @@ -86,8 +83,6 @@ class ReactiveNeo4jClientTest { void prepareMocks() { - when(driver.defaultTypeSystem()).thenReturn(typeSystem); - when(driver.session(eq(ReactiveSession.class), any(SessionConfig.class))).thenReturn(session); when(session.lastBookmarks()).thenReturn(Set.of(Mockito.mock(Bookmark.class))); @@ -308,8 +303,6 @@ class ReactiveNeo4jClientTest { for (String invalidDatabaseName : invalidDatabaseNames) { assertThatIllegalArgumentException().isThrownBy(() -> client.query("RETURN 1").in(invalidDatabaseName)); } - - verify(driver).defaultTypeSystem(); } @Test // GH-2159 diff --git a/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java b/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java index 1fab214af..a9e2f22a5 100644 --- a/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java @@ -26,13 +26,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - import java.util.concurrent.atomic.AtomicBoolean; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -47,10 +42,12 @@ import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.reactivestreams.ReactiveSession; import org.neo4j.driver.reactivestreams.ReactiveTransaction; -import org.neo4j.driver.types.TypeSystem; import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager; import org.springframework.transaction.support.TransactionTemplate; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + /** * Ensure correct behaviour of both imperative and reactive clients in and outside Springs transaction management. * @@ -63,20 +60,6 @@ class TransactionHandlingTest { @Mock private Session session; - @Mock private TypeSystem typeSystem; - - @BeforeEach - void prepareMocks() { - - when(driver.defaultTypeSystem()).thenReturn(typeSystem); - } - - @AfterEach - void verifyTypeSystemOnSession() { - - verify(driver).defaultTypeSystem(); - } - @Nested class Neo4jClientTest { diff --git a/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java b/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java index cb5b62d7b..ef6521b8c 100644 --- a/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java @@ -91,7 +91,6 @@ class Neo4jTransactionManagerTest { @Test void triggerCommitCorrectly() { - when(driver.defaultTypeSystem()).thenReturn(typeSystem); when(driver.session(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); when(transaction.run(anyString(), anyMap())).thenReturn(statementResult); @@ -122,7 +121,6 @@ class Neo4jTransactionManagerTest { @Test void usesBookmarksCorrectly() throws Exception { - when(driver.defaultTypeSystem()).thenReturn(typeSystem); when(driver.session(any(SessionConfig.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); Set bookmark = Set.of(new BookmarkForTesting("blubb"));