diff --git a/driver/src/main/java/org/neo4j/driver/internal/Bookmark.java b/driver/src/main/java/org/neo4j/driver/Bookmark.java similarity index 97% rename from driver/src/main/java/org/neo4j/driver/internal/Bookmark.java rename to driver/src/main/java/org/neo4j/driver/Bookmark.java index 4649215a95..6c5fbb7d64 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/Bookmark.java +++ b/driver/src/main/java/org/neo4j/driver/Bookmark.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.neo4j.driver.internal; +package org.neo4j.driver; import java.io.Serializable; diff --git a/driver/src/main/java/org/neo4j/driver/Session.java b/driver/src/main/java/org/neo4j/driver/Session.java index 176b8f5ea0..a790653340 100644 --- a/driver/src/main/java/org/neo4j/driver/Session.java +++ b/driver/src/main/java/org/neo4j/driver/Session.java @@ -21,7 +21,6 @@ import java.util.Map; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.internal.Bookmark; import org.neo4j.driver.util.Resource; /** diff --git a/driver/src/main/java/org/neo4j/driver/SessionConfig.java b/driver/src/main/java/org/neo4j/driver/SessionConfig.java index 6d73b51e4c..69010907d8 100644 --- a/driver/src/main/java/org/neo4j/driver/SessionConfig.java +++ b/driver/src/main/java/org/neo4j/driver/SessionConfig.java @@ -23,7 +23,6 @@ import java.util.Optional; import org.neo4j.driver.async.AsyncSession; -import org.neo4j.driver.internal.Bookmark; import org.neo4j.driver.reactive.RxSession; import static java.util.Objects.requireNonNull; diff --git a/driver/src/main/java/org/neo4j/driver/async/AsyncSession.java b/driver/src/main/java/org/neo4j/driver/async/AsyncSession.java index 36e5f52a65..56c3ef5e57 100644 --- a/driver/src/main/java/org/neo4j/driver/async/AsyncSession.java +++ b/driver/src/main/java/org/neo4j/driver/async/AsyncSession.java @@ -29,7 +29,7 @@ import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Values; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; /** * Provides a context of work for database interactions. diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalBookmark.java b/driver/src/main/java/org/neo4j/driver/internal/InternalBookmark.java index 4150c8151b..c44530da92 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalBookmark.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalBookmark.java @@ -25,6 +25,8 @@ import java.util.Objects; import java.util.Set; +import org.neo4j.driver.Bookmark; + import static java.util.Objects.requireNonNull; public final class InternalBookmark implements Bookmark @@ -97,7 +99,7 @@ private static void assertInternalBookmark( Bookmark bookmark ) { if ( !(bookmark instanceof InternalBookmark) ) { - throw new IllegalArgumentException( String.format( "Received bookmark '%s' is not generated by driver sessions.", bookmark ) ); + throw new IllegalArgumentException( String.format( "Received bookmark '%s' is not generated by a driver session.", bookmark ) ); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalSession.java b/driver/src/main/java/org/neo4j/driver/internal/InternalSession.java index 1a95dc85c4..ea861449fe 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalSession.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalSession.java @@ -21,6 +21,7 @@ import java.util.Map; import org.neo4j.driver.AccessMode; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.Session; import org.neo4j.driver.Statement; import org.neo4j.driver.StatementResult; diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/InternalAsyncSession.java b/driver/src/main/java/org/neo4j/driver/internal/async/InternalAsyncSession.java index fb82cbe351..1a306c16d7 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/InternalAsyncSession.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/InternalAsyncSession.java @@ -29,7 +29,7 @@ import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.AsyncTransactionWork; import org.neo4j.driver.async.StatementResultCursor; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.util.Futures; import static java.util.Collections.emptyMap; diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java b/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java index d8bd045dd7..4240dc932f 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java @@ -29,7 +29,7 @@ import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.async.StatementResultCursor; import org.neo4j.driver.exceptions.ClientException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.BookmarkHolder; import org.neo4j.driver.internal.FailableCursor; import org.neo4j.driver.internal.InternalBookmark; diff --git a/driver/src/main/java/org/neo4j/driver/internal/reactive/InternalRxSession.java b/driver/src/main/java/org/neo4j/driver/internal/reactive/InternalRxSession.java index 2e0eba621d..07b54a0cc6 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/reactive/InternalRxSession.java +++ b/driver/src/main/java/org/neo4j/driver/internal/reactive/InternalRxSession.java @@ -27,7 +27,7 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Statement; import org.neo4j.driver.TransactionConfig; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.async.NetworkSession; import org.neo4j.driver.internal.cursor.RxStatementResultCursor; import org.neo4j.driver.internal.util.Futures; diff --git a/driver/src/main/java/org/neo4j/driver/reactive/RxSession.java b/driver/src/main/java/org/neo4j/driver/reactive/RxSession.java index 9c2cd53c0e..e1edb37e90 100644 --- a/driver/src/main/java/org/neo4j/driver/reactive/RxSession.java +++ b/driver/src/main/java/org/neo4j/driver/reactive/RxSession.java @@ -28,7 +28,7 @@ import org.neo4j.driver.Statement; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Values; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; /** * A reactive session is the same as {@link Session} except it provides a reactive API. diff --git a/driver/src/main/java/org/neo4j/driver/util/BookmarkUtil.java b/driver/src/main/java/org/neo4j/driver/util/BookmarkUtil.java new file mode 100644 index 0000000000..ea7787e863 --- /dev/null +++ b/driver/src/main/java/org/neo4j/driver/util/BookmarkUtil.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2002-2019 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.neo4j.driver.util; + +import java.io.Serializable; +import java.util.Collection; + +import org.neo4j.driver.Bookmark; +import org.neo4j.driver.internal.InternalBookmark; + +/** + * Utils for {@link Bookmark}. This class is deprecated and will be removed from public API in future versions. + */ +@Deprecated +public final class BookmarkUtil +{ + /** + * Parse {@link Bookmark} from a string value. The bookmark string has to be a single bookmark string such as "aBookmarkString". + * Use {@link BookmarkUtil#parse(Collection)} instead to parse multiple bookmark strings into one {@link Bookmark}. + * @param value a bookmark string. + * @return A {@link Bookmark bookmark} + * @deprecated This method is deprecated and will be removed in future versions. + * 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. + * This method shall not be used to convert a bookmark string from {@link Bookmark} back to {@link Bookmark}. + * A bookmark shall only be obtained via the driver and passed directly to the driver. + * The content of the bookmark shall not be inspected or altered by any client application. + */ + @Deprecated + public static Bookmark parse( String value ) + { + return InternalBookmark.parse( value ); + } + + /** + * 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". + * Use {@link BookmarkUtil#parse(String)} instead to parse a single bookmark string into one {@link Bookmark}. + * @param values a collections of bookmark string. The collection has to implement {@link Serializable}. + * @return A {@link Bookmark bookmark} + * @throws IllegalArgumentException if the collection of bookmark strings does not implement {@link Serializable}. + * @deprecated This method is deprecated and will be removed in future versions. + * 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. + * This method shall not be used to convert a bookmark string from {@link Bookmark} back to {@link Bookmark}. + * A bookmark shall only be obtained via the driver and passed directly to the driver. + * The content of the bookmark shall not be inspected or altered by any client application. + */ + @Deprecated + public static Bookmark parse( Collection values ) + { + return InternalBookmark.parse( values ); + } +} diff --git a/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java b/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java index 000d3c0889..788969164b 100644 --- a/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java +++ b/driver/src/test/java/org/neo4j/driver/SessionConfigTest.java @@ -29,8 +29,6 @@ import java.util.List; import java.util.stream.Stream; -import org.neo4j.driver.internal.Bookmark; - import static java.util.Collections.emptyList; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertEquals; diff --git a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java index 4f0472c152..991d0af843 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java @@ -26,7 +26,7 @@ import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.exceptions.ClientException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.util.DisabledOnNeo4jWith; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.internal.util.Neo4jFeature; @@ -39,9 +39,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.neo4j.driver.SessionConfig.builder; import static org.neo4j.driver.internal.InternalBookmark.parse; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkContainsSingleValue; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsEmpty; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarksContainsSingleUniqueValues; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkContainsSingleValue; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsEmpty; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarksContainsSingleUniqueValues; @ParallelizableIT class BookmarkIT diff --git a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverBoltKitTest.java b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverBoltKitTest.java index 48e447411b..9bf1b8e941 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverBoltKitTest.java +++ b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverBoltKitTest.java @@ -46,7 +46,7 @@ import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.exceptions.SessionExpiredException; import org.neo4j.driver.exceptions.TransientException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.DriverFactory; import org.neo4j.driver.internal.cluster.RoutingSettings; import org.neo4j.driver.internal.retry.RetrySettings; diff --git a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverMultidatabaseBoltKitTest.java b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverMultidatabaseBoltKitTest.java index 256cb6df5e..ed78415c40 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverMultidatabaseBoltKitTest.java +++ b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverMultidatabaseBoltKitTest.java @@ -35,7 +35,7 @@ import org.neo4j.driver.exceptions.FatalDiscoveryException; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.integration.RoutingDriverBoltKitTest.PortBasedServerAddressComparator; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.net.ServerAddress; import org.neo4j.driver.net.ServerAddressResolver; import org.neo4j.driver.util.StubServer; diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java index 6e3088622c..8a3dd872d3 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionBoltV3IT.java @@ -38,7 +38,7 @@ import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.StatementResultCursor; import org.neo4j.driver.exceptions.TransientException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.cluster.RoutingSettings; import org.neo4j.driver.internal.messaging.Message; import org.neo4j.driver.internal.messaging.request.GoodbyeMessage; diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java index 267c8c61e2..2dd7d6e1a4 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java @@ -91,9 +91,9 @@ import static org.neo4j.driver.SessionConfig.forDatabase; import static org.neo4j.driver.Values.parameters; import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkContainsSingleValue; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsEmpty; -import static org.neo4j.driver.internal.util.BookmarkUtils.assertBookmarkIsNotEmpty; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkContainsSingleValue; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsEmpty; +import static org.neo4j.driver.internal.util.BookmarkUtil.assertBookmarkIsNotEmpty; import static org.neo4j.driver.internal.util.Matchers.arithmeticError; import static org.neo4j.driver.internal.util.Matchers.connectionAcquisitionTimeoutError; import static org.neo4j.driver.internal.util.Neo4jFeature.BOLT_V4; diff --git a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java index 10eaf00adc..5458ea8808 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java @@ -42,7 +42,7 @@ import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.NoSuchRecordException; import org.neo4j.driver.exceptions.ServiceUnavailableException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.summary.StatementType; import org.neo4j.driver.types.Node; diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java index 80002e1eb4..b0ce2795dc 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java @@ -42,7 +42,7 @@ import org.neo4j.driver.Value; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.exceptions.ServiceUnavailableException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxStatementResult; diff --git a/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitTest.java b/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitTest.java index 7cfc29a618..0cd0ba950b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DirectDriverBoltKitTest.java @@ -29,6 +29,7 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.AuthTokens; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.Config; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java index 74388ccb82..eec85628a9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalBookmarkTest.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.List; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.util.Iterables; import static java.util.Arrays.asList; diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java index 84cef6e080..3f9d0efee6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java @@ -30,7 +30,7 @@ import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.async.StatementResultCursor; import org.neo4j.driver.exceptions.ClientException; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.BoltProtocol; import org.neo4j.driver.internal.messaging.request.PullMessage; diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtils.java b/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java similarity index 87% rename from driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtils.java rename to driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java index 8742fec5b0..5bf6a0e225 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtils.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/BookmarkUtil.java @@ -23,7 +23,7 @@ import java.util.HashSet; import java.util.List; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.InternalBookmark; import static org.hamcrest.Matchers.equalTo; @@ -36,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.neo4j.driver.internal.util.Iterables.asList; -public class BookmarkUtils +public class BookmarkUtil { /** * Bookmark is empty. @@ -79,6 +79,18 @@ public static void assertBookmarkContainsSingleValue( Bookmark bookmark, Matcher assertThat( values.get( 0 ), matcher ); } + /** + * Bookmark contains values matching the requirement set by matcher. + */ + public static void assertBookmarkContainsValues( Bookmark bookmark, Matcher> matcher ) + { + assertNotNull( bookmark ); + assertThat( bookmark, instanceOf( InternalBookmark.class ) ); + + List values = asList( ((InternalBookmark) bookmark).values() ); + assertThat( values, matcher ); + } + /** * Each bookmark contains one single value and the values are all different from each other. */ diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java index 5ff14e5c80..66aa9298b1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/MetadataExtractorTest.java @@ -30,7 +30,7 @@ import org.neo4j.driver.exceptions.UntrustedServerException; import org.neo4j.driver.exceptions.value.Uncoercible; import org.neo4j.driver.internal.BoltServerAddress; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.internal.summary.InternalInputPosition; diff --git a/driver/src/test/java/org/neo4j/driver/stress/AbstractContext.java b/driver/src/test/java/org/neo4j/driver/stress/AbstractContext.java index ec29589e55..9c02563c7c 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractContext.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractContext.java @@ -21,7 +21,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.summary.ResultSummary; public abstract class AbstractContext diff --git a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java index ce56d8d6c1..0d4da24e09 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java @@ -63,7 +63,7 @@ import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.StatementResultCursor; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.InternalDriver; import org.neo4j.driver.internal.logging.DevNullLogger; import org.neo4j.driver.internal.util.EnabledOnNeo4jWith; diff --git a/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java b/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java index 543f539cfa..416e9e1605 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java +++ b/driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java @@ -59,7 +59,7 @@ import org.neo4j.driver.exceptions.SessionExpiredException; import org.neo4j.driver.integration.NestedQueries; import org.neo4j.driver.internal.BoltServerAddress; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.cluster.RoutingSettings; import org.neo4j.driver.internal.retry.RetrySettings; import org.neo4j.driver.internal.util.DisabledOnNeo4jWith; diff --git a/driver/src/test/java/org/neo4j/driver/util/BookmarkUtilTest.java b/driver/src/test/java/org/neo4j/driver/util/BookmarkUtilTest.java new file mode 100644 index 0000000000..c87e0f011d --- /dev/null +++ b/driver/src/test/java/org/neo4j/driver/util/BookmarkUtilTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2002-2019 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.neo4j.driver.util; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import org.neo4j.driver.Bookmark; +import org.neo4j.driver.internal.InternalBookmark; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.hasItems; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.neo4j.driver.internal.util.BookmarkUtil.*; + +class BookmarkUtilTest +{ + @Test + void shouldParseSingleBookmarkString() throws Throwable + { + Bookmark bookmark = BookmarkUtil.parse( "a bookmark, another bookmark" ); + + assertBookmarkContainsSingleValue( bookmark, equalTo( "a bookmark, another bookmark" ) ); + } + + @Test + void shouldParseBookmarkStringCollections() throws Throwable + { + Bookmark bookmark = BookmarkUtil.parse( Arrays.asList( "a bookmark", "another bookmark" ) ); + + assertBookmarkContainsValues( bookmark, hasItems( "a bookmark", "another bookmark" ) ); + } +} diff --git a/driver/src/test/java/org/neo4j/driver/util/SessionExtension.java b/driver/src/test/java/org/neo4j/driver/util/SessionExtension.java index ccedece3f5..2e4cefcb27 100644 --- a/driver/src/test/java/org/neo4j/driver/util/SessionExtension.java +++ b/driver/src/test/java/org/neo4j/driver/util/SessionExtension.java @@ -32,7 +32,7 @@ import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.TransactionWork; import org.neo4j.driver.Value; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; /** * A little utility for integration testing, this provides tests with a session they can work with. diff --git a/driver/src/test/java/org/neo4j/driver/util/TestUtil.java b/driver/src/test/java/org/neo4j/driver/util/TestUtil.java index a4ad67244f..c57d18fb48 100644 --- a/driver/src/test/java/org/neo4j/driver/util/TestUtil.java +++ b/driver/src/test/java/org/neo4j/driver/util/TestUtil.java @@ -49,7 +49,7 @@ import org.neo4j.driver.StatementResult; import org.neo4j.driver.exceptions.ServiceUnavailableException; import org.neo4j.driver.internal.BoltServerAddress; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.internal.DefaultBookmarkHolder; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.async.NetworkSession; diff --git a/driver/src/test/java/org/neo4j/driver/util/cc/Cluster.java b/driver/src/test/java/org/neo4j/driver/util/cc/Cluster.java index 0b214e1250..98e4156b6c 100644 --- a/driver/src/test/java/org/neo4j/driver/util/cc/Cluster.java +++ b/driver/src/test/java/org/neo4j/driver/util/cc/Cluster.java @@ -31,7 +31,7 @@ import org.neo4j.driver.Driver; import org.neo4j.driver.Record; import org.neo4j.driver.internal.BoltServerAddress; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import org.neo4j.driver.util.TestUtil; import org.neo4j.driver.util.cc.ClusterMemberRoleDiscoveryFactory.ClusterMemberRoleDiscovery; diff --git a/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java b/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java index cf1cac4beb..10d244cabf 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java @@ -27,7 +27,7 @@ import org.neo4j.driver.Session; import org.neo4j.driver.StatementResult; import org.neo4j.driver.Transaction; -import org.neo4j.driver.internal.Bookmark; +import org.neo4j.driver.Bookmark; import static org.neo4j.driver.Values.parameters; import static org.neo4j.driver.SessionConfig.builder;