Skip to content

Commit f1d4ea2

Browse files
authored
Merge pull request #489 from zhenlineo/1.6-paramter-check
Revert the check of node, rel, and path in Values#value
2 parents bccc234 + f9e41d4 commit f1d4ea2

File tree

5 files changed

+68
-73
lines changed

5 files changed

+68
-73
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747

4848
import static java.util.Collections.emptyMap;
4949
import static java.util.concurrent.CompletableFuture.completedFuture;
50+
import static org.neo4j.driver.internal.util.Extract.parameters;
5051
import static org.neo4j.driver.internal.util.Futures.completedWithNull;
5152
import static org.neo4j.driver.internal.util.Futures.failedFuture;
52-
import static org.neo4j.driver.v1.Values.value;
5353

5454
public class ExplicitTransaction implements Transaction
5555
{
@@ -227,29 +227,29 @@ public CompletionStage<StatementResultCursor> runAsync( String statementTemplate
227227
@Override
228228
public StatementResult run( String statementText, Map<String,Object> statementParameters )
229229
{
230-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters );
230+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters );
231231
return run( statementText, params );
232232
}
233233

234234
@Override
235235
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate,
236236
Map<String,Object> statementParameters )
237237
{
238-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters );
238+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters );
239239
return runAsync( statementTemplate, params );
240240
}
241241

242242
@Override
243243
public StatementResult run( String statementTemplate, Record statementParameters )
244244
{
245-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters.asMap() );
245+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters.asMap() );
246246
return run( statementTemplate, params );
247247
}
248248

249249
@Override
250250
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate, Record statementParameters )
251251
{
252-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters.asMap() );
252+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters.asMap() );
253253
return runAsync( statementTemplate, params );
254254
}
255255

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
import org.neo4j.driver.v1.types.TypeSystem;
4848

4949
import static java.util.concurrent.CompletableFuture.completedFuture;
50+
import static org.neo4j.driver.internal.util.Extract.parameters;
5051
import static org.neo4j.driver.internal.util.Futures.completedWithNull;
5152
import static org.neo4j.driver.internal.util.Futures.failedFuture;
52-
import static org.neo4j.driver.v1.Values.value;
5353

5454
public class NetworkSession implements Session
5555
{
@@ -91,29 +91,29 @@ public CompletionStage<StatementResultCursor> runAsync( String statementText )
9191
@Override
9292
public StatementResult run( String statementText, Map<String,Object> statementParameters )
9393
{
94-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters );
94+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters );
9595
return run( statementText, params );
9696
}
9797

9898
@Override
9999
public CompletionStage<StatementResultCursor> runAsync( String statementText,
100100
Map<String,Object> statementParameters )
101101
{
102-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters );
102+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters );
103103
return runAsync( statementText, params );
104104
}
105105

106106
@Override
107107
public StatementResult run( String statementTemplate, Record statementParameters )
108108
{
109-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters.asMap() );
109+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters.asMap() );
110110
return run( statementTemplate, params );
111111
}
112112

113113
@Override
114114
public CompletionStage<StatementResultCursor> runAsync( String statementTemplate, Record statementParameters )
115115
{
116-
Value params = statementParameters == null ? Values.EmptyMap : value( statementParameters.asMap() );
116+
Value params = statementParameters == null ? Values.EmptyMap : parameters( statementParameters.asMap() );
117117
return runAsync( statementTemplate, params );
118118
}
119119

driver/src/main/java/org/neo4j/driver/internal/util/Extract.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,17 @@
2424
import java.util.Map;
2525

2626
import org.neo4j.driver.internal.InternalPair;
27+
import org.neo4j.driver.internal.value.MapValue;
28+
import org.neo4j.driver.internal.value.NodeValue;
29+
import org.neo4j.driver.internal.value.PathValue;
30+
import org.neo4j.driver.internal.value.RelationshipValue;
2731
import org.neo4j.driver.v1.Record;
2832
import org.neo4j.driver.v1.Value;
33+
import org.neo4j.driver.v1.exceptions.ClientException;
2934
import org.neo4j.driver.v1.types.MapAccessor;
35+
import org.neo4j.driver.v1.types.Node;
36+
import org.neo4j.driver.v1.types.Path;
37+
import org.neo4j.driver.v1.types.Relationship;
3038
import org.neo4j.driver.v1.util.Function;
3139
import org.neo4j.driver.v1.util.Pair;
3240

@@ -36,6 +44,8 @@
3644
import static java.util.Collections.singletonMap;
3745
import static java.util.Collections.unmodifiableList;
3846
import static java.util.Collections.unmodifiableMap;
47+
import static org.neo4j.driver.internal.util.Iterables.newHashMapWithSize;
48+
import static org.neo4j.driver.v1.Values.value;
3949

4050
/**
4151
* Utility class for extracting data.
@@ -190,4 +200,32 @@ public static <V> List<Pair<String, V>> fields( final Record map, final Function
190200
}
191201
}
192202
}
203+
204+
public static Value parameters( Map<String,Object> val )
205+
{
206+
Map<String,Value> asValues = newHashMapWithSize( val.size() );
207+
for ( Map.Entry<String,Object> entry : val.entrySet() )
208+
{
209+
Object value = entry.getValue();
210+
assertParameter( value );
211+
asValues.put( entry.getKey(), value( value ) );
212+
}
213+
return new MapValue( asValues );
214+
}
215+
216+
public static void assertParameter( Object value )
217+
{
218+
if ( value instanceof Node || value instanceof NodeValue )
219+
{
220+
throw new ClientException( "Nodes can't be used as parameters." );
221+
}
222+
if ( value instanceof Relationship || value instanceof RelationshipValue )
223+
{
224+
throw new ClientException( "Relationships can't be used as parameters." );
225+
}
226+
if ( value instanceof Path || value instanceof PathValue )
227+
{
228+
throw new ClientException( "Paths can't be used as parameters." );
229+
}
230+
}
193231
}

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

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,8 @@
4949
import org.neo4j.driver.internal.value.LocalDateTimeValue;
5050
import org.neo4j.driver.internal.value.LocalTimeValue;
5151
import org.neo4j.driver.internal.value.MapValue;
52-
import org.neo4j.driver.internal.value.NodeValue;
5352
import org.neo4j.driver.internal.value.NullValue;
54-
import org.neo4j.driver.internal.value.PathValue;
5553
import org.neo4j.driver.internal.value.PointValue;
56-
import org.neo4j.driver.internal.value.RelationshipValue;
5754
import org.neo4j.driver.internal.value.StringValue;
5855
import org.neo4j.driver.internal.value.TimeValue;
5956
import org.neo4j.driver.v1.exceptions.ClientException;
@@ -67,6 +64,7 @@
6764
import org.neo4j.driver.v1.types.TypeSystem;
6865
import org.neo4j.driver.v1.util.Function;
6966

67+
import static org.neo4j.driver.internal.util.Extract.assertParameter;
7068
import static org.neo4j.driver.internal.util.Iterables.newHashMapWithSize;
7169

7270
/**
@@ -94,7 +92,6 @@ public static Value value( Object value )
9492
{
9593
if ( value == null ) { return NullValue.NULL; }
9694

97-
assertParameter( value );
9895
if ( value instanceof AsValue ) { return ((AsValue) value).asValue(); }
9996
if ( value instanceof Boolean ) { return value( (boolean) value ); }
10097
if ( value instanceof String ) { return value( (String) value ); }
@@ -385,6 +382,7 @@ public static Value parameters( Object... keysAndValues )
385382
for ( int i = 0; i < keysAndValues.length; i += 2 )
386383
{
387384
Object value = keysAndValues[i + 1];
385+
assertParameter( value );
388386
map.put( keysAndValues[i].toString(), value( value ) );
389387
}
390388
return value( map );
@@ -666,21 +664,4 @@ public static <T> Function<Value,List<T>> ofList( final Function<Value,T> innerM
666664
{
667665
return value -> value.asList( innerMap );
668666
}
669-
670-
private static void assertParameter( Object value )
671-
{
672-
if ( value instanceof Node || value instanceof NodeValue )
673-
{
674-
throw new ClientException( "Nodes can't be used as parameters." );
675-
}
676-
if ( value instanceof Relationship || value instanceof RelationshipValue )
677-
{
678-
throw new ClientException( "Relationships can't be used as parameters." );
679-
}
680-
if ( value instanceof Path || value instanceof PathValue )
681-
{
682-
throw new ClientException( "Paths can't be used as parameters." );
683-
}
684-
685-
}
686667
}

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

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -494,74 +494,50 @@ public void shouldCreateValueFromPoint3D()
494494
}
495495

496496
@Test
497-
public void shouldComplainAboutNodeValueType() throws Throwable
497+
public void shouldCreateValueFromNodeValue()
498498
{
499-
// Expect
500-
exception.expect( ClientException.class );
501-
exception.expectMessage( "Nodes can't be used as parameters." );
502-
503-
// When
504499
NodeValue node = emptyNodeValue();
505-
value( node );
500+
Value value = value( node );
501+
assertEquals( node, value );
506502
}
507503

508504
@Test
509-
public void shouldComplainAboutNodeType() throws Throwable
505+
public void shouldCreateValueFromNode()
510506
{
511-
// Expect
512-
exception.expect( ClientException.class );
513-
exception.expectMessage( "Nodes can't be used as parameters." );
514-
515-
// When
516507
Node node = emptyNodeValue().asNode();
517-
value( node );
508+
Value value = value( node );
509+
assertEquals( node, value.asNode() );
518510
}
519511

520512
@Test
521-
public void shouldComplainAboutRelationshipValueType() throws Throwable
513+
public void shouldCreateValueFromRelationshipValue()
522514
{
523-
// Expect
524-
exception.expect( ClientException.class );
525-
exception.expectMessage( "Relationships can't be used as parameters." );
526-
527-
// When
528515
RelationshipValue rel = emptyRelationshipValue();
529-
value( rel );
516+
Value value = value( rel );
517+
assertEquals( rel, value );
530518
}
531519

532520
@Test
533-
public void shouldComplainAboutRelationshipType() throws Throwable
521+
public void shouldCreateValueFromRelationship()
534522
{
535-
// Expect
536-
exception.expect( ClientException.class );
537-
exception.expectMessage( "Relationships can't be used as parameters." );
538-
539-
// When
540523
Relationship rel = emptyRelationshipValue().asRelationship();
541-
value( rel );
524+
Value value = value( rel );
525+
assertEquals( rel, value.asRelationship() );
542526
}
543527

544528
@Test
545-
public void shouldComplainAboutPathValueType() throws Throwable
529+
public void shouldCreateValueFromPathValue()
546530
{
547-
// Expect
548-
exception.expect( ClientException.class );
549-
exception.expectMessage( "Paths can't be used as parameters." );
550-
551-
// When
552531
PathValue path = filledPathValue();
553-
value( path );
532+
Value value = value( path );
533+
assertEquals( path, value );
554534
}
555535

556536
@Test
557-
public void shouldComplainAboutPathType() throws Throwable
537+
public void shouldCreateValueFromPath()
558538
{
559-
// Expect
560-
exception.expect( ClientException.class );
561-
exception.expectMessage( "Paths can't be used as parameters." );
562-
563-
// When
564539
Path path = filledPathValue().asPath();
565-
value( path );
540+
Value value = value( path );
541+
assertEquals( path, value.asPath() );
566542
}
567543
}

0 commit comments

Comments
 (0)