From d4404713a830b01a6b04536d44f7341e3eccde2d Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 9 Sep 2017 13:28:40 -0700 Subject: [PATCH 01/15] [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 fffadeffd9..ff898cccd0 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.89 + 1.90-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.89 + HEAD From b443e866f9fd6c8ebff390562ca4304d79aaf71c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 9 Sep 2017 20:38:40 -0700 Subject: [PATCH 02/15] Added lock/unlock op and additional properties Issue #355 --- src/main/java/org/kohsuke/github/GHIssue.java | 13 +++++++++++++ .../java/org/kohsuke/github/GHPullRequest.java | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java index 6b416ca1d3..117c06f8d8 100644 --- a/src/main/java/org/kohsuke/github/GHIssue.java +++ b/src/main/java/org/kohsuke/github/GHIssue.java @@ -68,6 +68,7 @@ public class GHIssue extends GHObject implements Reactable{ protected GHIssue.PullRequest pull_request; protected GHMilestone milestone; protected GHUser closed_by; + protected boolean locked; /** * @deprecated use {@link GHLabel} @@ -129,6 +130,10 @@ public String getTitle() { return title; } + public boolean isLocked() { + return locked; + } + public GHIssueState getState() { return Enum.valueOf(GHIssueState.class, state.toUpperCase(Locale.ENGLISH)); } @@ -148,6 +153,14 @@ public URL getApiURL(){ return GitHub.parseURL(url); } + public void lock() throws IOException { + new Requester(root).method("PUT").to(getApiRoute()+"/lock"); + } + + public void unlock() throws IOException { + new Requester(root).method("PUT").to(getApiRoute()+"/lock"); + } + /** * Updates the issue by adding a comment. * diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java index 6e1a5d90e5..9342623829 100644 --- a/src/main/java/org/kohsuke/github/GHPullRequest.java +++ b/src/main/java/org/kohsuke/github/GHPullRequest.java @@ -50,8 +50,8 @@ public class GHPullRequest extends GHIssue { // details that are only available when obtained from ID private GHUser merged_by; - private int review_comments, additions; - private boolean merged; + private int review_comments, additions, commits; + private boolean merged, maintainer_can_modify; private Boolean mergeable; private int deletions; private String mergeable_state; @@ -167,11 +167,21 @@ public int getAdditions() throws IOException { return additions; } + public int getCommits() throws IOException { + populate(); + return commits; + } + public boolean isMerged() throws IOException { populate(); return merged; } + public boolean canMaintainerModify() throws IOException { + populate(); + return maintainer_can_modify; + } + public Boolean getMergeable() throws IOException { populate(); return mergeable; From 7735edeae87652c1fa8196e7956851a39f5a84d4 Mon Sep 17 00:00:00 2001 From: Arne Burmeister Date: Mon, 23 Oct 2017 17:05:02 +0200 Subject: [PATCH 03/15] extend id from int to long --- .../org/kohsuke/github/GHDeploymentStatusBuilder.java | 4 ++-- src/main/java/org/kohsuke/github/GHObject.java | 8 ++++---- src/main/java/org/kohsuke/github/GHRepository.java | 4 ++-- src/main/java/org/kohsuke/github/GitHub.java | 2 +- src/test/java/org/kohsuke/github/AppTest.java | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java index f028b6f889..badd33f9f7 100644 --- a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java +++ b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java @@ -5,9 +5,9 @@ public class GHDeploymentStatusBuilder { private final Requester builder; private GHRepository repo; - private int deploymentId; + private long deploymentId; - public GHDeploymentStatusBuilder(GHRepository repo, int deploymentId, GHDeploymentState state) { + public GHDeploymentStatusBuilder(GHRepository repo, long deploymentId, GHDeploymentState state) { this.repo = repo; this.deploymentId = deploymentId; this.builder = new Requester(repo.root); diff --git a/src/main/java/org/kohsuke/github/GHObject.java b/src/main/java/org/kohsuke/github/GHObject.java index 96e41a2559..4a4faf8deb 100644 --- a/src/main/java/org/kohsuke/github/GHObject.java +++ b/src/main/java/org/kohsuke/github/GHObject.java @@ -25,7 +25,7 @@ public abstract class GHObject { protected Map> responseHeaderFields; protected String url; - protected int id; + protected long id; protected String created_at; protected String updated_at; @@ -84,13 +84,13 @@ public Date getUpdatedAt() throws IOException { /** * Unique ID number of this resource. */ - @WithBridgeMethods(value=String.class, adapterMethod="intToString") - public int getId() { + @WithBridgeMethods(value=String.class, adapterMethod="longToString") + public long getId() { return id; } @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getId") - private Object intToString(int id, Class type) { + private Object longToString(long id, Class type) { return String.valueOf(id); } diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 29cac80d44..a743e16ed2 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -95,7 +95,7 @@ public GHDeploymentBuilder createDeployment(String ref) { return new GHDeploymentBuilder(this,ref); } - public PagedIterable getDeploymentStatuses(final int id) { + public PagedIterable getDeploymentStatuses(final long id) { return new PagedIterable() { public PagedIterator _iterator(int pageSize) { return new PagedIterator(root.retrieve().asIterator(getApiTailUrl("deployments")+"/"+id+"/statuses", GHDeploymentStatus[].class, pageSize)) { @@ -140,7 +140,7 @@ private String getParam(String name, String value) { return StringUtils.trimToNull(value)== null? null: name+"="+value; } - public GHDeploymentStatusBuilder createDeployStatus(int deploymentId, GHDeploymentState ghDeploymentState) { + public GHDeploymentStatusBuilder createDeployStatus(long deploymentId, GHDeploymentState ghDeploymentState) { return new GHDeploymentStatusBuilder(this,deploymentId,ghDeploymentState); } diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 62c1b4e80c..5c9ad4715f 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -793,7 +793,7 @@ public PagedIterable listAllPublicRepositories() { * This provides a dump of every public repository, in the order that they were created. * * @param since - * The integer ID of the last Repository that you’ve seen. See {@link GHRepository#getId()} + * The numeric ID of the last Repository that you’ve seen. See {@link GHRepository#getId()} * @see documentation */ public PagedIterable listAllPublicRepositories(final String since) { diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 7087920dd7..5d1d96db0c 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -784,7 +784,7 @@ public void testListAllRepositories() throws Exception { GHRepository r = itr.next(); System.out.println(r.getFullName()); assertNotNull(r.getUrl()); - assertNotEquals(0,r.getId()); + assertNotEquals(0L,r.getId()); } } From 6415785220b2cfab393a12a68efcc4c274d208a2 Mon Sep 17 00:00:00 2001 From: Arne Burmeister Date: Mon, 23 Oct 2017 17:05:31 +0200 Subject: [PATCH 04/15] boyscout: updated dependencies --- pom.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index ff898cccd0..3299352264 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ com.infradna.tool bridge-method-injector - 1.14 + 1.17 @@ -108,7 +108,7 @@ junit junit - 4.11 + 4.12 test @@ -120,7 +120,7 @@ com.fasterxml.jackson.core jackson-databind - 2.2.3 + 2.9.2 commons-io @@ -130,7 +130,7 @@ com.infradna.tool bridge-method-annotation - 1.14 + 1.17 org.kohsuke.stapler @@ -141,7 +141,7 @@ org.eclipse.jgit org.eclipse.jgit - 3.1.0.201310021548-r + 4.9.0.201710071750-r test @@ -153,25 +153,25 @@ com.squareup.okhttp3 okhttp-urlconnection - 3.4.0 + 3.9.0 true org.kohsuke wordnet-random-name - 1.2 + 1.3 test org.mockito mockito-all - 1.9.5 + 1.10.19 test com.google.code.findbugs annotations - 3.0.0 + 3.0.1 provided From 40d8f4a352d57dbb214759d32c6f38ffbeb2914d Mon Sep 17 00:00:00 2001 From: iraleigh Date: Tue, 24 Oct 2017 14:24:25 -0700 Subject: [PATCH 05/15] Fixed OAuth connection to enterprise API --- src/main/java/org/kohsuke/github/GitHub.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 62c1b4e80c..7eabda9a54 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -178,6 +178,10 @@ public static GitHub connectToEnterprise(String apiUrl, String oauthAccessToken) return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken).build(); } + public static GitHub connectToEnterpriseWtihOAuth(String apiUrl, String login, String oauthAccessToken) throws IOException { + return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken, login).build(); + } + public static GitHub connectToEnterprise(String apiUrl, String login, String password) throws IOException { return new GitHubBuilder().withEndpoint(apiUrl).withPassword(login, password).build(); } From 46dce17abc958dcb70b5a655d6931c13f6ecf9a9 Mon Sep 17 00:00:00 2001 From: iraleigh Date: Tue, 24 Oct 2017 14:53:23 -0700 Subject: [PATCH 06/15] Fixed Typo --- src/main/java/org/kohsuke/github/GitHub.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 7eabda9a54..c486445ce1 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -178,7 +178,7 @@ public static GitHub connectToEnterprise(String apiUrl, String oauthAccessToken) return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken).build(); } - public static GitHub connectToEnterpriseWtihOAuth(String apiUrl, String login, String oauthAccessToken) throws IOException { + public static GitHub connectToEnterpriseWithOAuth(String apiUrl, String login, String oauthAccessToken) throws IOException { return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken, login).build(); } From 569fa06d2dd51877b3df7b7807c60ae18e167198 Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Wed, 25 Oct 2017 14:06:28 +0200 Subject: [PATCH 07/15] Labels: add method to update color --- src/main/java/org/kohsuke/github/GHLabel.java | 4 ++++ src/test/java/org/kohsuke/github/AppTest.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHLabel.java b/src/main/java/org/kohsuke/github/GHLabel.java index 5d1b3b48a2..83a6964a97 100644 --- a/src/main/java/org/kohsuke/github/GHLabel.java +++ b/src/main/java/org/kohsuke/github/GHLabel.java @@ -34,4 +34,8 @@ public String getColor() { public void delete() throws IOException { repo.root.retrieve().method("DELETE").to(url); } + + public void updateColor(String newColor) throws IOException { + repo.root.retrieve().method("PATCH").with("name", name).with("color", newColor).to(url); + } } diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 7087920dd7..6c7a84bbc3 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -753,6 +753,10 @@ public void testRepoLabel() throws IOException { assertEquals(t.getColor(), "123456"); assertEquals(t.getColor(), t2.getColor()); assertEquals(t.getUrl(), t2.getUrl()); + + t.updateColor("000000"); + GHLabel t3 = r.getLabel("test"); + assertEquals(t3.getColor(), "000000"); t.delete(); } } From e94ba74058fa806af30095b1a4c38c0196c6569c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 07:44:23 -0700 Subject: [PATCH 08/15] Convention is to call these methods setXyz. Plus doc --- src/main/java/org/kohsuke/github/GHLabel.java | 6 +++++- src/test/java/org/kohsuke/github/AppTest.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHLabel.java b/src/main/java/org/kohsuke/github/GHLabel.java index 83a6964a97..3792fdcca3 100644 --- a/src/main/java/org/kohsuke/github/GHLabel.java +++ b/src/main/java/org/kohsuke/github/GHLabel.java @@ -35,7 +35,11 @@ public void delete() throws IOException { repo.root.retrieve().method("DELETE").to(url); } - public void updateColor(String newColor) throws IOException { + /** + * @param newColor + * 6-letter hex color code, like "f29513" + */ + public void setColor(String newColor) throws IOException { repo.root.retrieve().method("PATCH").with("name", name).with("color", newColor).to(url); } } diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 6c7a84bbc3..f3041044b8 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -754,7 +754,7 @@ public void testRepoLabel() throws IOException { assertEquals(t.getColor(), t2.getColor()); assertEquals(t.getUrl(), t2.getUrl()); - t.updateColor("000000"); + t.setColor("000000"); GHLabel t3 = r.getLabel("test"); assertEquals(t3.getColor(), "000000"); t.delete(); From 4849619d679d3f94d1637aa99229714372e33a72 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 07:54:41 -0700 Subject: [PATCH 09/15] None of the connectToEnterprise methods are preferrable so document accordingly --- src/main/java/org/kohsuke/github/GitHub.java | 20 +++++++++++++++---- .../org/kohsuke/github/GitHubBuilder.java | 6 ++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index c486445ce1..60fe15e493 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -166,6 +166,16 @@ public static GitHub connect() throws IOException { return GitHubBuilder.fromCredentials().build(); } + /** + * Version that connects to GitHub Enterprise. + * + * @deprecated + * Use {@link #connectToEnterpriseWithOAuth(String, String, String)} + */ + public static GitHub connectToEnterprise(String apiUrl, String oauthAccessToken) throws IOException { + return connectToEnterpriseWithOAuth(apiUrl,null,oauthAccessToken); + } + /** * Version that connects to GitHub Enterprise. * @@ -174,14 +184,16 @@ public static GitHub connect() throws IOException { * "http://ghe.acme.com/api/v3". Note that GitHub Enterprise has /api/v3 in the URL. * For historical reasons, this parameter still accepts the bare domain name, but that's considered deprecated. */ - public static GitHub connectToEnterprise(String apiUrl, String oauthAccessToken) throws IOException { - return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken).build(); - } - public static GitHub connectToEnterpriseWithOAuth(String apiUrl, String login, String oauthAccessToken) throws IOException { return new GitHubBuilder().withEndpoint(apiUrl).withOAuthToken(oauthAccessToken, login).build(); } + /** + * Version that connects to GitHub Enterprise. + * + * @deprecated + * Use with caution. Login with password is not a preferred method. + */ public static GitHub connectToEnterprise(String apiUrl, String login, String password) throws IOException { return new GitHubBuilder().withEndpoint(apiUrl).withPassword(login, password).build(); } diff --git a/src/main/java/org/kohsuke/github/GitHubBuilder.java b/src/main/java/org/kohsuke/github/GitHubBuilder.java index 62a99a6272..e54359892c 100644 --- a/src/main/java/org/kohsuke/github/GitHubBuilder.java +++ b/src/main/java/org/kohsuke/github/GitHubBuilder.java @@ -154,6 +154,12 @@ public static GitHubBuilder fromProperties(Properties props) { return self; } + /** + * @param endpoint + * The URL of GitHub (or GitHub enterprise) API endpoint, such as "https://api.github.com" or + * "http://ghe.acme.com/api/v3". Note that GitHub Enterprise has /api/v3 in the URL. + * For historical reasons, this parameter still accepts the bare domain name, but that's considered deprecated. + */ public GitHubBuilder withEndpoint(String endpoint) { this.endpoint = endpoint; return this; From b6063dd534df6b4c598de25d0177b001874591d0 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 08:42:27 -0700 Subject: [PATCH 10/15] Restored binary compatibility --- .../github/GHDeploymentStatusBuilder.java | 8 ++++++++ src/main/java/org/kohsuke/github/GHObject.java | 9 ++++++--- .../java/org/kohsuke/github/GHRepository.java | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java index badd33f9f7..13d08071e2 100644 --- a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java +++ b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java @@ -7,6 +7,14 @@ public class GHDeploymentStatusBuilder { private GHRepository repo; private long deploymentId; + /** + * @deprecated + * ID is long now. + */ + public GHDeploymentStatusBuilder(GHRepository repo, int deploymentId, GHDeploymentState state) { + this(repo,(long)deploymentId,state); + } + public GHDeploymentStatusBuilder(GHRepository repo, long deploymentId, GHDeploymentState state) { this.repo = repo; this.deploymentId = deploymentId; diff --git a/src/main/java/org/kohsuke/github/GHObject.java b/src/main/java/org/kohsuke/github/GHObject.java index 4a4faf8deb..45ca69750e 100644 --- a/src/main/java/org/kohsuke/github/GHObject.java +++ b/src/main/java/org/kohsuke/github/GHObject.java @@ -84,14 +84,17 @@ public Date getUpdatedAt() throws IOException { /** * Unique ID number of this resource. */ - @WithBridgeMethods(value=String.class, adapterMethod="longToString") + @WithBridgeMethods(value={String.class,int.class}, adapterMethod="longToStringOrInt") public long getId() { return id; } @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getId") - private Object longToString(long id, Class type) { - return String.valueOf(id); + private Object longToStringOrInt(long id, Class type) { + if (type==String.class) + return String.valueOf(id); + else + return (int)id; } @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getHtmlUrl") diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index a743e16ed2..1ae163d152 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -95,6 +95,14 @@ public GHDeploymentBuilder createDeployment(String ref) { return new GHDeploymentBuilder(this,ref); } + /** + * @deprecated + * Use {@link #getDeploymentStatuses(long)} + */ + public PagedIterable getDeploymentStatuses(final int id) { + return getDeploymentStatuses((long)id); + } + public PagedIterable getDeploymentStatuses(final long id) { return new PagedIterable() { public PagedIterator _iterator(int pageSize) { @@ -140,6 +148,14 @@ private String getParam(String name, String value) { return StringUtils.trimToNull(value)== null? null: name+"="+value; } + /** + * @deprecated + * Use {@link #createDeployStatus(long, GHDeploymentState)} + */ + public GHDeploymentStatusBuilder createDeployStatus(int deploymentId, GHDeploymentState ghDeploymentState) { + return createDeployStatus((long)deploymentId,ghDeploymentState); + } + public GHDeploymentStatusBuilder createDeployStatus(long deploymentId, GHDeploymentState ghDeploymentState) { return new GHDeploymentStatusBuilder(this,deploymentId,ghDeploymentState); } From ab3d9e82efc34b45f53dd94bf7e08046bd801612 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 08:43:48 -0700 Subject: [PATCH 11/15] A little better version of the bridge method --- src/main/java/org/kohsuke/github/GHObject.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHObject.java b/src/main/java/org/kohsuke/github/GHObject.java index 45ca69750e..3b26ed77cc 100644 --- a/src/main/java/org/kohsuke/github/GHObject.java +++ b/src/main/java/org/kohsuke/github/GHObject.java @@ -93,8 +93,9 @@ public long getId() { private Object longToStringOrInt(long id, Class type) { if (type==String.class) return String.valueOf(id); - else + if (type==int.class) return (int)id; + throw new AssertionError("Unexpected type: "+type); } @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getHtmlUrl") From 83c2c4e92e7026a68b77d37f2524e9b1c44ef2dc Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 08:59:41 -0700 Subject: [PATCH 12/15] Fixed the broken design of how GHDeploymentStatus get exposed. --- .../java/org/kohsuke/github/GHDeployment.java | 26 ++++++++++++++ .../github/GHDeploymentStatusBuilder.java | 12 +++++-- .../java/org/kohsuke/github/GHRepository.java | 36 +++++++------------ 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHDeployment.java b/src/main/java/org/kohsuke/github/GHDeployment.java index 0cef10ee52..42118f3329 100644 --- a/src/main/java/org/kohsuke/github/GHDeployment.java +++ b/src/main/java/org/kohsuke/github/GHDeployment.java @@ -3,6 +3,13 @@ import java.io.IOException; import java.net.URL; +/** + * Represents a deployment + * + * @see documentation + * @see GHRepository#listDeployments(String, String, String, String) + * @see GHRepository#getDeployment(long) + */ public class GHDeployment extends GHObject { private GHRepository owner; private GitHub root; @@ -58,4 +65,23 @@ public String getSha(){ public URL getHtmlUrl() { return null; } + + public GHDeploymentStatusBuilder createStatus(GHDeploymentState state) { + return new GHDeploymentStatusBuilder(owner,id,state); + } + + public PagedIterable listStatuses() { + return new PagedIterable() { + public PagedIterator _iterator(int pageSize) { + return new PagedIterator(root.retrieve().asIterator(statuses_url, GHDeploymentStatus[].class, pageSize)) { + @Override + protected void wrapUp(GHDeploymentStatus[] page) { + for (GHDeploymentStatus c : page) + c.wrap(owner); + } + }; + } + }; + } + } diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java index 13d08071e2..821a3e744e 100644 --- a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java +++ b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java @@ -2,6 +2,12 @@ import java.io.IOException; +/** + * Creates a new deployment status. + * + * @see + * GHDeployment#createStatus(GHDeploymentState) + */ public class GHDeploymentStatusBuilder { private final Requester builder; private GHRepository repo; @@ -9,13 +15,13 @@ public class GHDeploymentStatusBuilder { /** * @deprecated - * ID is long now. + * Use {@link GHDeployment#createStatus(GHDeploymentState)} */ public GHDeploymentStatusBuilder(GHRepository repo, int deploymentId, GHDeploymentState state) { this(repo,(long)deploymentId,state); } - public GHDeploymentStatusBuilder(GHRepository repo, long deploymentId, GHDeploymentState state) { + /*package*/ GHDeploymentStatusBuilder(GHRepository repo, long deploymentId, GHDeploymentState state) { this.repo = repo; this.deploymentId = deploymentId; this.builder = new Requester(repo.root); @@ -33,6 +39,6 @@ public GHDeploymentStatusBuilder targetUrl(String targetUrl) { } public GHDeploymentStatus create() throws IOException { - return builder.to(repo.getApiTailUrl("deployments")+"/"+deploymentId+"/statuses",GHDeploymentStatus.class).wrap(repo); + return builder.to(repo.getApiTailUrl("deployments/"+deploymentId+"/statuses"),GHDeploymentStatus.class).wrap(repo); } } diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 1ae163d152..4dfd1397bc 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -97,24 +97,10 @@ public GHDeploymentBuilder createDeployment(String ref) { /** * @deprecated - * Use {@link #getDeploymentStatuses(long)} + * Use {@code getDeployment(id).listStatuses()} */ - public PagedIterable getDeploymentStatuses(final int id) { - return getDeploymentStatuses((long)id); - } - - public PagedIterable getDeploymentStatuses(final long id) { - return new PagedIterable() { - public PagedIterator _iterator(int pageSize) { - return new PagedIterator(root.retrieve().asIterator(getApiTailUrl("deployments")+"/"+id+"/statuses", GHDeploymentStatus[].class, pageSize)) { - @Override - protected void wrapUp(GHDeploymentStatus[] page) { - for (GHDeploymentStatus c : page) - c.wrap(GHRepository.this); - } - }; - } - }; + public PagedIterable getDeploymentStatuses(final int id) throws IOException { + return getDeployment(id).listStatuses(); } public PagedIterable listDeployments(String sha,String ref,String task,String environment){ @@ -131,7 +117,13 @@ protected void wrapUp(GHDeployment[] page) { }; } }; + } + /** + * Obtains a single {@link GHDeployment} by its ID. + */ + public GHDeployment getDeployment(long id) throws IOException { + return root.retrieve().to("deployments/" + id, GHDeployment.class).wrap(this); } private String join(List params, String joinStr) { @@ -150,14 +142,10 @@ private String getParam(String name, String value) { /** * @deprecated - * Use {@link #createDeployStatus(long, GHDeploymentState)} + * Use {@code getDeployment(deploymentId).createStatus(ghDeploymentState)} */ - public GHDeploymentStatusBuilder createDeployStatus(int deploymentId, GHDeploymentState ghDeploymentState) { - return createDeployStatus((long)deploymentId,ghDeploymentState); - } - - public GHDeploymentStatusBuilder createDeployStatus(long deploymentId, GHDeploymentState ghDeploymentState) { - return new GHDeploymentStatusBuilder(this,deploymentId,ghDeploymentState); + public GHDeploymentStatusBuilder createDeployStatus(int deploymentId, GHDeploymentState ghDeploymentState) throws IOException { + return getDeployment(deploymentId).createStatus(ghDeploymentState); } private static class GHRepoPermission { From 60c9ba88ae3e2df490ba1426c3d474aa47a5de73 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 15:27:38 -0700 Subject: [PATCH 13/15] Updated tests --- src/test/java/org/kohsuke/github/AppTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 9c75684356..e069a74edb 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -134,10 +134,10 @@ public void testGetDeploymentStatuses() throws IOException { .description("question") .payload("{\"user\":\"atmos\",\"room_id\":123456}") .create(); - GHDeploymentStatus ghDeploymentStatus = repository.createDeployStatus(deployment.getId(), GHDeploymentState.SUCCESS) + GHDeploymentStatus ghDeploymentStatus = deployment.createStatus(GHDeploymentState.SUCCESS) .description("success") .targetUrl("http://www.github.com").create(); - Iterable deploymentStatuses = repository.getDeploymentStatuses(deployment.getId()); + Iterable deploymentStatuses = deployment.listStatuses(); assertNotNull(deploymentStatuses); assertEquals(1,Iterables.size(deploymentStatuses)); assertEquals(ghDeploymentStatus.getId(), Iterables.get(deploymentStatuses, 0).getId()); From 0b069df9cefcfc9c17a55c2fea59d8929b0e46f6 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 15:48:26 -0700 Subject: [PATCH 14/15] Pick up the version that fixes int->long adaption --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3299352264..21816ef4a7 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ com.infradna.tool bridge-method-injector - 1.17 + 1.18 From 2b7c5249085c21d46163d1ec85da107ce6b914a3 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Sat, 28 Oct 2017 15:54:33 -0700 Subject: [PATCH 15/15] [maven-release-plugin] prepare release github-api-1.90 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 21816ef4a7..bc4e873120 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.90-SNAPSHOT + 1.90 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/ - HEAD + github-api-1.90