Skip to content

Commit d339b93

Browse files
authored
Update BookmarkManagerConfig (#1291)
* Update BookmarkManagerConfig `BookmarkSupplier` renamed to `BookmarksSupplier`. * Renamed TestkitBookmarkConsumer to TestkitBookmarksConsumer
1 parent 018f32b commit d339b93

File tree

9 files changed

+57
-54
lines changed

9 files changed

+57
-54
lines changed

driver/src/main/java/org/neo4j/driver/BookmarkManagerConfig.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Collections;
2222
import java.util.Map;
2323
import java.util.Objects;
24+
import java.util.Optional;
2425
import java.util.Set;
2526
import java.util.function.BiConsumer;
2627

@@ -29,13 +30,13 @@
2930
*/
3031
public final class BookmarkManagerConfig {
3132
private final Map<String, Set<Bookmark>> initialBookmarks;
32-
private final BiConsumer<String, Set<Bookmark>> bookmarkConsumer;
33-
private final BookmarkSupplier bookmarkSupplier;
33+
private final BiConsumer<String, Set<Bookmark>> bookmarksConsumer;
34+
private final BookmarksSupplier bookmarksSupplier;
3435

3536
private BookmarkManagerConfig(BookmarkManagerConfigBuilder builder) {
3637
this.initialBookmarks = builder.initialBookmarks;
37-
this.bookmarkConsumer = builder.bookmarkConsumer;
38-
this.bookmarkSupplier = builder.bookmarkSupplier;
38+
this.bookmarksConsumer = builder.bookmarksConsumer;
39+
this.bookmarksSupplier = builder.bookmarksSupplier;
3940
}
4041

4142
/**
@@ -57,30 +58,30 @@ public Map<String, Set<Bookmark>> initialBookmarks() {
5758
}
5859

5960
/**
60-
* Returns a bookmark update listener that will be notified when database bookmarks are updated.
61+
* Returns bookmarks consumer that will be notified when database bookmarks are updated.
6162
*
62-
* @return the update listener or {@code null}
63+
* @return the bookmarks consumer
6364
*/
64-
public BiConsumer<String, Set<Bookmark>> updateListener() {
65-
return bookmarkConsumer;
65+
public Optional<BiConsumer<String, Set<Bookmark>>> bookmarksConsumer() {
66+
return Optional.ofNullable(bookmarksConsumer);
6667
}
6768

6869
/**
69-
* Returns bookmark supplier that will be used by the bookmark manager when getting bookmarks.
70+
* Returns bookmarks supplier that will be used by the bookmark manager when getting bookmarks.
7071
*
71-
* @return the bookmark supplier or {@code null}
72+
* @return the bookmark supplier
7273
*/
73-
public BookmarkSupplier bookmarkSupplier() {
74-
return bookmarkSupplier;
74+
public Optional<BookmarksSupplier> bookmarksSupplier() {
75+
return Optional.ofNullable(bookmarksSupplier);
7576
}
7677

7778
/**
7879
* Builder used to configure {@link BookmarkManagerConfig} which will be used to create a bookmark manager.
7980
*/
8081
public static class BookmarkManagerConfigBuilder {
8182
private Map<String, Set<Bookmark>> initialBookmarks = Collections.emptyMap();
82-
private BiConsumer<String, Set<Bookmark>> bookmarkConsumer;
83-
private BookmarkSupplier bookmarkSupplier;
83+
private BiConsumer<String, Set<Bookmark>> bookmarksConsumer;
84+
private BookmarksSupplier bookmarksSupplier;
8485

8586
private BookmarkManagerConfigBuilder() {}
8687

@@ -97,30 +98,30 @@ public BookmarkManagerConfigBuilder withInitialBookmarks(Map<String, Set<Bookmar
9798
}
9899

99100
/**
100-
* Provide a bookmark consumer.
101+
* Provide bookmarks consumer.
101102
* <p>
102103
* The consumer will be called outside bookmark manager's synchronisation lock.
103104
*
104-
* @param bookmarkConsumer bookmark consumer
105+
* @param bookmarksConsumer bookmarks consumer
105106
* @return this builder
106107
*/
107-
public BookmarkManagerConfigBuilder withBookmarkConsumer(BiConsumer<String, Set<Bookmark>> bookmarkConsumer) {
108-
this.bookmarkConsumer = bookmarkConsumer;
108+
public BookmarkManagerConfigBuilder withBookmarksConsumer(BiConsumer<String, Set<Bookmark>> bookmarksConsumer) {
109+
this.bookmarksConsumer = bookmarksConsumer;
109110
return this;
110111
}
111112

112113
/**
113-
* Provide a bookmark supplier.
114+
* Provide bookmarks supplier.
114115
* <p>
115116
* The supplied bookmarks will be served alongside the bookmarks served by the bookmark manager. The supplied bookmarks will not be stored nor managed by the bookmark manager.
116117
* <p>
117118
* The supplier will be called outside bookmark manager's synchronisation lock.
118119
*
119-
* @param bookmarkSupplier the bookmarks supplier
120+
* @param bookmarksSupplier the bookmarks supplier
120121
* @return this builder
121122
*/
122-
public BookmarkManagerConfigBuilder withBookmarkSupplier(BookmarkSupplier bookmarkSupplier) {
123-
this.bookmarkSupplier = bookmarkSupplier;
123+
public BookmarkManagerConfigBuilder withBookmarksSupplier(BookmarksSupplier bookmarksSupplier) {
124+
this.bookmarksSupplier = bookmarksSupplier;
124125
return this;
125126
}
126127

driver/src/main/java/org/neo4j/driver/BookmarkManagers.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ public interface BookmarkManagers {
3131
* @return the bookmark manager
3232
*/
3333
static BookmarkManager defaultManager(BookmarkManagerConfig config) {
34-
return new Neo4jBookmarkManager(config.initialBookmarks(), config.updateListener(), config.bookmarkSupplier());
34+
return new Neo4jBookmarkManager(
35+
config.initialBookmarks(),
36+
config.bookmarksConsumer().orElse(null),
37+
config.bookmarksSupplier().orElse(null));
3538
}
3639
}

driver/src/main/java/org/neo4j/driver/BookmarkSupplier.java renamed to driver/src/main/java/org/neo4j/driver/BookmarksSupplier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* <p>
2626
* Implementations must avoid calling driver.
2727
*/
28-
public interface BookmarkSupplier {
28+
public interface BookmarksSupplier {
2929
/**
3030
* Supplies a set of bookmarks for a given database.
3131
*

driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import java.util.stream.Collectors;
3535
import org.neo4j.driver.Bookmark;
3636
import org.neo4j.driver.BookmarkManager;
37-
import org.neo4j.driver.BookmarkSupplier;
37+
import org.neo4j.driver.BookmarksSupplier;
3838

3939
/**
4040
* A basic {@link BookmarkManager} implementation.
@@ -47,16 +47,16 @@ public final class Neo4jBookmarkManager implements BookmarkManager {
4747

4848
private final Map<String, Set<Bookmark>> databaseToBookmarks = new HashMap<>();
4949
private final BiConsumer<String, Set<Bookmark>> updateListener;
50-
private final BookmarkSupplier bookmarkSupplier;
50+
private final BookmarksSupplier bookmarksSupplier;
5151

5252
public Neo4jBookmarkManager(
5353
Map<String, Set<Bookmark>> initialBookmarks,
5454
BiConsumer<String, Set<Bookmark>> updateListener,
55-
BookmarkSupplier bookmarkSupplier) {
55+
BookmarksSupplier bookmarksSupplier) {
5656
Objects.requireNonNull(initialBookmarks, "initialBookmarks must not be null");
5757
this.databaseToBookmarks.putAll(initialBookmarks);
5858
this.updateListener = updateListener;
59-
this.bookmarkSupplier = bookmarkSupplier;
59+
this.bookmarksSupplier = bookmarksSupplier;
6060
}
6161

6262
@Override
@@ -82,9 +82,9 @@ public void updateBookmarks(String database, Set<Bookmark> previousBookmarks, Se
8282
public Set<Bookmark> getBookmarks(String database) {
8383
var immutableBookmarks = executeWithLock(
8484
rwLock.readLock(), () -> databaseToBookmarks.getOrDefault(database, Collections.emptySet()));
85-
if (bookmarkSupplier != null) {
85+
if (bookmarksSupplier != null) {
8686
var bookmarks = new HashSet<>(immutableBookmarks);
87-
bookmarks.addAll(bookmarkSupplier.getBookmarks(database));
87+
bookmarks.addAll(bookmarksSupplier.getBookmarks(database));
8888
immutableBookmarks = Collections.unmodifiableSet(bookmarks);
8989
}
9090
return immutableBookmarks;
@@ -95,9 +95,9 @@ public Set<Bookmark> getAllBookmarks() {
9595
var immutableBookmarks = executeWithLock(rwLock.readLock(), () -> databaseToBookmarks.values().stream()
9696
.flatMap(Collection::stream))
9797
.collect(Collectors.toUnmodifiableSet());
98-
if (bookmarkSupplier != null) {
98+
if (bookmarksSupplier != null) {
9999
var bookmarks = new HashSet<>(immutableBookmarks);
100-
bookmarks.addAll(bookmarkSupplier.getAllBookmarks());
100+
bookmarks.addAll(bookmarksSupplier.getAllBookmarks());
101101
immutableBookmarks = Collections.unmodifiableSet(bookmarks);
102102
}
103103
return immutableBookmarks;

driver/src/test/java/org/neo4j/driver/BookmarkManagerConfigTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import static org.junit.jupiter.api.Assertions.assertEquals;
2222
import static org.junit.jupiter.api.Assertions.assertNotNull;
23-
import static org.junit.jupiter.api.Assertions.assertNull;
2423
import static org.junit.jupiter.api.Assertions.assertTrue;
2524
import static org.mockito.Mockito.mock;
2625

@@ -40,8 +39,8 @@ void shouldReturnDefaultValues() {
4039
// THEN
4140
assertNotNull(config.initialBookmarks());
4241
assertTrue(config.initialBookmarks().isEmpty());
43-
assertNull(config.updateListener());
44-
assertNull(config.bookmarkSupplier());
42+
assertTrue(config.bookmarksConsumer().isEmpty());
43+
assertTrue(config.bookmarksSupplier().isEmpty());
4544
}
4645

4746
@Test
@@ -54,8 +53,8 @@ void shouldReturnInitialBookmarks() {
5453

5554
// WHEN & THEN
5655
assertEquals(bookmarks, config.initialBookmarks());
57-
assertNull(config.updateListener());
58-
assertNull(config.bookmarkSupplier());
56+
assertTrue(config.bookmarksConsumer().isEmpty());
57+
assertTrue(config.bookmarksSupplier().isEmpty());
5958
}
6059

6160
@Test
@@ -65,30 +64,30 @@ void shouldReturnUpdateListener() {
6564

6665
// WHEN
6766
config = BookmarkManagerConfig.builder()
68-
.withBookmarkConsumer(updateListener)
67+
.withBookmarksConsumer(updateListener)
6968
.build();
7069

7170
// WHEN & THEN
7271
assertNotNull(config.initialBookmarks());
7372
assertTrue(config.initialBookmarks().isEmpty());
74-
assertEquals(updateListener, config.updateListener());
75-
assertNull(config.bookmarkSupplier());
73+
assertEquals(updateListener, config.bookmarksConsumer().orElse(null));
74+
assertTrue(config.bookmarksSupplier().isEmpty());
7675
}
7776

7877
@Test
7978
void shouldReturnBookmarkSupplier() {
8079
// GIVEN
81-
var bookmarkSupplier = mock(BookmarkSupplier.class);
80+
var bookmarkSupplier = mock(BookmarksSupplier.class);
8281

8382
// WHEN
8483
config = BookmarkManagerConfig.builder()
85-
.withBookmarkSupplier(bookmarkSupplier)
84+
.withBookmarksSupplier(bookmarkSupplier)
8685
.build();
8786

8887
// WHEN & THEN
8988
assertNotNull(config.initialBookmarks());
9089
assertTrue(config.initialBookmarks().isEmpty());
91-
assertNull(config.updateListener());
92-
assertEquals(bookmarkSupplier, config.bookmarkSupplier());
90+
assertTrue(config.bookmarksConsumer().isEmpty());
91+
assertEquals(bookmarkSupplier, config.bookmarksSupplier().orElse(null));
9392
}
9493
}

driver/src/test/java/org/neo4j/driver/internal/Neo4jBookmarkManagerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import java.util.stream.Collectors;
3232
import org.junit.jupiter.api.Test;
3333
import org.neo4j.driver.Bookmark;
34-
import org.neo4j.driver.BookmarkSupplier;
34+
import org.neo4j.driver.BookmarksSupplier;
3535

3636
class Neo4jBookmarkManagerTest {
3737
Neo4jBookmarkManager manager;
@@ -102,7 +102,7 @@ void shouldGetBookmarksFromBookmarkSupplier() {
102102
// GIVEN
103103
var initialBookmark = Bookmark.from("SY:000001");
104104
var initialBookmarks = Map.of(DatabaseNameUtil.SYSTEM_DATABASE_NAME, Set.of(initialBookmark));
105-
var bookmarkSupplier = mock(BookmarkSupplier.class);
105+
var bookmarkSupplier = mock(BookmarksSupplier.class);
106106
var supplierBookmark = Bookmark.from("SY:000002");
107107
given(bookmarkSupplier.getBookmarks(DatabaseNameUtil.SYSTEM_DATABASE_NAME))
108108
.willReturn(Set.of(supplierBookmark));
@@ -121,7 +121,7 @@ void shouldGetAllBookmarksFromBookmarkSupplier() {
121121
// GIVEN
122122
var initialBookmark = Bookmark.from("SY:000001");
123123
var initialBookmarks = Map.of(DatabaseNameUtil.SYSTEM_DATABASE_NAME, Set.of(initialBookmark));
124-
var bookmarkSupplier = mock(BookmarkSupplier.class);
124+
var bookmarkSupplier = mock(BookmarksSupplier.class);
125125
var supplierBookmark = Bookmark.from("SY:000002");
126126
given(bookmarkSupplier.getAllBookmarks()).willReturn(Set.of(supplierBookmark));
127127
manager = new Neo4jBookmarkManager(initialBookmarks, null, bookmarkSupplier);

testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/NewDriver.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ public TestkitResponse process(TestkitState testkitState) {
128128
var managerConfigBuilder =
129129
org.neo4j.driver.BookmarkManagerConfig.builder().withInitialBookmarks(initialBookmarks);
130130
if (managerConfig.isBookmarksSupplierRegistered()) {
131-
managerConfigBuilder = managerConfigBuilder.withBookmarkSupplier(
132-
new TestkitBookmarkSupplier(testkitState, this::dispatchTestkitCallback));
131+
managerConfigBuilder = managerConfigBuilder.withBookmarksSupplier(
132+
new TestkitBookmarksSupplier(testkitState, this::dispatchTestkitCallback));
133133
}
134134
if (managerConfig.isBookmarksConsumerRegistered()) {
135-
managerConfigBuilder = managerConfigBuilder.withBookmarkConsumer(
136-
new TestkitBookmarkConsumer(testkitState, this::dispatchTestkitCallback));
135+
managerConfigBuilder = managerConfigBuilder.withBookmarksConsumer(
136+
new TestkitBookmarksConsumer(testkitState, this::dispatchTestkitCallback));
137137
}
138138
var manager = BookmarkManagers.defaultManager(managerConfigBuilder.build());
139139
configBuilder.withBookmarkManager(manager);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.neo4j.driver.Bookmark;
3131

3232
@RequiredArgsConstructor
33-
class TestkitBookmarkConsumer implements BiConsumer<String, Set<Bookmark>> {
33+
class TestkitBookmarksConsumer implements BiConsumer<String, Set<Bookmark>> {
3434
private final TestkitState testkitState;
3535
private final BiFunction<TestkitState, TestkitCallback, CompletionStage<TestkitCallbackResult>> dispatchFunction;
3636

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
import neo4j.org.testkit.backend.messages.responses.BookmarksSupplierRequest;
2929
import neo4j.org.testkit.backend.messages.responses.TestkitCallback;
3030
import org.neo4j.driver.Bookmark;
31-
import org.neo4j.driver.BookmarkSupplier;
31+
import org.neo4j.driver.BookmarksSupplier;
3232

3333
@RequiredArgsConstructor
34-
class TestkitBookmarkSupplier implements BookmarkSupplier {
34+
class TestkitBookmarksSupplier implements BookmarksSupplier {
3535
private final TestkitState testkitState;
3636
private final BiFunction<TestkitState, TestkitCallback, CompletionStage<TestkitCallbackResult>> dispatchFunction;
3737

0 commit comments

Comments
 (0)