Skip to content

Commit 89b960a

Browse files
author
Zhen
committed
Fix the bad pass-in of procedure paremeters
1 parent aeccdfe commit 89b960a

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunner.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,28 @@
2020
package org.neo4j.driver.internal.cluster;
2121

2222
import java.util.List;
23+
import java.util.Map;
2324

2425
import org.neo4j.driver.internal.NetworkSession;
2526
import org.neo4j.driver.internal.spi.Connection;
2627
import org.neo4j.driver.v1.Record;
2728
import org.neo4j.driver.v1.Statement;
28-
import org.neo4j.driver.v1.Value;
2929

3030
import static org.neo4j.driver.internal.SessionResourcesHandler.NO_OP;
3131
import static org.neo4j.driver.internal.util.ServerVersion.v3_2_0;
3232
import static org.neo4j.driver.internal.util.ServerVersion.version;
33+
import static org.neo4j.driver.v1.Values.parameters;
3334

3435
public class GetServersProcedureRunner
3536
{
3637
static final String GET_SERVERS = "dbms.cluster.routing.getServers";
37-
static final String GET_ROUTING_TABLE = "dbms.cluster.routing.getRoutingTable";
38+
static final String GET_ROUTING_TABLE_PARAM = "context";
39+
static final String GET_ROUTING_TABLE = "dbms.cluster.routing.getRoutingTable({" + GET_ROUTING_TABLE_PARAM + "})";
3840

39-
private final Value routingContext;
41+
private final Map<String, String> routingContext;
4042
private Statement procedureCalled;
4143

42-
public GetServersProcedureRunner( Value context )
44+
public GetServersProcedureRunner( Map<String, String> context )
4345
{
4446
this.routingContext = context;
4547
}
@@ -48,7 +50,8 @@ public List<Record> run( Connection connection )
4850
{
4951
if( version( connection.server().version() ).greaterThanOrEqual( v3_2_0 ) )
5052
{
51-
procedureCalled = new Statement( "CALL " + GET_ROUTING_TABLE, routingContext );
53+
procedureCalled = new Statement( "CALL " + GET_ROUTING_TABLE,
54+
parameters(GET_ROUTING_TABLE_PARAM, routingContext ) );
5255
}
5356
else
5457
{

driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,16 @@
2020

2121
import java.util.Map;
2222

23-
import org.neo4j.driver.v1.Value;
24-
import org.neo4j.driver.v1.Values;
25-
2623
public class RoutingSettings
2724
{
2825
final int maxRoutingFailures;
2926
final long retryTimeoutDelay;
30-
final Value routingParameters;
27+
final Map<String, String> routingParameters;
3128

3229
public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map<String, String> routingParameters )
3330
{
3431
this.maxRoutingFailures = maxRoutingFailures;
3532
this.retryTimeoutDelay = retryTimeoutDelay;
36-
this.routingParameters = Values.value( routingParameters );
33+
this.routingParameters = routingParameters;
3734
}
3835
}

driver/src/main/java/org/neo4j/driver/v1/Config.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.neo4j.driver.v1.util.Immutable;
3434
import org.neo4j.driver.v1.util.Resource;
3535

36+
import static java.util.Collections.EMPTY_MAP;
3637
import static org.neo4j.driver.v1.Config.TrustStrategy.trustAllCertificates;
3738

3839
/**
@@ -210,7 +211,7 @@ public static class ConfigBuilder
210211
private long routingRetryDelayMillis = TimeUnit.SECONDS.toMillis( 5 );
211212
private int connectionTimeoutMillis = (int) TimeUnit.SECONDS.toMillis( 5 );
212213
private RetrySettings retrySettings = RetrySettings.DEFAULT;
213-
private Map<String,String> routingContext = null;
214+
private Map<String,String> routingContext = EMPTY_MAP;
214215

215216
private ConfigBuilder() {}
216217

driver/src/test/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunnerTest.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,31 @@
2222

2323
import java.util.HashMap;
2424
import java.util.List;
25+
import java.util.Map;
2526

2627
import org.neo4j.driver.internal.net.BoltServerAddress;
2728
import org.neo4j.driver.internal.spi.Connection;
2829
import org.neo4j.driver.internal.summary.InternalServerInfo;
2930
import org.neo4j.driver.v1.Record;
3031
import org.neo4j.driver.v1.Statement;
31-
import org.neo4j.driver.v1.Value;
3232

33+
import static java.util.Collections.EMPTY_MAP;
3334
import static org.hamcrest.MatcherAssert.assertThat;
3435
import static org.hamcrest.core.IsEqual.equalTo;
3536
import static org.mockito.Mockito.mock;
3637
import static org.mockito.Mockito.when;
37-
import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_SERVERS;
3838
import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_ROUTING_TABLE;
39-
import static org.neo4j.driver.v1.Values.value;
39+
import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_ROUTING_TABLE_PARAM;
40+
import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_SERVERS;
41+
import static org.neo4j.driver.v1.Values.parameters;
4042

4143
public class GetServersProcedureRunnerTest
4244
{
4345
@Test
44-
public void shouldCallGetServersV2WithNull() throws Throwable
46+
public void shouldCallGetRoutingTableWithEmptyMap() throws Throwable
4547
{
4648
// Given
47-
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( (Object)null ) );
49+
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( EMPTY_MAP );
4850
Connection mock = mock( Connection.class );
4951
when( mock.server() ).thenReturn(
5052
new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.2.1" ) );
@@ -53,17 +55,17 @@ public void shouldCallGetServersV2WithNull() throws Throwable
5355

5456
// Then
5557
assertThat( runner.procedureCalled(), equalTo(
56-
new Statement( "CALL " + GET_ROUTING_TABLE, value( (Object) null) ) ) );
58+
new Statement( "CALL " + GET_ROUTING_TABLE, parameters( GET_ROUTING_TABLE_PARAM, EMPTY_MAP ) ) ) );
5759
}
5860

5961
@Test
60-
public void shouldCallGetServersV2WithParam() throws Throwable
62+
public void shouldCallGetRoutingTableWithParam() throws Throwable
6163
{
6264
// Given
6365
HashMap<String,String> param = new HashMap<>();
6466
param.put( "key1", "value1" );
6567
param.put( "key2", "value2" );
66-
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( param ) );
68+
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( param );
6769
Connection mock = mock( Connection.class );
6870
when( mock.server() ).thenReturn(
6971
new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.2.1" ) );
@@ -72,17 +74,17 @@ public void shouldCallGetServersV2WithParam() throws Throwable
7274

7375
// Then
7476
assertThat( runner.procedureCalled(), equalTo(
75-
new Statement( "CALL " + GET_ROUTING_TABLE, value( param ) ) ) );
77+
new Statement( "CALL " + GET_ROUTING_TABLE, parameters( GET_ROUTING_TABLE_PARAM, param ) ) ) );
7678
}
7779

7880
@Test
79-
public void shouldCallGetServerV1() throws Throwable
81+
public void shouldCallGetServers() throws Throwable
8082
{
8183
// Given
8284
HashMap<String,String> param = new HashMap<>();
8385
param.put( "key1", "value1" );
8486
param.put( "key2", "value2" );
85-
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( param ) );
87+
GetServersProcedureRunner runner = new TestGetServersProcedureRunner( param );
8688
Connection mock = mock( Connection.class );
8789
when( mock.server() ).thenReturn(
8890
new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.1.8" ) );
@@ -97,7 +99,7 @@ public void shouldCallGetServerV1() throws Throwable
9799
private static class TestGetServersProcedureRunner extends GetServersProcedureRunner
98100
{
99101

100-
TestGetServersProcedureRunner( Value parameters )
102+
TestGetServersProcedureRunner( Map<String, String> parameters )
101103
{
102104
super( parameters );
103105
}

driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void sessionCreationShouldFailIfCallingDiscoveryProcedureOnEdgeServer() t
106106
catch ( ServiceUnavailableException ex )
107107
{
108108
assertThat( ex.getMessage(), containsString(
109-
"Failed to run 'Statement{text='CALL dbms.cluster.routing.getServers', parameters={}}' on server." ) );
109+
"Failed to run 'Statement{text='CALL dbms.cluster.routing." ) );
110110
}
111111
}
112112

0 commit comments

Comments
 (0)