From ce140460af99ad73da3136f7a9343f61e5f2129b Mon Sep 17 00:00:00 2001 From: Marcin Zajaczkowski Date: Mon, 4 Apr 2016 17:30:48 +0200 Subject: [PATCH 01/21] [#269] Add reopen method on GHMilestone --- src/main/java/org/kohsuke/github/GHMilestone.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHMilestone.java b/src/main/java/org/kohsuke/github/GHMilestone.java index 0d1b43224e..48f8364bbf 100644 --- a/src/main/java/org/kohsuke/github/GHMilestone.java +++ b/src/main/java/org/kohsuke/github/GHMilestone.java @@ -72,12 +72,19 @@ public GHMilestoneState getState() { } /** - * Closes this issue. + * Closes this milestone. */ public void close() throws IOException { edit("state", "closed"); } + /** + * Reopens this milestone. + */ + public void reopen() throws IOException { + edit("state", "open"); + } + private void edit(String key, Object value) throws IOException { new Requester(root)._with(key, value).method("PATCH").to(getApiRoute()); } From 6b5ade3ca09bb53a5880dc227fd187fc51299f7c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Wed, 13 Apr 2016 13:08:02 -0700 Subject: [PATCH 02/21] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 399b8b56e4..437851005b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.75 + 1.76-SNAPSHOT GitHub API for Java http://github-api.kohsuke.org/ GitHub API for Java @@ -16,7 +16,7 @@ scm:git:git@github.com/kohsuke/${project.artifactId}.git scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git http://${project.artifactId}.kohsuke.org/ - github-api-1.75 + HEAD From beae9fd6ec1b94fd58fd6260a38a8c4eacf333bc Mon Sep 17 00:00:00 2001 From: noctarius Date: Thu, 14 Apr 2016 07:09:05 +0200 Subject: [PATCH 03/21] Added support for the extended stargazers API in Github V3 API --- .../java/org/kohsuke/github/GHRepository.java | 26 +++++++++- .../java/org/kohsuke/github/GHStargazer.java | 48 +++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/kohsuke/github/GHStargazer.java diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 326564e521..26cba13087 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -935,12 +935,36 @@ public PagedIterable listSubscribers() { } /** - * Lists all the users who have starred this repo. + * Lists all the users who have starred this repo based on the old version of the API. For + * additional information, like date when the repository was starred, see {@link #listExtendedStargazers()} */ public PagedIterable listStargazers() { return listUsers("stargazers"); } + /** + * Lists all the users who have starred this repo based on new version of the API, having extended + * information like the time when the repository was starred. For compatibility with the old API + * see {@link #listStargazers()} + */ + public PagedIterable listExtendedStargazers() { + return new PagedIterable() { + @Override + public PagedIterator _iterator(int pageSize) { + Requester requester = root.retrieve(); + requester.setHeader("Accept", "application/vnd.github.v3.star+json"); + return new PagedIterator(requester.asIterator(getApiTailUrl("stargazers"), GHStargazer[].class, pageSize)) { + @Override + protected void wrapUp(GHStargazer[] page) { + for (GHStargazer c : page) { + c.wrapUp(GHRepository.this); + } + } + }; + } + }; + } + private PagedIterable listUsers(final String suffix) { return new PagedIterable() { public PagedIterator _iterator(int pageSize) { diff --git a/src/main/java/org/kohsuke/github/GHStargazer.java b/src/main/java/org/kohsuke/github/GHStargazer.java new file mode 100644 index 0000000000..20b3ef8a7d --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHStargazer.java @@ -0,0 +1,48 @@ +package org.kohsuke.github; + +import java.util.Date; + +/** + * A stargazer at a repository on GitHub. + * + * @author noctarius + */ +public class GHStargazer { + + private GHRepository repository; + private String starred_at; + private GHUser user; + + /** + * Gets the repository that is stargazed + * + * @return the starred repository + */ + public GHRepository getRepository() { + return repository; + } + + /** + * Gets the date when the repository was starred, however old stars before + * August 2012, will all show the date the API was changed to support starred_at. + * + * @return the date the stargazer was added + */ + public Date getStarredAt() { + return GitHub.parseDate(starred_at); + } + + /** + * Gets the user that starred the repository + * + * @return the stargazer user + */ + public GHUser getUser() { + return user; + } + + void wrapUp(GHRepository repository) { + this.repository = repository; + user.wrapUp(repository.root); + } +} From 007378c3a6f4d8ea87abd1dfd6a7f8cfc9feac80 Mon Sep 17 00:00:00 2001 From: thug-gamer Date: Fri, 29 Apr 2016 11:41:14 +0200 Subject: [PATCH 04/21] Add support to delete a team Add a method to delete a team. --- src/main/java/org/kohsuke/github/GHTeam.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java index cf7dd1fc91..76555f6da7 100644 --- a/src/main/java/org/kohsuke/github/GHTeam.java +++ b/src/main/java/org/kohsuke/github/GHTeam.java @@ -126,6 +126,13 @@ public void add(GHRepository r) throws IOException { public void remove(GHRepository r) throws IOException { org.root.retrieve().method("DELETE").to(api("/repos/" + r.getOwnerName() + '/' + r.getName()), null); } + + /** + * Deletes this team. + */ + public void delete() throws IOException { + org.root.retrieve().method("DELETE").to(api("")); + } private String api(String tail) { return "/teams/"+id+tail; From baedad81240b75334a7ddf138a015ef6207de76b Mon Sep 17 00:00:00 2001 From: Konda Reddy Date: Sat, 30 Apr 2016 13:20:44 -0500 Subject: [PATCH 05/21] Updated Date was wrong --- src/main/java/org/kohsuke/github/GHPerson.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java index e9a750f2cc..ef93dd75aa 100644 --- a/src/main/java/org/kohsuke/github/GHPerson.java +++ b/src/main/java/org/kohsuke/github/GHPerson.java @@ -204,7 +204,7 @@ public Date getCreatedAt() throws IOException { public Date getUpdatedAt() throws IOException { populate(); - return super.getCreatedAt(); + return super.getUpdatedAt(); } /** From 35dec7a5ec3d1a8174176356e62b81746e085b7f Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 3 May 2016 18:19:57 -0400 Subject: [PATCH 06/21] Fixed broken link. --- src/main/java/org/kohsuke/github/GHEvent.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHEvent.java b/src/main/java/org/kohsuke/github/GHEvent.java index e8e79bb456..b33cb991eb 100644 --- a/src/main/java/org/kohsuke/github/GHEvent.java +++ b/src/main/java/org/kohsuke/github/GHEvent.java @@ -5,10 +5,9 @@ /** * Hook event type. * - * See http://developer.github.com/v3/events/types/ - * * @author Kohsuke Kawaguchi * @see GHEventInfo + * @see Event type reference */ public enum GHEvent { COMMIT_COMMENT, From d530b34073d575261974104ddb435798e5fb6b98 Mon Sep 17 00:00:00 2001 From: Andy Pemberton Date: Sat, 14 May 2016 08:58:42 -0400 Subject: [PATCH 07/21] Add Slug to GHTeam per v3 API: https://developer.github.com/v3/orgs/teams/ --- src/main/java/org/kohsuke/github/GHOrganization.java | 11 +++++++++++ src/main/java/org/kohsuke/github/GHTeam.java | 6 +++++- src/test/java/org/kohsuke/github/AppTest.java | 7 +++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index c4ae92e6db..0c62fd8a2a 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -93,6 +93,17 @@ public GHTeam getTeamByName(String name) throws IOException { return null; } + /** + * Finds a team that has the given slug in its {@link GHTeam#getSlug()} + */ + public GHTeam getTeamBySlug(String slug) throws IOException { + for (GHTeam t : listTeams()) { + if(t.getSlug().equals(slug)) + return t; + } + return null; + } + /** * Checks if this organization has the specified user as a member. */ diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java index cf7dd1fc91..e0cd33b8bd 100644 --- a/src/main/java/org/kohsuke/github/GHTeam.java +++ b/src/main/java/org/kohsuke/github/GHTeam.java @@ -12,7 +12,7 @@ * @author Kohsuke Kawaguchi */ public class GHTeam { - private String name,permission; + private String name,permission,slug; private int id; private GHOrganization organization; // populated by GET /user/teams where Teams+Orgs are returned together @@ -43,6 +43,10 @@ public String getPermission() { return permission; } + public String getSlug() { + return slug; + } + public int getId() { return id; } diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index c8d523cd81..905818981b 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -335,6 +335,13 @@ public void testOrgTeamByName() throws Exception { assertNotNull(e); } + @Test + public void testOrgTeamBySlug() throws Exception { + kohsuke(); + GHTeam e = gitHub.getOrganization("github-api-test-org").getTeamBySlug("core-developers"); + assertNotNull(e); + } + @Test public void testCommit() throws Exception { GHCommit commit = gitHub.getUser("jenkinsci").getRepository("jenkins").getCommit("08c1c9970af4d609ae754fbe803e06186e3206f7"); From 5f95987a487491aa9b1584051b3304c171d32bce Mon Sep 17 00:00:00 2001 From: Andy Pemberton Date: Sat, 14 May 2016 20:07:04 -0400 Subject: [PATCH 08/21] related to JENKINS-34834. updating test for similar condition --- src/test/java/org/kohsuke/github/AppTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index c8d523cd81..06ddabf443 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -221,10 +221,12 @@ public void testMyOrganizations() throws IOException { } @Test - public void testMyTeamsContainsAllMyOrganizations() throws IOException { + public void testMyOrganizationsContainMyTeams() throws IOException { Map> teams = gitHub.getMyTeams(); Map myOrganizations = gitHub.getMyOrganizations(); - assertEquals(teams.keySet(), myOrganizations.keySet()); + //GitHub no longer has default 'owners' team, so there may be organization memberships without a team + //https://help.github.com/articles/about-improved-organization-permissions/ + assertTrue(myOrganizations.keySet().containsAll(teams.keySet())); } @Test From 3c5592c1c8e77341a3c24213e779a464b77228c0 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Thu, 2 Jun 2016 22:05:24 -0700 Subject: [PATCH 09/21] Following the convention with GHMyself.getEmails2() This way the method is more discoverable with IDE auto-completion --- src/main/java/org/kohsuke/github/GHRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 26cba13087..3e7962b566 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -936,7 +936,7 @@ public PagedIterable listSubscribers() { /** * Lists all the users who have starred this repo based on the old version of the API. For - * additional information, like date when the repository was starred, see {@link #listExtendedStargazers()} + * additional information, like date when the repository was starred, see {@link #listStargazers2()} */ public PagedIterable listStargazers() { return listUsers("stargazers"); @@ -947,7 +947,7 @@ public PagedIterable listStargazers() { * information like the time when the repository was starred. For compatibility with the old API * see {@link #listStargazers()} */ - public PagedIterable listExtendedStargazers() { + public PagedIterable listStargazers2() { return new PagedIterable() { @Override public PagedIterator _iterator(int pageSize) { From cde501af8de9b871dc53e656aac6b4bd22196dcb Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Thu, 2 Jun 2016 22:36:47 -0700 Subject: [PATCH 10/21] More meaningful toString() method Produce toString without dilligently adding it to every single class. Rely on heuristics to cut down the number of fields to show. --- src/main/java/org/kohsuke/github/GHIssue.java | 1 + .../java/org/kohsuke/github/GHObject.java | 40 +++++++++++++++++++ .../java/org/kohsuke/github/GHRepository.java | 8 +--- src/main/java/org/kohsuke/github/GHUser.java | 5 --- .../org/kohsuke/github/SkipFromToString.java | 16 ++++++++ src/test/java/org/kohsuke/github/AppTest.java | 13 ++++++ 6 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/kohsuke/github/SkipFromToString.java diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java index 39e5c24b70..a5afad6d2e 100644 --- a/src/main/java/org/kohsuke/github/GHIssue.java +++ b/src/main/java/org/kohsuke/github/GHIssue.java @@ -54,6 +54,7 @@ public class GHIssue extends GHObject { protected int number; protected String closed_at; protected int comments; + @SkipFromToString protected String body; // for backward compatibility with < 1.63, this collection needs to hold instances of Label, not GHLabel protected List