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 2323import java .util .Collection ;
2424import java .util .Collections ;
2525import java .util .HashMap ;
26+ import java .util .Iterator ;
2627import java .util .List ;
2728import java .util .Map ;
2829
@@ -81,6 +82,7 @@ public static Value value( Object value )
8182 if ( value instanceof List <?> ) { return value ( (List <Object >) value ); }
8283 if ( value instanceof Iterable <?> ) { return value ( (Iterable <Object >) value ); }
8384 if ( value instanceof Map <?, ?> ) { return value ( (Map <String ,Object >) value ); }
85+ if ( value instanceof Iterator <?> ) { return value ( (Iterator <Object >) value ); }
8486
8587 if ( value instanceof boolean [] ) { return value ( (boolean []) value ); }
8688 if ( value instanceof String [] ) { return value ( (String []) value ); }
@@ -183,11 +185,16 @@ public static Value value( List<Object> vals )
183185 }
184186
185187 public static Value value ( Iterable <Object > val )
188+ {
189+ return value ( val .iterator () );
190+ }
191+
192+ public static Value value ( Iterator <Object > val )
186193 {
187194 List <Value > values = new ArrayList <>();
188- for ( Object v : val )
195+ while ( val . hasNext () )
189196 {
190- values .add ( value ( v ) );
197+ values .add ( value ( val . next () ) );
191198 }
192199 return new ListValue ( values .toArray ( new Value [values .size ()] ) );
193200 }
Original file line number Diff line number Diff line change @@ -270,4 +270,15 @@ public void shouldHandleCollection() throws Throwable
270270 // When/Then
271271 assertThat ( val .asList (), Matchers .<Object >containsInAnyOrder ( "hello" , "world" ));
272272 }
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+ }
273284}
Original file line number Diff line number Diff line change 2222import org .junit .Test ;
2323
2424import java .util .Collections ;
25+ import java .util .Iterator ;
2526import java .util .List ;
2627
2728import org .neo4j .driver .v1 .Record ;
@@ -82,6 +83,16 @@ public void shouldRunWithCollectionAsParameter() throws Throwable
8283 // Then nothing should've failed
8384 }
8485
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+
8596 @ Test
8697 public void shouldRun () throws Throwable
8798 {
You can’t perform that action at this time.
0 commit comments