Commit fdc2644b authored by Greg Messner's avatar Greg Messner
Browse files

Added ability to filter merge requests by project and IID (#212).

parent d0464379
...@@ -47,9 +47,22 @@ public class MergeRequestApi extends AbstractApi { ...@@ -47,9 +47,22 @@ public class MergeRequestApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<MergeRequest> getMergeRequests(MergeRequestFilter filter, int page, int perPage) throws GitLabApiException { public List<MergeRequest> getMergeRequests(MergeRequestFilter filter, int page, int perPage) throws GitLabApiException {
MultivaluedMap<String, String> queryParams = (filter != null ? MultivaluedMap<String, String> queryParams = (filter != null ?
filter.getQueryParams(page, perPage).asMap() : getPageQueryParams(page, perPage)); filter.getQueryParams(page, perPage).asMap() : getPageQueryParams(page, perPage));
Response response = get(Response.Status.OK, queryParams, "merge_requests"); Response response;
if (filter != null && (filter.getProjectId() != null && filter.getProjectId().intValue() > 0) ||
(filter.getIids() != null && filter.getIids().size() > 0)) {
if (filter.getProjectId() == null || filter.getProjectId().intValue() == 0) {
throw new RuntimeException("project ID cannot be null or 0");
}
response = get(Response.Status.OK, queryParams, "projects", filter.getProjectId(), "merge_requests");
} else {
response = get(Response.Status.OK, queryParams, "merge_requests");
}
return (response.readEntity(new GenericType<List<MergeRequest>>() {})); return (response.readEntity(new GenericType<List<MergeRequest>>() {}));
} }
...@@ -64,8 +77,19 @@ public class MergeRequestApi extends AbstractApi { ...@@ -64,8 +77,19 @@ public class MergeRequestApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public Pager<MergeRequest> getMergeRequests(MergeRequestFilter filter, int itemsPerPage) throws GitLabApiException { public Pager<MergeRequest> getMergeRequests(MergeRequestFilter filter, int itemsPerPage) throws GitLabApiException {
MultivaluedMap<String, String> queryParams = (filter != null ? filter.getQueryParams().asMap() : null); MultivaluedMap<String, String> queryParams = (filter != null ? filter.getQueryParams().asMap() : null);
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "merge_requests")); if (filter != null && (filter.getProjectId() != null && filter.getProjectId().intValue() > 0) ||
(filter.getIids() != null && filter.getIids().size() > 0)) {
if (filter.getProjectId() == null || filter.getProjectId().intValue() == 0) {
throw new RuntimeException("project ID cannot be null or 0");
}
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "projects", filter.getProjectId(), "merge_requests"));
} else {
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "merge_requests"));
}
} }
/** /**
......
...@@ -17,6 +17,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -17,6 +17,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
*/ */
public class MergeRequestFilter { public class MergeRequestFilter {
private Integer projectId;
private List<Integer> iids;
private MergeRequestState state; private MergeRequestState state;
private MergeRequestOrderBy orderBy; private MergeRequestOrderBy orderBy;
private SortOrder sort; private SortOrder sort;
...@@ -35,6 +37,32 @@ public class MergeRequestFilter { ...@@ -35,6 +37,32 @@ public class MergeRequestFilter {
private String targetBranch; private String targetBranch;
private String search; private String search;
public Integer getProjectId() {
return projectId;
}
public void setProjectId(Integer projectId) {
this.projectId = projectId;
}
public MergeRequestFilter withProjectId(Integer projectId) {
this.projectId = projectId;
return (this);
}
public List<Integer> getIids() {
return iids;
}
public void setIids(List<Integer> iids) {
this.iids = iids;
}
public MergeRequestFilter withIids(List<Integer> iids) {
this.iids = iids;
return (this);
}
public MergeRequestState getState() { public MergeRequestState getState() {
return state; return state;
} }
...@@ -266,6 +294,7 @@ public class MergeRequestFilter { ...@@ -266,6 +294,7 @@ public class MergeRequestFilter {
@JsonIgnore @JsonIgnore
public GitLabApiForm getQueryParams() { public GitLabApiForm getQueryParams() {
return (new GitLabApiForm() return (new GitLabApiForm()
.withParam("iids", iids)
.withParam("state", state) .withParam("state", state)
.withParam("order_by", orderBy) .withParam("order_by", orderBy)
.withParam("sort", sort) .withParam("sort", sort)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment