Skip to content

Commit 0e429bc

Browse files
committed
Switch to java 8, use CompletionStage in async API
Commit changes source and target java version to 1.8 and makes all public async APIs use `CompletionStage` instead of `Response`, which is now removed. This allows easier future chaining and makes API much more usable. Currently all internal futures are converted to `CompletionStage` at the highest level before returning to the user.
1 parent 192d33b commit 0e429bc

20 files changed

+265
-330
lines changed

driver/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@
104104
<artifactId>maven-compiler-plugin</artifactId>
105105
<version>2.3.2</version>
106106
<configuration>
107-
<source>1.7</source>
108-
<target>1.7</target>
107+
<source>${java.version}</source>
108+
<target>${java.version}</target>
109109
</configuration>
110110
</plugin>
111111
<plugin>

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

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

2121
import java.util.Collections;
2222
import java.util.Map;
23+
import java.util.concurrent.CompletionStage;
2324

2425
import org.neo4j.driver.ResultResourcesHandler;
2526
import org.neo4j.driver.internal.async.AsyncConnection;
@@ -35,7 +36,6 @@
3536
import org.neo4j.driver.internal.types.InternalTypeSystem;
3637
import org.neo4j.driver.internal.util.BiConsumer;
3738
import org.neo4j.driver.v1.Record;
38-
import org.neo4j.driver.v1.Response;
3939
import org.neo4j.driver.v1.Statement;
4040
import org.neo4j.driver.v1.StatementResult;
4141
import org.neo4j.driver.v1.StatementResultCursor;
@@ -47,6 +47,7 @@
4747
import org.neo4j.driver.v1.types.TypeSystem;
4848
import org.neo4j.driver.v1.util.Function;
4949

50+
import static org.neo4j.driver.internal.async.Futures.asCompletionStage;
5051
import static org.neo4j.driver.internal.util.ErrorUtil.isRecoverable;
5152
import static org.neo4j.driver.v1.Values.ofValue;
5253
import static org.neo4j.driver.v1.Values.value;
@@ -215,9 +216,9 @@ private void rollbackTx()
215216
}
216217

217218
@Override
218-
public Response<Void> commitAsync()
219+
public CompletionStage<Void> commitAsync()
219220
{
220-
return internalCommitAsync();
221+
return asCompletionStage( internalCommitAsync() );
221222
}
222223

223224
InternalFuture<Void> internalCommitAsync()
@@ -238,9 +239,9 @@ else if ( state == State.ROLLED_BACK )
238239
}
239240

240241
@Override
241-
public Response<Void> rollbackAsync()
242+
public CompletionStage<Void> rollbackAsync()
242243
{
243-
return internalRollbackAsync();
244+
return asCompletionStage( internalRollbackAsync() );
244245
}
245246

246247
InternalFuture<Void> internalRollbackAsync()
@@ -317,7 +318,7 @@ public StatementResult run( String statementText, Value statementParameters )
317318
}
318319

319320
@Override
320-
public Response<StatementResultCursor> runAsync( String statementText, Value parameters )
321+
public CompletionStage<StatementResultCursor> runAsync( String statementText, Value parameters )
321322
{
322323
return runAsync( new Statement( statementText, parameters ) );
323324
}
@@ -329,7 +330,7 @@ public StatementResult run( String statementText )
329330
}
330331

331332
@Override
332-
public Response<StatementResultCursor> runAsync( String statementTemplate )
333+
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate )
333334
{
334335
return runAsync( statementTemplate, Values.EmptyMap );
335336
}
@@ -342,7 +343,8 @@ public StatementResult run( String statementText, Map<String,Object> statementPa
342343
}
343344

344345
@Override
345-
public Response<StatementResultCursor> runAsync( String statementTemplate, Map<String,Object> statementParameters )
346+
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate,
347+
Map<String,Object> statementParameters )
346348
{
347349
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters );
348350
return runAsync( statementTemplate, params );
@@ -356,7 +358,7 @@ public StatementResult run( String statementTemplate, Record statementParameters
356358
}
357359

358360
@Override
359-
public Response<StatementResultCursor> runAsync( String statementTemplate, Record statementParameters )
361+
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate, Record statementParameters )
360362
{
361363
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters.asMap() );
362364
return runAsync( statementTemplate, params );
@@ -388,10 +390,10 @@ public StatementResult run( Statement statement )
388390
}
389391

390392
@Override
391-
public Response<StatementResultCursor> runAsync( Statement statement )
393+
public CompletionStage<StatementResultCursor> runAsync( Statement statement )
392394
{
393395
ensureNotFailed();
394-
return QueryRunner.runAsync( asyncConnection, statement, this );
396+
return asCompletionStage( QueryRunner.runAsync( asyncConnection, statement, this ) );
395397
}
396398

397399
@Override

0 commit comments

Comments
 (0)