This repository was archived by the owner on Jul 31, 2025. It is now read-only.
forked from hub4j/github-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPagedSearchIterable.java
More file actions
63 lines (53 loc) · 1.7 KB
/
PagedSearchIterable.java
File metadata and controls
63 lines (53 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Iterator;
/**
* {@link PagedIterable} enhanced to report search result specific information.
*
* @author Kohsuke Kawaguchi
*/
@SuppressFBWarnings(value = {"UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD",
"UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR"}, justification = "Constructed by JSON API")
public abstract class PagedSearchIterable<T> extends PagedIterable<T> {
private final GitHub root;
/**
* As soon as we have any result fetched, it's set here so that we can report the total count.
*/
private SearchResult<T> result;
/*package*/ PagedSearchIterable(GitHub root) {
this.root = root;
}
/**
* Returns the total number of hit, including the results that's not yet fetched.
*/
public int getTotalCount() {
populate();
return result.total_count;
}
public boolean isIncomplete() {
populate();
return result.incomplete_results;
}
private void populate() {
if (result==null)
iterator().hasNext();
}
/**
* Adapts {@link Iterator}.
*/
protected Iterator<T[]> adapt(final Iterator<? extends SearchResult<T>> base) {
return new Iterator<T[]>() {
public boolean hasNext() {
return base.hasNext();
}
public T[] next() {
SearchResult<T> v = base.next();
if (result==null) result = v;
return v.getItems(root);
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}