From e45e854a5dea808b386e9b9445c4a9f80fe3d41d Mon Sep 17 00:00:00 2001 From: Zhen Li Date: Fri, 6 Dec 2019 12:32:08 +0100 Subject: [PATCH] Adding example tags in the example files for driver documentation --- .../AsyncAutocommitTransactionExample.java | 8 +-- .../driver/AsyncResultConsumeExample.java | 49 +++++++++++++ .../AsyncTransactionFunctionExample.java | 8 +-- .../AsyncUnmanagedTransactionExample.java | 7 +- .../driver/AutocommitTransactionExample.java | 1 - .../driver/ConfigConnectionPoolExample.java | 4 +- .../driver/ConfigCustomResolverExample.java | 4 +- .../docs/driver/ResultConsumeExample.java | 27 ++----- .../RxAutocommitTransactionExample.java | 12 ++-- .../docs/driver/RxResultConsumeExample.java | 72 +++++++++++++++++++ .../driver/RxTransactionFunctionExample.java | 12 ++-- .../driver/RxUnmanagedTransactionExample.java | 14 ++-- .../org/neo4j/docs/driver/SessionExample.java | 1 - .../driver/TransactionFunctionExample.java | 19 +---- .../org/neo4j/docs/driver/ExamplesIT.java | 56 ++++++++++++++- 15 files changed, 221 insertions(+), 73 deletions(-) create mode 100644 examples/src/main/java/org/neo4j/docs/driver/AsyncResultConsumeExample.java create mode 100644 examples/src/main/java/org/neo4j/docs/driver/RxResultConsumeExample.java diff --git a/examples/src/main/java/org/neo4j/docs/driver/AsyncAutocommitTransactionExample.java b/examples/src/main/java/org/neo4j/docs/driver/AsyncAutocommitTransactionExample.java index d3889026ad..a0e3ebb492 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/AsyncAutocommitTransactionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/AsyncAutocommitTransactionExample.java @@ -17,14 +17,14 @@ * limitations under the License. */ package org.neo4j.docs.driver; - +// tag::async-autocommit-transaction-import[] import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.CompletionStage; import org.neo4j.driver.async.AsyncSession; - +// end::async-autocommit-transaction-import[] public class AsyncAutocommitTransactionExample extends BaseApplication { public AsyncAutocommitTransactionExample( String uri, String user, String password ) @@ -32,9 +32,9 @@ public AsyncAutocommitTransactionExample( String uri, String user, String passwo super( uri, user, password ); } + // tag::async-autocommit-transaction[] public CompletionStage> readProductTitles() { - // tag::async-autocommit-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -49,6 +49,6 @@ public CompletionStage> readProductTitles() return Collections.emptyList(); } ) .thenCompose( titles -> session.closeAsync().thenApply( ignore -> titles ) ); - // end::async-autocommit-transaction[] } + // end::async-autocommit-transaction[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/AsyncResultConsumeExample.java b/examples/src/main/java/org/neo4j/docs/driver/AsyncResultConsumeExample.java new file mode 100644 index 0000000000..4588e1b822 --- /dev/null +++ b/examples/src/main/java/org/neo4j/docs/driver/AsyncResultConsumeExample.java @@ -0,0 +1,49 @@ +/* + * 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.docs.driver; + +// tag::async-result-consume-import[] + +import java.util.List; +import java.util.concurrent.CompletionStage; + +import org.neo4j.driver.async.AsyncSession; +// end::async-result-consume-import[] + +public class AsyncResultConsumeExample extends BaseApplication +{ + public AsyncResultConsumeExample( String uri, String user, String password ) + { + super( uri, user, password ); + } + + // tag::async-result-consume[] + public CompletionStage> getPeople() + { + + String query = "MATCH (a:Person) RETURN a.name ORDER BY a.name"; + AsyncSession session = driver.asyncSession(); + return session.readTransactionAsync( tx -> + tx.runAsync( query ) + .thenCompose( cursor -> cursor.listAsync( record -> + record.get( 0 ).asString() ) ) + ); + } + // end::async-result-consume[] +} diff --git a/examples/src/main/java/org/neo4j/docs/driver/AsyncTransactionFunctionExample.java b/examples/src/main/java/org/neo4j/docs/driver/AsyncTransactionFunctionExample.java index 7c4e28ad18..572c3cef5e 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/AsyncTransactionFunctionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/AsyncTransactionFunctionExample.java @@ -17,14 +17,14 @@ * limitations under the License. */ package org.neo4j.docs.driver; - +// tag::async-transaction-function-import[] import java.util.Collections; import java.util.Map; import java.util.concurrent.CompletionStage; import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.summary.ResultSummary; - +// end::async-transaction-function-import[] public class AsyncTransactionFunctionExample extends BaseApplication { public AsyncTransactionFunctionExample( String uri, String user, String password ) @@ -32,9 +32,9 @@ public AsyncTransactionFunctionExample( String uri, String user, String password super( uri, user, password ); } + // tag::async-transaction-function[] public CompletionStage printAllProducts() { - // tag::async-transaction-function[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -46,6 +46,6 @@ public CompletionStage printAllProducts() // asynchronously print every record System.out.println( record.get( 0 ).asString() ) ) ) ); - // end::async-transaction-function[] } + // end::async-transaction-function[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/AsyncUnmanagedTransactionExample.java b/examples/src/main/java/org/neo4j/docs/driver/AsyncUnmanagedTransactionExample.java index 6a923d5a33..ee5d3338a6 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/AsyncUnmanagedTransactionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/AsyncUnmanagedTransactionExample.java @@ -17,7 +17,7 @@ * limitations under the License. */ package org.neo4j.docs.driver; - +// tag::async-unmanaged-transaction-import[] import java.util.Collections; import java.util.Map; import java.util.concurrent.CompletionStage; @@ -26,6 +26,7 @@ import org.neo4j.driver.async.AsyncSession; import org.neo4j.driver.async.AsyncTransaction; import org.neo4j.driver.async.ResultCursor; +// end::async-unmanaged-transaction-import[] public class AsyncUnmanagedTransactionExample extends BaseApplication { @@ -34,9 +35,9 @@ public AsyncUnmanagedTransactionExample(String uri, String user, String password super( uri, user, password ); } + // tag::async-unmanaged-transaction[] public CompletionStage printSingleProduct() { - // tag::async-unmanaged-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -69,6 +70,6 @@ public CompletionStage printSingleProduct() return null; } ) .thenCompose( ignore -> session.closeAsync() ); - // end::async-unmanaged-transaction[] } + // end::async-unmanaged-transaction[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/AutocommitTransactionExample.java b/examples/src/main/java/org/neo4j/docs/driver/AutocommitTransactionExample.java index 8454a0f4c0..ef1d385525 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/AutocommitTransactionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/AutocommitTransactionExample.java @@ -41,5 +41,4 @@ public void addPerson( String name ) } } // end::autocommit-transaction[] - } diff --git a/examples/src/main/java/org/neo4j/docs/driver/ConfigConnectionPoolExample.java b/examples/src/main/java/org/neo4j/docs/driver/ConfigConnectionPoolExample.java index 91ed52adf9..ab37866440 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/ConfigConnectionPoolExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/ConfigConnectionPoolExample.java @@ -17,7 +17,7 @@ * limitations under the License. */ package org.neo4j.docs.driver; - +// tag::config-connection-pool-import[] import java.util.concurrent.TimeUnit; import org.neo4j.driver.AuthTokens; @@ -25,7 +25,7 @@ import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.Result; - +// end::config-connection-pool-import[] public class ConfigConnectionPoolExample implements AutoCloseable { private final Driver driver; diff --git a/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java b/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java index 1cc68dca9b..a74cf82c83 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java @@ -17,7 +17,7 @@ * limitations under the License. */ package org.neo4j.docs.driver; - +// tag::config-custom-resolver-import[] import java.util.Arrays; import java.util.HashSet; @@ -32,7 +32,7 @@ import static org.neo4j.driver.Values.parameters; import static org.neo4j.driver.SessionConfig.builder; - +// end::config-custom-resolver-import[] public class ConfigCustomResolverExample implements AutoCloseable { private final Driver driver; diff --git a/examples/src/main/java/org/neo4j/docs/driver/ResultConsumeExample.java b/examples/src/main/java/org/neo4j/docs/driver/ResultConsumeExample.java index 9d2a021e82..eecc1dab1a 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/ResultConsumeExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/ResultConsumeExample.java @@ -23,10 +23,8 @@ import java.util.ArrayList; import java.util.List; -import org.neo4j.driver.Session; import org.neo4j.driver.Result; -import org.neo4j.driver.Transaction; -import org.neo4j.driver.TransactionWork; +import org.neo4j.driver.Session; // end::result-consume-import[] public class ResultConsumeExample extends BaseApplication @@ -41,27 +39,16 @@ public List getPeople() { try ( Session session = driver.session() ) { - return session.readTransaction( new TransactionWork>() - { - @Override - public List execute( Transaction tx ) + return session.readTransaction( tx -> { + List names = new ArrayList<>(); + Result result = tx.run( "MATCH (a:Person) RETURN a.name ORDER BY a.name" ); + while ( result.hasNext() ) { - return matchPersonNodes( tx ); + names.add( result.next().get( 0 ).asString() ); } + return names; } ); } } - - private static List matchPersonNodes( Transaction tx ) - { - List names = new ArrayList<>(); - Result result = tx.run( "MATCH (a:Person) RETURN a.name ORDER BY a.name" ); - while ( result.hasNext() ) - { - names.add( result.next().get( 0 ).asString() ); - } - return names; - } // end::result-consume[] - } diff --git a/examples/src/main/java/org/neo4j/docs/driver/RxAutocommitTransactionExample.java b/examples/src/main/java/org/neo4j/docs/driver/RxAutocommitTransactionExample.java index 16bfcb830c..12f61a992c 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/RxAutocommitTransactionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/RxAutocommitTransactionExample.java @@ -19,6 +19,7 @@ package org.neo4j.docs.driver; import io.reactivex.Flowable; +// tag::rx-autocommit-transaction-import[] import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -26,6 +27,7 @@ import java.util.Map; import org.neo4j.driver.reactive.RxSession; +// end::rx-autocommit-transaction-import[] public class RxAutocommitTransactionExample extends BaseApplication { @@ -34,21 +36,21 @@ public RxAutocommitTransactionExample( String uri, String user, String password super( uri, user, password ); } - public Flux readProductTitlesReactor() + // tag::rx-autocommit-transaction[] + public Flux readProductTitles() { - // tag::reactor-autocommit-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); return Flux.usingWhen( Mono.fromSupplier( driver::rxSession ), session -> Flux.from( session.run( query, parameters ).records() ).map( record -> record.get( 0 ).asString() ), RxSession::close ); - // end::reactor-autocommit-transaction[] } + // end::rx-autocommit-transaction[] + // tag::RxJava-autocommit-transaction[] public Flowable readProductTitlesRxJava() { - // tag::RxJava-autocommit-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -59,6 +61,6 @@ public Flowable readProductTitlesRxJava() // We still rethrows the original error here. In a real application, you may want to handle the error directly here. return Flowable.fromPublisher( session.close() ).concatWith( Flowable.error( error ) ); } ); - // end::RxJava-autocommit-transaction[] } + // end::RxJava-autocommit-transaction[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/RxResultConsumeExample.java b/examples/src/main/java/org/neo4j/docs/driver/RxResultConsumeExample.java new file mode 100644 index 0000000000..61f3dc4985 --- /dev/null +++ b/examples/src/main/java/org/neo4j/docs/driver/RxResultConsumeExample.java @@ -0,0 +1,72 @@ +/* + * 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.docs.driver; + +import io.reactivex.Flowable; +// tag::rx-result-consume-import[] +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.Collections; +import java.util.Map; + +import org.neo4j.driver.reactive.RxResult; +import org.neo4j.driver.reactive.RxSession; +// end::rx-result-consume-import[] + +public class RxResultConsumeExample extends BaseApplication +{ + public RxResultConsumeExample( String uri, String user, String password ) + { + super( uri, user, password ); + } + + // tag::rx-result-consume[] + public Flux getPeople() + { + String query = "MATCH (a:Person) RETURN a.name ORDER BY a.name"; + + return Flux.usingWhen( Mono.fromSupplier( driver::rxSession ), + session -> session.readTransaction( tx -> { + RxResult result = tx.run( query ); + return Flux.from( result.records() ) + .map( record -> record.get( 0 ).asString() ); + } + ), RxSession::close ); + } + // end::rx-result-consume[] + + // tag::RxJava-result-consume[] + public Flowable getPeopleRxJava() + { + String query = "MATCH (a:Person) RETURN a.name ORDER BY a.name"; + Map parameters = Collections.singletonMap( "id", 0 ); + + RxSession session = driver.rxSession(); + return Flowable.fromPublisher( session.readTransaction( tx -> { + RxResult result = tx.run( query, parameters ); + return Flowable.fromPublisher( result.records() ) + .map( record -> record.get( 0 ).asString() ); + } ) ).onErrorResumeNext( error -> { + // We rollback and rethrow the error. For a real application, you may want to handle the error directly here + return Flowable.fromPublisher( session.close() ).concatWith( Flowable.error( error ) ); + } ); + } + // end::RxJava-result-consume[] +} diff --git a/examples/src/main/java/org/neo4j/docs/driver/RxTransactionFunctionExample.java b/examples/src/main/java/org/neo4j/docs/driver/RxTransactionFunctionExample.java index b126f6f07c..44135ee5f2 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/RxTransactionFunctionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/RxTransactionFunctionExample.java @@ -19,6 +19,7 @@ package org.neo4j.docs.driver; import io.reactivex.Flowable; +// tag::rx-transaction-function-import[] import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -28,6 +29,7 @@ import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.summary.ResultSummary; +// end::rx-transaction-function-import[] public class RxTransactionFunctionExample extends BaseApplication { @@ -36,9 +38,9 @@ public RxTransactionFunctionExample( String uri, String user, String password ) super( uri, user, password ); } - public Flux printAllProductsReactor() + // tag::rx-transaction-function[] + public Flux printAllProducts() { - // tag::reactor-transaction-function[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -49,12 +51,12 @@ public Flux printAllProductsReactor() .doOnNext( record -> System.out.println( record.get( 0 ).asString() ) ).then( Mono.from( result.consume() ) ); } ), RxSession::close ); - // end::reactor-transaction-function[] } + // end::rx-transaction-function[] + // tag::RxJava-transaction-function[] public Flowable printAllProductsRxJava() { - // tag::RxJava-transaction-function[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -67,6 +69,6 @@ public Flowable printAllProductsRxJava() // We rollback and rethrow the error. For a real application, you may want to handle the error directly here return Flowable.fromPublisher( session.close() ).concatWith( Flowable.error( error ) ); } ); - // end::RxJava-transaction-function[] } + // end::RxJava-transaction-function[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/RxUnmanagedTransactionExample.java b/examples/src/main/java/org/neo4j/docs/driver/RxUnmanagedTransactionExample.java index 1325f350f7..e2c07b9282 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/RxUnmanagedTransactionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/RxUnmanagedTransactionExample.java @@ -17,8 +17,8 @@ * limitations under the License. */ package org.neo4j.docs.driver; - import io.reactivex.Flowable; +// tag::reactor-unmanaged-transaction-import[] import reactor.core.publisher.Flux; import java.util.Collections; @@ -26,7 +26,7 @@ import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxTransaction; - +// tag::reactor-unmanaged-transaction-import[] public class RxUnmanagedTransactionExample extends BaseApplication { public RxUnmanagedTransactionExample(String uri, String user, String password ) @@ -34,9 +34,9 @@ public RxUnmanagedTransactionExample(String uri, String user, String password ) super( uri, user, password ); } - public Flux readSingleProductReactor() + // tag::reactor-unmanaged-transaction[] + public Flux readSingleProduct() { - // tag::reactor-unmanaged-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -44,12 +44,12 @@ public Flux readSingleProductReactor() return Flux.usingWhen( session.beginTransaction(), tx -> Flux.from( tx.run( query, parameters ).records() ).map( record -> record.get( 0 ).asString() ), RxTransaction::commit, ( tx, error ) -> tx.rollback(), null ); - // end::reactor-unmanaged-transaction[] } + // end::reactor-unmanaged-transaction[] + // tag::RxJava-unmanaged-transaction[] public Flowable readSingleProductRxJava() { - // tag::RxJava-unmanaged-transaction[] String query = "MATCH (p:Product) WHERE p.id = $id RETURN p.title"; Map parameters = Collections.singletonMap( "id", 0 ); @@ -63,6 +63,6 @@ public Flowable readSingleProductRxJava() // We rollback and rethrow the error. For a real application, you may want to handle the error directly here return Flowable.fromPublisher( tx.rollback() ).concatWith( Flowable.error( error ) ); } ) ); - // end::RxJava-unmanaged-transaction[] } + // end::RxJava-unmanaged-transaction[] } diff --git a/examples/src/main/java/org/neo4j/docs/driver/SessionExample.java b/examples/src/main/java/org/neo4j/docs/driver/SessionExample.java index c7c2ae0bf9..56e04f3577 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/SessionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/SessionExample.java @@ -41,5 +41,4 @@ public void addPerson(String name) } } // end::session[] - } diff --git a/examples/src/main/java/org/neo4j/docs/driver/TransactionFunctionExample.java b/examples/src/main/java/org/neo4j/docs/driver/TransactionFunctionExample.java index 9129fcb06e..644727f29f 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/TransactionFunctionExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/TransactionFunctionExample.java @@ -21,8 +21,6 @@ // tag::transaction-function-import[] import org.neo4j.driver.Session; -import org.neo4j.driver.Transaction; -import org.neo4j.driver.TransactionWork; import static org.neo4j.driver.Values.parameters; // end::transaction-function-import[] @@ -39,22 +37,11 @@ public void addPerson( final String name ) { try ( Session session = driver.session() ) { - session.writeTransaction( new TransactionWork() - { - @Override - public Integer execute( Transaction tx ) - { - return createPersonNode( tx, name ); - } + session.writeTransaction( tx -> { + tx.run( "CREATE (a:Person {name: $name})", parameters( "name", name ) ); + return 1; } ); } } - - private static int createPersonNode( Transaction tx, String name ) - { - tx.run( "CREATE (a:Person {name: $name})", parameters( "name", name ) ); - return 1; - } // end::transaction-function[] - } diff --git a/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java b/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java index fe4e32c25d..dbea67fa1c 100644 --- a/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java +++ b/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java @@ -149,6 +149,22 @@ void testShouldRunAsyncAutocommitTransactionExample() throws Exception } } + @Test + void testShouldAsyncRunResultConsumeExample() throws Exception + { + // Given + write( "CREATE (a:Person {name: 'Alice'})" ); + write( "CREATE (a:Person {name: 'Bob'})" ); + try ( AsyncResultConsumeExample example = new AsyncResultConsumeExample( uri, USER, PASSWORD ) ) + { + // When + List names = await( example.getPeople() ); + + // Then + assertThat( names, equalTo( asList( "Alice", "Bob" ) ) ); + } + } + @Test void testShouldRunConfigConnectionPoolExample() throws Exception { @@ -498,7 +514,7 @@ void testShouldRunRxAutocommitTransactionExample() throws Exception } // read all 'Product' nodes - List titles = await( example.readProductTitlesReactor() ); + List titles = await( example.readProductTitles() ); assertEquals( new HashSet<>( asList( "Tesseract", "Orb", "Eye of Agamotto" ) ), new HashSet<>( titles ) ); titles = await( example.readProductTitlesRxJava() ); @@ -518,7 +534,7 @@ void testRxUnmanagedTransactionExample() throws Exception session.run( "CREATE (:Product {id: 0, title: 'Mind Gem'})" ); } - List products = await( example.readSingleProductReactor() ); + List products = await( example.readSingleProduct() ); assertEquals( 1, products.size() ); assertEquals( "Mind Gem", products.get( 0 ) ); @@ -548,7 +564,7 @@ void testShouldRunRxTransactionFunctionExampleReactor() throws Exception // print all 'Product' nodes to fake stdout try ( AutoCloseable ignore = stdIOCapture.capture() ) { - final List summaryList = await( example.printAllProductsReactor() ); + final List summaryList = await( example.printAllProducts() ); assertThat( summaryList.size(), equalTo( 1 ) ); ResultSummary summary = summaryList.get( 0 ); assertEquals( QueryType.READ_ONLY, summary.queryType() ); @@ -588,4 +604,38 @@ void testShouldRunRxTransactionFunctionExampleRxJava() throws Exception assertEquals( new HashSet<>( asList( "Infinity Gauntlet", "Mjölnir" ) ), capturedOutput ); } } + + @Test + @EnabledOnNeo4jWith( BOLT_V4 ) + void testShouldRunRxResultConsumeExampleReactor() throws Exception + { + // Given + write( "CREATE (a:Person {name: 'Alice'})" ); + write( "CREATE (a:Person {name: 'Bob'})" ); + try ( RxResultConsumeExample example = new RxResultConsumeExample( uri, USER, PASSWORD ) ) + { + // When + List names = await( example.getPeople() ); + + // Then + assertThat( names, equalTo( asList( "Alice", "Bob" ) ) ); + } + } + + @Test + @EnabledOnNeo4jWith( BOLT_V4 ) + void testShouldRunRxResultConsumeExampleRxJava() throws Exception + { + // Given + write( "CREATE (a:Person {name: 'Alice'})" ); + write( "CREATE (a:Person {name: 'Bob'})" ); + try ( RxResultConsumeExample example = new RxResultConsumeExample( uri, USER, PASSWORD ) ) + { + // When + List names = await( example.getPeopleRxJava() ); + + // Then + assertThat( names, equalTo( asList( "Alice", "Bob" ) ) ); + } + } }