diff --git a/pom.xml b/pom.xml index d89670607b..9ada1d503b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,11 +3,11 @@ org.kohsuke pom - 4 + 6 github-api - 1.42 + 1.43 GitHub API for Java http://github-api.kohsuke.org/ GitHub API for Java diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index d8f8cfe036..e02eccd6ee 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -130,10 +130,13 @@ public GHTeam createTeam(String name, Permission p, GHRepository... repositories /** * List up repositories that has some open pull requests. + * + * This used to be an efficient method that didn't involve traversing every repository, but now + * it doesn't do any optimization. */ public List getRepositoriesWithOpenPullRequests() throws IOException { List r = new ArrayList(); - for (GHRepository repository : root.retrieve().to("/orgs/" + login + "/repos", GHRepository[].class)) { + for (GHRepository repository : listRepositories()) { repository.wrap(root); List pullRequests = repository.getPullRequests(GHIssueState.OPEN); if (pullRequests.size() > 0) { diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java index 7f65277f4f..721eeb2257 100644 --- a/src/main/java/org/kohsuke/github/GHPerson.java +++ b/src/main/java/org/kohsuke/github/GHPerson.java @@ -54,6 +54,25 @@ public synchronized Map getRepositories() throws IOExceptio return Collections.unmodifiableMap(repositories); } + /** + * Lists up all the repositories. + * + * Unlike {@link #getRepositories()}, this does not wait until all the repositories are returned. + */ + public PagedIterable listRepositories() { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator("/users/" + login + "/repos", GHRepository[].class)) { + @Override + protected void wrapUp(GHRepository[] page) { + for (GHRepository c : page) + c.wrap(root); + } + }; + } + }; + } + /** * Loads repository list in a pagenated fashion. * @@ -63,6 +82,9 @@ public synchronized Map getRepositories() throws IOExceptio * * Every {@link Iterator#next()} call results in I/O. Exceptions that occur during the processing is wrapped * into {@link Error}. + * + * @deprecated + * Use {@link #listRepositories()} */ public synchronized Iterable> iterateRepositories(final int pageSize) { return new Iterable>() { diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 8adf7e352f..7cebf53765 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -123,7 +123,7 @@ private GitHub(String apiUrl, String login, String oauthAccessToken, String pass } } - if (login==null) + if (login==null && encodedAuthorization!=null) login = getMyself().getLogin(); this.login = login; }