Skip to content

Commit 37f1dda

Browse files
author
Zhen Li
committed
Moved Bookmark into public API and then provided a string conversion method to convert string bookmarks to Bookmark
1 parent a0cf79a commit 37f1dda

32 files changed

+165
-34
lines changed

driver/src/main/java/org/neo4j/driver/internal/Bookmark.java renamed to driver/src/main/java/org/neo4j/driver/Bookmark.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver.internal;
19+
package org.neo4j.driver;
2020

2121
import java.io.Serializable;
2222

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Map;
2222

2323
import org.neo4j.driver.async.AsyncSession;
24-
import org.neo4j.driver.internal.Bookmark;
2524
import org.neo4j.driver.util.Resource;
2625

2726
/**

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.util.Optional;
2424

2525
import org.neo4j.driver.async.AsyncSession;
26-
import org.neo4j.driver.internal.Bookmark;
2726
import org.neo4j.driver.reactive.RxSession;
2827

2928
import static java.util.Objects.requireNonNull;

driver/src/main/java/org/neo4j/driver/async/AsyncSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.neo4j.driver.Transaction;
3030
import org.neo4j.driver.TransactionConfig;
3131
import org.neo4j.driver.Values;
32-
import org.neo4j.driver.internal.Bookmark;
32+
import org.neo4j.driver.Bookmark;
3333

3434
/**
3535
* Provides a context of work for database interactions.

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.Objects;
2626
import java.util.Set;
2727

28+
import org.neo4j.driver.Bookmark;
29+
2830
import static java.util.Objects.requireNonNull;
2931

3032
public final class InternalBookmark implements Bookmark
@@ -97,7 +99,7 @@ private static void assertInternalBookmark( Bookmark bookmark )
9799
{
98100
if ( !(bookmark instanceof InternalBookmark) )
99101
{
100-
throw new IllegalArgumentException( String.format( "Received bookmark '%s' is not generated by driver sessions.", bookmark ) );
102+
throw new IllegalArgumentException( String.format( "Received bookmark '%s' is not generated by a driver session.", bookmark ) );
101103
}
102104
}
103105

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Map;
2222

2323
import org.neo4j.driver.AccessMode;
24+
import org.neo4j.driver.Bookmark;
2425
import org.neo4j.driver.Session;
2526
import org.neo4j.driver.Statement;
2627
import org.neo4j.driver.StatementResult;

driver/src/main/java/org/neo4j/driver/internal/async/InternalAsyncSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.neo4j.driver.async.AsyncTransaction;
3030
import org.neo4j.driver.async.AsyncTransactionWork;
3131
import org.neo4j.driver.async.StatementResultCursor;
32-
import org.neo4j.driver.internal.Bookmark;
32+
import org.neo4j.driver.Bookmark;
3333
import org.neo4j.driver.internal.util.Futures;
3434

3535
import static java.util.Collections.emptyMap;

driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.neo4j.driver.TransactionConfig;
3030
import org.neo4j.driver.async.StatementResultCursor;
3131
import org.neo4j.driver.exceptions.ClientException;
32-
import org.neo4j.driver.internal.Bookmark;
32+
import org.neo4j.driver.Bookmark;
3333
import org.neo4j.driver.internal.BookmarkHolder;
3434
import org.neo4j.driver.internal.FailableCursor;
3535
import org.neo4j.driver.internal.InternalBookmark;

driver/src/main/java/org/neo4j/driver/internal/reactive/InternalRxSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.neo4j.driver.AccessMode;
2828
import org.neo4j.driver.Statement;
2929
import org.neo4j.driver.TransactionConfig;
30-
import org.neo4j.driver.internal.Bookmark;
30+
import org.neo4j.driver.Bookmark;
3131
import org.neo4j.driver.internal.async.NetworkSession;
3232
import org.neo4j.driver.internal.cursor.RxStatementResultCursor;
3333
import org.neo4j.driver.internal.util.Futures;

driver/src/main/java/org/neo4j/driver/reactive/RxSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.neo4j.driver.Statement;
2929
import org.neo4j.driver.TransactionConfig;
3030
import org.neo4j.driver.Values;
31-
import org.neo4j.driver.internal.Bookmark;
31+
import org.neo4j.driver.Bookmark;
3232

3333
/**
3434
* A reactive session is the same as {@link Session} except it provides a reactive API.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright (c) 2002-2019 "Neo4j,"
3+
* Neo4j Sweden AB [http://neo4j.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
*/
19+
package org.neo4j.driver.util;
20+
21+
import java.io.Serializable;
22+
import java.util.Collection;
23+
24+
import org.neo4j.driver.Bookmark;
25+
import org.neo4j.driver.internal.InternalBookmark;
26+
27+
/**
28+
* Utils for {@link Bookmark}. This class is deprecated and will be removed from public API in future versions.
29+
*/
30+
@Deprecated
31+
public final class BookmarkUtil
32+
{
33+
/**
34+
* Parse {@link Bookmark} from a string value. The bookmark string has to be a single bookmark string such as "aBookmarkString".
35+
* Use {@link BookmarkUtil#parse(Collection)} instead to parse multiple bookmark strings into one {@link Bookmark}.
36+
* @param value a bookmark string.
37+
* @return A {@link Bookmark bookmark}
38+
* @deprecated This method is deprecated and will be removed in future versions.
39+
* This method provides back-compatibility to convert string bookmarks used in previous driver versions to {@link Bookmark} which is used in this new driver version.
40+
* This method shall not be used to convert a bookmark string from {@link Bookmark} back to {@link Bookmark}.
41+
* A bookmark shall only be obtained via the driver and passed directly to the driver.
42+
* The content of the bookmark shall not be inspected or altered by any client application.
43+
*/
44+
@Deprecated
45+
public static Bookmark parse( String value )
46+
{
47+
return InternalBookmark.parse( value );
48+
}
49+
50+
/**
51+
* Parse {@link Bookmark} from a collection of bookmark strings. Each bookmark string in the collection has to be a single bookmark string such as "aBookmarkString".
52+
* Use {@link BookmarkUtil#parse(String)} instead to parse a single bookmark string into one {@link Bookmark}.
53+
* @param values a collections of bookmark string. The collection has to implement {@link Serializable}.
54+
* @return A {@link Bookmark bookmark}
55+
* @throws IllegalArgumentException if the collection of bookmark strings does not implement {@link Serializable}.
56+
* @deprecated This method is deprecated and will be removed in future versions.
57+
* This method provides back-compatibility to convert string bookmarks used in previous driver versions to {@link Bookmark} which is used in this new driver version.
58+
* This method shall not be used to convert a bookmark string from {@link Bookmark} back to {@link Bookmark}.
59+
* A bookmark shall only be obtained via the driver and passed directly to the driver.
60+
* The content of the bookmark shall not be inspected or altered by any client application.
61+
*/
62+
@Deprecated
63+
public static Bookmark parse( Collection<String> values )
64+
{
65+
return InternalBookmark.parse( values );
66+
}
67+
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import java.util.List;
3030
import java.util.stream.Stream;
3131

32-
import org.neo4j.driver.internal.Bookmark;
33-
3432
import static java.util.Collections.emptyList;
3533
import static org.hamcrest.CoreMatchers.equalTo;
3634
import static org.junit.Assert.assertEquals;

driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.neo4j.driver.Session;
2727
import org.neo4j.driver.Transaction;
2828
import org.neo4j.driver.exceptions.ClientException;
29-
import org.neo4j.driver.internal.Bookmark;
29+
import org.neo4j.driver.Bookmark;
3030
import org.neo4j.driver.internal.util.DisabledOnNeo4jWith;
3131
import org.neo4j.driver.internal.util.EnabledOnNeo4jWith;
3232
import org.neo4j.driver.internal.util.Neo4jFeature;
@@ -39,9 +39,9 @@
3939
import static org.junit.jupiter.api.Assertions.assertThrows;
4040
import static org.neo4j.driver.SessionConfig.builder;
4141
import static org.neo4j.driver.internal.InternalBookmark.parse;
42-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkContainsSingleValue;
43-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsEmpty;
44-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarksContainsSingleUniqueValues;
42+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkContainsSingleValue;
43+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsEmpty;
44+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarksContainsSingleUniqueValues;
4545

4646
@ParallelizableIT
4747
class BookmarkIT

driver/src/test/java/org/neo4j/driver/integration/RoutingDriverBoltKitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
import org.neo4j.driver.exceptions.ServiceUnavailableException;
4747
import org.neo4j.driver.exceptions.SessionExpiredException;
4848
import org.neo4j.driver.exceptions.TransientException;
49-
import org.neo4j.driver.internal.Bookmark;
49+
import org.neo4j.driver.Bookmark;
5050
import org.neo4j.driver.internal.DriverFactory;
5151
import org.neo4j.driver.internal.cluster.RoutingSettings;
5252
import org.neo4j.driver.internal.retry.RetrySettings;

driver/src/test/java/org/neo4j/driver/integration/RoutingDriverMultidatabaseBoltKitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import org.neo4j.driver.exceptions.FatalDiscoveryException;
3636
import org.neo4j.driver.exceptions.ServiceUnavailableException;
3737
import org.neo4j.driver.integration.RoutingDriverBoltKitTest.PortBasedServerAddressComparator;
38-
import org.neo4j.driver.internal.Bookmark;
38+
import org.neo4j.driver.Bookmark;
3939
import org.neo4j.driver.net.ServerAddress;
4040
import org.neo4j.driver.net.ServerAddressResolver;
4141
import org.neo4j.driver.util.StubServer;

driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import org.neo4j.driver.async.AsyncSession;
3939
import org.neo4j.driver.async.StatementResultCursor;
4040
import org.neo4j.driver.exceptions.TransientException;
41-
import org.neo4j.driver.internal.Bookmark;
41+
import org.neo4j.driver.Bookmark;
4242
import org.neo4j.driver.internal.cluster.RoutingSettings;
4343
import org.neo4j.driver.internal.messaging.Message;
4444
import org.neo4j.driver.internal.messaging.request.GoodbyeMessage;

driver/src/test/java/org/neo4j/driver/integration/SessionIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@
9191
import static org.neo4j.driver.SessionConfig.forDatabase;
9292
import static org.neo4j.driver.Values.parameters;
9393
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
94-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkContainsSingleValue;
95-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsEmpty;
96-
import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsNotEmpty;
94+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkContainsSingleValue;
95+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsEmpty;
96+
import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsNotEmpty;
9797
import static org.neo4j.driver.internal.util.Matchers.arithmeticError;
9898
import static org.neo4j.driver.internal.util.Matchers.connectionAcquisitionTimeoutError;
9999
import static org.neo4j.driver.internal.util.Neo4jFeature.BOLT_V4;

driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
import org.neo4j.driver.exceptions.ClientException;
4343
import org.neo4j.driver.exceptions.NoSuchRecordException;
4444
import org.neo4j.driver.exceptions.ServiceUnavailableException;
45-
import org.neo4j.driver.internal.Bookmark;
45+
import org.neo4j.driver.Bookmark;
4646
import org.neo4j.driver.summary.ResultSummary;
4747
import org.neo4j.driver.summary.StatementType;
4848
import org.neo4j.driver.types.Node;

driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
import org.neo4j.driver.Value;
4343
import org.neo4j.driver.exceptions.ClientException;
4444
import org.neo4j.driver.exceptions.ServiceUnavailableException;
45-
import org.neo4j.driver.internal.Bookmark;
45+
import org.neo4j.driver.Bookmark;
4646
import org.neo4j.driver.internal.util.EnabledOnNeo4jWith;
4747
import org.neo4j.driver.reactive.RxSession;
4848
import org.neo4j.driver.reactive.RxStatementResult;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import org.neo4j.driver.AccessMode;
3131
import org.neo4j.driver.AuthTokens;
32+
import org.neo4j.driver.Bookmark;
3233
import org.neo4j.driver.Config;
3334
import org.neo4j.driver.Driver;
3435
import org.neo4j.driver.GraphDatabase;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Arrays;
2828
import java.util.List;
2929

30+
import org.neo4j.driver.Bookmark;
3031
import org.neo4j.driver.internal.util.Iterables;
3132

3233
import static java.util.Arrays.asList;

driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.neo4j.driver.TransactionConfig;
3131
import org.neo4j.driver.async.StatementResultCursor;
3232
import org.neo4j.driver.exceptions.ClientException;
33-
import org.neo4j.driver.internal.Bookmark;
33+
import org.neo4j.driver.Bookmark;
3434
import org.neo4j.driver.internal.InternalBookmark;
3535
import org.neo4j.driver.internal.messaging.BoltProtocol;
3636
import org.neo4j.driver.internal.messaging.request.PullMessage;

driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtils.java renamed to driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.util.HashSet;
2424
import java.util.List;
2525

26-
import org.neo4j.driver.internal.Bookmark;
26+
import org.neo4j.driver.Bookmark;
2727
import org.neo4j.driver.internal.InternalBookmark;
2828

2929
import static org.hamcrest.Matchers.equalTo;
@@ -36,7 +36,7 @@
3636
import static org.junit.jupiter.api.Assertions.assertTrue;
3737
import static org.neo4j.driver.internal.util.Iterables.asList;
3838

39-
public class BookmarkUtils
39+
public class BookmarkUtil
4040
{
4141
/**
4242
* Bookmark is empty.
@@ -79,6 +79,18 @@ public static void assertBookmarkContainsSingleValue( Bookmark bookmark, Matcher
7979
assertThat( values.get( 0 ), matcher );
8080
}
8181

82+
/**
83+
* Bookmark contains values matching the requirement set by matcher.
84+
*/
85+
public static void assertBookmarkContainsValues( Bookmark bookmark, Matcher<Iterable<String>> matcher )
86+
{
87+
assertNotNull( bookmark );
88+
assertThat( bookmark, instanceOf( InternalBookmark.class ) );
89+
90+
List<String> values = asList( ((InternalBookmark) bookmark).values() );
91+
assertThat( values, matcher );
92+
}
93+
8294
/**
8395
* Each bookmark contains one single value and the values are all different from each other.
8496
*/

driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.neo4j.driver.exceptions.UntrustedServerException;
3131
import org.neo4j.driver.exceptions.value.Uncoercible;
3232
import org.neo4j.driver.internal.BoltServerAddress;
33-
import org.neo4j.driver.internal.Bookmark;
33+
import org.neo4j.driver.Bookmark;
3434
import org.neo4j.driver.internal.InternalBookmark;
3535
import org.neo4j.driver.internal.spi.Connection;
3636
import org.neo4j.driver.internal.summary.InternalInputPosition;

driver/src/test/java/org/neo4j/driver/stress/AbstractContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.concurrent.atomic.AtomicInteger;
2222
import java.util.concurrent.atomic.AtomicLong;
2323

24-
import org.neo4j.driver.internal.Bookmark;
24+
import org.neo4j.driver.Bookmark;
2525
import org.neo4j.driver.summary.ResultSummary;
2626

2727
public abstract class AbstractContext

driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
import org.neo4j.driver.async.AsyncSession;
6464
import org.neo4j.driver.async.AsyncTransaction;
6565
import org.neo4j.driver.async.StatementResultCursor;
66-
import org.neo4j.driver.internal.Bookmark;
66+
import org.neo4j.driver.Bookmark;
6767
import org.neo4j.driver.internal.InternalDriver;
6868
import org.neo4j.driver.internal.logging.DevNullLogger;
6969
import org.neo4j.driver.internal.util.EnabledOnNeo4jWith;

driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
import org.neo4j.driver.exceptions.SessionExpiredException;
6060
import org.neo4j.driver.integration.NestedQueries;
6161
import org.neo4j.driver.internal.BoltServerAddress;
62-
import org.neo4j.driver.internal.Bookmark;
62+
import org.neo4j.driver.Bookmark;
6363
import org.neo4j.driver.internal.cluster.RoutingSettings;
6464
import org.neo4j.driver.internal.retry.RetrySettings;
6565
import org.neo4j.driver.internal.util.DisabledOnNeo4jWith;

0 commit comments

Comments
 (0)