Skip to content

Commit aa79464

Browse files
authored
Merge pull request #99 from RedisGraph/records_iterator
results set is iterable
2 parents 42a5498 + 9fab930 commit aa79464

File tree

3 files changed

+78
-1
lines changed

3 files changed

+78
-1
lines changed

src/main/java/com/redislabs/redisgraph/ResultSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/**
66
* Hold a query result
77
*/
8-
public interface ResultSet extends Iterator<Record> {
8+
public interface ResultSet extends Iterable<Record>, Iterator<Record> {
99

1010
int size();
1111

src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import redis.clients.jedis.exceptions.JedisDataException;
1313

1414
import java.util.ArrayList;
15+
import java.util.Iterator;
1516
import java.util.List;
1617
import java.util.NoSuchElementException;
1718
import java.util.Objects;
1819

1920
public class ResultSetImpl implements ResultSet {
21+
2022

2123
private final Header header;
2224
private final Statistics statistics;
@@ -275,11 +277,13 @@ private ResultSetScalarTypes getValueTypeFromObject(Object rawScalarType) {
275277
}
276278

277279
@Override
280+
@Deprecated
278281
public boolean hasNext() {
279282
return position < results.size();
280283
}
281284

282285
@Override
286+
@Deprecated
283287
public Record next() {
284288
if (!hasNext())
285289
throw new NoSuchElementException();
@@ -316,4 +320,11 @@ public String toString() {
316320
sb.append('}');
317321
return sb.toString();
318322
}
323+
324+
325+
@Override
326+
public Iterator<Record> iterator() {
327+
// TODO Auto-generated method stub
328+
return results.iterator();
329+
}
319330
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.redislabs.redisgraph;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import com.redislabs.redisgraph.impl.api.RedisGraph;
6+
import org.junit.After;
7+
import org.junit.Assert;
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
11+
public class IterableTest {
12+
13+
private RedisGraphContextGenerator api;
14+
15+
@Before
16+
public void createApi() {
17+
// api = new RedisGraph();
18+
api = new RedisGraph();
19+
}
20+
21+
@After
22+
public void deleteGraph() {
23+
24+
api.deleteGraph("social");
25+
api.close();
26+
}
27+
28+
@Test
29+
public void testRecordsIterator() {
30+
api.query("social", "UNWIND(range(0,50)) as i CREATE(:N{i:i})");
31+
32+
ResultSet rs = api.query("social", "MATCH(n) RETURN n");
33+
int count = 0;
34+
while (rs.hasNext()) {
35+
rs.next();
36+
count++;
37+
}
38+
assertEquals(rs.size(), count);
39+
}
40+
41+
@Test
42+
public void testRecordsIterable() {
43+
api.query("social", "UNWIND(range(0,50)) as i CREATE(:N{i:i})");
44+
45+
ResultSet rs = api.query("social", "MATCH(n) RETURN n");
46+
int count = 0;
47+
for(Record row: rs) {
48+
count++;
49+
}
50+
assertEquals(rs.size(), count);
51+
}
52+
53+
@Test
54+
public void testRecordsIteratorAndIterable() {
55+
api.query("social", "UNWIND(range(0,50)) as i CREATE(:N{i:i})");
56+
57+
ResultSet rs = api.query("social", "MATCH(n) RETURN n");
58+
rs.next();
59+
int count = 0;
60+
for(Record row: rs) {
61+
count++;
62+
}
63+
assertEquals(rs.size(), count);
64+
}
65+
66+
}

0 commit comments

Comments
 (0)