2
pom.xml
2
pom.xml
@@ -101,7 +101,7 @@
|
||||
<maven.compiler.release>${java.version}</maven.compiler.release>
|
||||
<mockito>${mockito.version}</mockito>
|
||||
<mockito.version>4.4.0</mockito.version>
|
||||
<neo4j-java-driver.version>5.4.0</neo4j-java-driver.version>
|
||||
<neo4j-java-driver.version>5.6.0</neo4j-java-driver.version>
|
||||
<neo4j-migrations.version>1.13.1</neo4j-migrations.version>
|
||||
<neo4j.version>4.4.8</neo4j.version>
|
||||
<objenesis.version>3.0.1</objenesis.version>
|
||||
|
||||
@@ -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> neo4JConversions) {
|
||||
|
||||
return Neo4jMappingContext.builder().withNeo4jConversions(resolve(neo4JConversions)).withTypeSystem(driver.defaultTypeSystem()).build();
|
||||
return Neo4jMappingContext.builder().withNeo4jConversions(resolve(neo4JConversions)).withTypeSystem(TypeSystem.getDefault()).build();
|
||||
}
|
||||
|
||||
@Produces @Singleton
|
||||
|
||||
@@ -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<T> 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<T> optionalValue = result.stream().map(partialMappingFunction(typeSystem)).filter(Objects::nonNull).findFirst();
|
||||
Optional<T> 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<T> values = result.stream().map(partialMappingFunction(typeSystem)).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
Collection<T> values = result.stream().map(partialMappingFunction(TypeSystem.getDefault())).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
ResultSummaries.process(result.consume());
|
||||
return values;
|
||||
} catch (RuntimeException e) {
|
||||
|
||||
@@ -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<T> executeWith(Tuple2<String, Map<String, Object>> 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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<SessionConfig> 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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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> bookmark = Set.of(new BookmarkForTesting("blubb"));
|
||||
|
||||
Reference in New Issue
Block a user