From 3a5f2ba5e77b8bfe0d1bea0ed25bb2d27d46375d Mon Sep 17 00:00:00 2001 From: Michael Simons Date: Thu, 7 Sep 2023 16:05:29 +0200 Subject: [PATCH] Fix circular dependency of bookmarkmanagers. --- .../data/neo4j/config/AbstractNeo4jConfig.java | 10 +++++++--- .../data/neo4j/config/AbstractReactiveNeo4jConfig.java | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/data/neo4j/config/AbstractNeo4jConfig.java b/src/main/java/org/springframework/data/neo4j/config/AbstractNeo4jConfig.java index 06f7da157..43c8eab5e 100644 --- a/src/main/java/org/springframework/data/neo4j/config/AbstractNeo4jConfig.java +++ b/src/main/java/org/springframework/data/neo4j/config/AbstractNeo4jConfig.java @@ -49,7 +49,7 @@ public abstract class AbstractNeo4jConfig extends Neo4jConfigurationSupport { private ObjectProvider userSelectionProviders; @Autowired - private Neo4jBookmarkManager bookmarkManager; + private ObjectProvider bookmarkManagerProviders; /** * The driver to be used for interacting with Neo4j. @@ -70,10 +70,14 @@ public abstract class AbstractNeo4jConfig extends Neo4jConfigurationSupport { return Neo4jClient.with(driver) .withDatabaseSelectionProvider(databaseSelectionProvider) .withUserSelectionProvider(getUserSelectionProvider()) - .withNeo4jBookmarkManager(bookmarkManager) + .withNeo4jBookmarkManager(getBootBookmarkManager()) .build(); } + private Neo4jBookmarkManager getBootBookmarkManager() { + return this.bookmarkManagerProviders.getIfAvailable(Neo4jBookmarkManager::create); + } + @Nullable private UserSelectionProvider getUserSelectionProvider() { return this.userSelectionProviders == null ? null : this.userSelectionProviders.getIfUnique(); @@ -99,7 +103,7 @@ public abstract class AbstractNeo4jConfig extends Neo4jConfigurationSupport { .with(driver) .withDatabaseSelectionProvider(databaseSelectionProvider) .withUserSelectionProvider(getUserSelectionProvider()) - .withBookmarkManager(bookmarkManager) + .withBookmarkManager(getBootBookmarkManager()) .build(); } diff --git a/src/main/java/org/springframework/data/neo4j/config/AbstractReactiveNeo4jConfig.java b/src/main/java/org/springframework/data/neo4j/config/AbstractReactiveNeo4jConfig.java index 1846cde1b..ec5fcddef 100644 --- a/src/main/java/org/springframework/data/neo4j/config/AbstractReactiveNeo4jConfig.java +++ b/src/main/java/org/springframework/data/neo4j/config/AbstractReactiveNeo4jConfig.java @@ -49,7 +49,7 @@ public abstract class AbstractReactiveNeo4jConfig extends Neo4jConfigurationSupp private ObjectProvider userSelectionProviders; @Autowired - private Neo4jBookmarkManager bookmarkManager; + private ObjectProvider bookmarkManagerProviders; /** * The driver to be used for interacting with Neo4j. @@ -70,10 +70,14 @@ public abstract class AbstractReactiveNeo4jConfig extends Neo4jConfigurationSupp return ReactiveNeo4jClient.with(driver) .withDatabaseSelectionProvider(databaseSelectionProvider) .withUserSelectionProvider(getUserSelectionProvider()) - .withNeo4jBookmarkManager(bookmarkManager) + .withNeo4jBookmarkManager(getBootBookmarkManager()) .build(); } + private Neo4jBookmarkManager getBootBookmarkManager() { + return this.bookmarkManagerProviders.getIfAvailable(Neo4jBookmarkManager::createReactive); + } + @Nullable private ReactiveUserSelectionProvider getUserSelectionProvider() { return this.userSelectionProviders == null ? null : this.userSelectionProviders.getIfUnique(); @@ -99,7 +103,7 @@ public abstract class AbstractReactiveNeo4jConfig extends Neo4jConfigurationSupp return ReactiveNeo4jTransactionManager.with(driver) .withDatabaseSelectionProvider(databaseSelectionProvider) .withUserSelectionProvider(getUserSelectionProvider()) - .withBookmarkManager(bookmarkManager) + .withBookmarkManager(getBootBookmarkManager()) .build(); }