Skip to content

Commit

Permalink
Merge pull request #146
Browse files Browse the repository at this point in the history
  • Loading branch information
kohsuke committed Feb 14, 2015
1 parent e356675 commit 052902f
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 22 deletions.
37 changes: 15 additions & 22 deletions src/main/java/org/kohsuke/github/GHTeam.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
package org.kohsuke.github;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

/**
* A team in GitHub organization.
Expand Down Expand Up @@ -55,23 +50,21 @@ public int getId() {
/**
* Retrieves the current members.
*/
public Set<GHUser> getMembers() throws IOException {

Set<GHUser> members = new LinkedHashSet<GHUser>();

Iterator<GHUser[]> pageIterator = org.root.retrieve().asIterator(api("/members"),
GHUser[].class);
while (pageIterator != null && pageIterator.hasNext()) {
GHUser[] users = pageIterator.next();
if (users != null) {
GHUser.wrap(users, org.root);
for (GHUser user : users) {
members.add(user);
}
}
}

return Collections.unmodifiableSet(members);
public PagedIterable<GHUser> listMembers() throws IOException {
return new PagedIterable<GHUser>() {
public PagedIterator<GHUser> iterator() {
return new PagedIterator<GHUser>(org.root.retrieve().asIterator(api("/members"), GHUser[].class)) {
@Override
protected void wrapUp(GHUser[] page) {
GHUser.wrap(page, org.root);
}
};
}
};
}

public Set<GHUser> getMembers() throws IOException {
return Collections.unmodifiableSet(listMembers().asSet());
}

/**
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/org/kohsuke/github/PagedIterable.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.kohsuke.github;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

/**
* {@link Iterable} that returns {@link PagedIterator}
Expand All @@ -21,4 +23,15 @@ public List<T> asList() {
}
return r;
}

/**
* Eagerly walk {@link Iterable} and return the result in a set.
*/
public Set<T> asSet() {
LinkedHashSet<T> r = new LinkedHashSet<T>();
for(PagedIterator<T> i = iterator(); i.hasNext();) {
r.addAll(i.nextPage());
}
return r;
}
}
10 changes: 10 additions & 0 deletions src/test/java/org/kohsuke/github/AppTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,16 @@ public void testCommitStatusContext() throws IOException {

}

@Test
public void testMemberPagenation() throws IOException {
Set<GHUser> all = new HashSet<GHUser>();
for (GHUser u : gitHub.getOrganization("github-api-test-org").getTeamByName("Core Developers").listMembers()) {
System.out.println(u.getLogin());
all.add(u);
}
assertFalse(all.isEmpty());
}

private void kohsuke() {
String login = getUser().getLogin();
Assume.assumeTrue(login.equals("kohsuke") || login.equals("kohsuke2"));
Expand Down

0 comments on commit 052902f

Please sign in to comment.