diff options
author | S.Nishio <nishio@densan-labs.net> | 2017-01-01 01:17:33 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-01 01:17:33 +0900 |
commit | a352fbf76c5ce320f88de7a2e38476d0d0547845 (patch) | |
tree | d43c0048f99dad64c7124131902f22783b59a3bd /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java | |
parent | fa120fa3e9cfd437594306c500270bc9bbf601a2 (diff) | |
parent | 3f1ccecdf1acee11f43377a613b4943580a38ea8 (diff) | |
download | bbprb-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/bitbucketpullrequestbuilder/bitbucket/ApiClient.java')
-rw-r--r-- | src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/ApiClient.java | 39 |
1 files changed, 25 insertions, 14 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); } |