aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bitbucketpullrequestbuilder
diff options
context:
space:
mode:
authorS.Nishio <nishio@densan-labs.net>2017-01-01 01:17:33 +0900
committerGitHub <noreply@github.com>2017-01-01 01:17:33 +0900
commita352fbf76c5ce320f88de7a2e38476d0d0547845 (patch)
treed43c0048f99dad64c7124131902f22783b59a3bd /src/main/java/bitbucketpullrequestbuilder
parentfa120fa3e9cfd437594306c500270bc9bbf601a2 (diff)
parent3f1ccecdf1acee11f43377a613b4943580a38ea8 (diff)
downloadbbprb-a352fbf76c5ce320f88de7a2e38476d0d0547845.tar.gz
Merge pull request #7 from csomme/bitbucket-v2-pr-comments-api
Use the 2.0 Bitbucket pull request comment API.
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder')
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java39
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/Pullrequest.java32
2 files changed, 47 insertions, 24 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java
index f5ccf9b..759c696 100644
--- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java
+++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java
@@ -7,9 +7,12 @@ import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.type.TypeFactory;
+import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
@@ -89,23 +92,11 @@ public class ApiClient {
}
public List<Pullrequest> getPullRequests() {
- try {
- return parse(get(v2("/pullrequests/")), Pullrequest.Response.class).getPullrequests();
- } catch(Exception e) {
- logger.log(Level.WARNING, "invalid pull request response.", e);
- e.printStackTrace();
- }
- return Collections.EMPTY_LIST;
+ return getAllValues(v2("/pullrequests/"), 50, Pullrequest.class);
}
public List<Pullrequest.Comment> getPullRequestComments(String commentOwnerName, String commentRepositoryName, String pullRequestId) {
- try {
- return parse(get(v1("/pullrequests/" + pullRequestId + "/comments")), new TypeReference<List<Pullrequest.Comment>>() {});
- } catch(Exception e) {
- logger.log(Level.WARNING, "invalid pull request response.", e);
- e.printStackTrace();
- }
- return Collections.EMPTY_LIST;
+ return getAllValues(v2("/pullrequests/" + pullRequestId + "/comments"), 100, Pullrequest.Comment.class);
}
public String getName() {
@@ -200,6 +191,23 @@ public class ApiClient {
return null;
}
+ private <T> List<T> getAllValues(String rootUrl, int pageLen, Class<T> cls) {
+ List<T> values = new ArrayList<T>();
+ try {
+ String url = rootUrl + "?pagelen=" + pageLen;
+ do {
+ final JavaType type = TypeFactory.defaultInstance().constructParametricType(Pullrequest.Response.class, cls);
+ Pullrequest.Response<T> response = parse(get(url), type);
+ values.addAll(response.getValues());
+ url = response.getNext();
+ } while (url != null);
+ } catch (Exception e) {
+ logger.log(Level.WARNING, "invalid response.", e);
+ e.printStackTrace();
+ }
+ return values;
+ }
+
private HttpClient getHttpClient() {
return this.factory.getInstanceHttpClient();
}
@@ -260,6 +268,9 @@ public class ApiClient {
private <R> R parse(String response, Class<R> cls) throws IOException {
return new ObjectMapper().readValue(response, cls);
}
+ private <R> R parse(String response, JavaType type) throws IOException {
+ return new ObjectMapper().readValue(response, type);
+ }
private <R> R parse(String response, TypeReference<R> ref) throws IOException {
return new ObjectMapper().readValue(response, ref);
}
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/Pullrequest.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/Pullrequest.java
index 140c213..96412b2 100644
--- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/Pullrequest.java
+++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/Pullrequest.java
@@ -2,6 +2,7 @@ package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket;
import java.util.List;
import java.util.Comparator;
+import java.util.Map;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@@ -31,11 +32,12 @@ public class Pullrequest {
private Author author;
@JsonIgnoreProperties(ignoreUnknown = true)
- public static class Response {
+ public static class Response<T> {
private int pageLength;
- private List<Pullrequest> pullrequests;
+ private List<T> values;
private int page;
private int size;
+ private String next;
@JsonProperty("pagelen")
public int getPageLength() {
@@ -45,13 +47,11 @@ public class Pullrequest {
public void setPageLength(int pageLength) {
this.pageLength = pageLength;
}
- @JsonProperty("values")
- public List<Pullrequest> getPullrequests() {
- return pullrequests;
+ public List<T> getValues() {
+ return values;
}
- @JsonProperty("values")
- public void setPullrequests(List<Pullrequest> pullrequests) {
- this.pullrequests = pullrequests;
+ public void setValues(List<T> values) {
+ this.values = values;
}
public int getPage() {
return page;
@@ -65,8 +65,15 @@ public class Pullrequest {
public void setSize(int size) {
this.size = size;
}
+ public String getNext() {
+ return next;
+ }
+ public void setNext(String next) {
+ this.next = next;
+ }
}
+
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Revision {
private Repository repository;
@@ -214,8 +221,13 @@ public class Pullrequest {
return content;
}
- public void setContent(String content) {
- this.content = content;
+ public void setContent(Object content) {
+ if (content instanceof String) {
+ this.content = (String)content;
+ } else if (content instanceof Map){
+ this.content = (String)((Map)content).get("raw");
+ }
+ return;
}
@JsonProperty("utc_last_updated")
public String getUpdatedOn() {