File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed
main/java/org/neo4j/driver/v1
test/java/org/neo4j/driver Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change 23
23
import java .util .Collection ;
24
24
import java .util .Collections ;
25
25
import java .util .HashMap ;
26
+ import java .util .Iterator ;
26
27
import java .util .List ;
27
28
import java .util .Map ;
28
29
@@ -81,6 +82,7 @@ public static Value value( Object value )
81
82
if ( value instanceof List <?> ) { return value ( (List <Object >) value ); }
82
83
if ( value instanceof Iterable <?> ) { return value ( (Iterable <Object >) value ); }
83
84
if ( value instanceof Map <?, ?> ) { return value ( (Map <String ,Object >) value ); }
85
+ if ( value instanceof Iterator <?> ) { return value ( (Iterator <Object >) value ); }
84
86
85
87
if ( value instanceof boolean [] ) { return value ( (boolean []) value ); }
86
88
if ( value instanceof String [] ) { return value ( (String []) value ); }
@@ -183,11 +185,16 @@ public static Value value( List<Object> vals )
183
185
}
184
186
185
187
public static Value value ( Iterable <Object > val )
188
+ {
189
+ return value ( val .iterator () );
190
+ }
191
+
192
+ public static Value value ( Iterator <Object > val )
186
193
{
187
194
List <Value > values = new ArrayList <>();
188
- for ( Object v : val )
195
+ while ( val . hasNext () )
189
196
{
190
- values .add ( value ( v ) );
197
+ values .add ( value ( val . next () ) );
191
198
}
192
199
return new ListValue ( values .toArray ( new Value [values .size ()] ) );
193
200
}
Original file line number Diff line number Diff line change @@ -270,4 +270,15 @@ public void shouldHandleCollection() throws Throwable
270
270
// When/Then
271
271
assertThat ( val .asList (), Matchers .<Object >containsInAnyOrder ( "hello" , "world" ));
272
272
}
273
+
274
+ @ Test
275
+ public void shouldHandleIterator () throws Throwable
276
+ {
277
+ // Given
278
+ Iterator <String > iterator = asList ( "hello" , "world" ).iterator ();
279
+ Value val = value ( iterator );
280
+
281
+ // When/Then
282
+ assertThat ( val .asList (), Matchers .<Object >containsInAnyOrder ( "hello" , "world" ));
283
+ }
273
284
}
Original file line number Diff line number Diff line change 22
22
import org .junit .Test ;
23
23
24
24
import java .util .Collections ;
25
+ import java .util .Iterator ;
25
26
import java .util .List ;
26
27
27
28
import org .neo4j .driver .v1 .Record ;
@@ -82,6 +83,16 @@ public void shouldRunWithCollectionAsParameter() throws Throwable
82
83
// Then nothing should've failed
83
84
}
84
85
86
+ @ Test
87
+ public void shouldRunWithIteratorAsParameter () throws Throwable
88
+ {
89
+ Iterator <String > values = asList ( "FOO" , "BAR" , "BAZ" ).iterator ();
90
+ // When
91
+ session .run ( "RETURN {param}" , parameters ( "param" , values ) );
92
+
93
+ // Then nothing should've failed
94
+ }
95
+
85
96
@ Test
86
97
public void shouldRun () throws Throwable
87
98
{
You can’t perform that action at this time.
0 commit comments