Skip to content

Commit fdc2644

Browse files
committed
Added ability to filter merge requests by project and IID (#212).
1 parent d046437 commit fdc2644

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

src/main/java/org/gitlab4j/api/MergeRequestApi.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,22 @@ public List<MergeRequest> getMergeRequests(MergeRequestFilter filter) throws Git
4747
* @throws GitLabApiException if any exception occurs
4848
*/
4949
public List<MergeRequest> getMergeRequests(MergeRequestFilter filter, int page, int perPage) throws GitLabApiException {
50+
5051
MultivaluedMap<String, String> queryParams = (filter != null ?
5152
filter.getQueryParams(page, perPage).asMap() : getPageQueryParams(page, perPage));
52-
Response response = get(Response.Status.OK, queryParams, "merge_requests");
53+
Response response;
54+
if (filter != null && (filter.getProjectId() != null && filter.getProjectId().intValue() > 0) ||
55+
(filter.getIids() != null && filter.getIids().size() > 0)) {
56+
57+
if (filter.getProjectId() == null || filter.getProjectId().intValue() == 0) {
58+
throw new RuntimeException("project ID cannot be null or 0");
59+
}
60+
61+
response = get(Response.Status.OK, queryParams, "projects", filter.getProjectId(), "merge_requests");
62+
} else {
63+
response = get(Response.Status.OK, queryParams, "merge_requests");
64+
}
65+
5366
return (response.readEntity(new GenericType<List<MergeRequest>>() {}));
5467
}
5568

@@ -64,8 +77,19 @@ public List<MergeRequest> getMergeRequests(MergeRequestFilter filter, int page,
6477
* @throws GitLabApiException if any exception occurs
6578
*/
6679
public Pager<MergeRequest> getMergeRequests(MergeRequestFilter filter, int itemsPerPage) throws GitLabApiException {
80+
6781
MultivaluedMap<String, String> queryParams = (filter != null ? filter.getQueryParams().asMap() : null);
68-
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "merge_requests"));
82+
if (filter != null && (filter.getProjectId() != null && filter.getProjectId().intValue() > 0) ||
83+
(filter.getIids() != null && filter.getIids().size() > 0)) {
84+
85+
if (filter.getProjectId() == null || filter.getProjectId().intValue() == 0) {
86+
throw new RuntimeException("project ID cannot be null or 0");
87+
}
88+
89+
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "projects", filter.getProjectId(), "merge_requests"));
90+
} else {
91+
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, queryParams, "merge_requests"));
92+
}
6993
}
7094

7195
/**

src/main/java/org/gitlab4j/api/models/MergeRequestFilter.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
*/
1818
public class MergeRequestFilter {
1919

20+
private Integer projectId;
21+
private List<Integer> iids;
2022
private MergeRequestState state;
2123
private MergeRequestOrderBy orderBy;
2224
private SortOrder sort;
@@ -35,6 +37,32 @@ public class MergeRequestFilter {
3537
private String targetBranch;
3638
private String search;
3739

40+
public Integer getProjectId() {
41+
return projectId;
42+
}
43+
44+
public void setProjectId(Integer projectId) {
45+
this.projectId = projectId;
46+
}
47+
48+
public MergeRequestFilter withProjectId(Integer projectId) {
49+
this.projectId = projectId;
50+
return (this);
51+
}
52+
53+
public List<Integer> getIids() {
54+
return iids;
55+
}
56+
57+
public void setIids(List<Integer> iids) {
58+
this.iids = iids;
59+
}
60+
61+
public MergeRequestFilter withIids(List<Integer> iids) {
62+
this.iids = iids;
63+
return (this);
64+
}
65+
3866
public MergeRequestState getState() {
3967
return state;
4068
}
@@ -266,6 +294,7 @@ public GitLabApiForm getQueryParams(int page, int perPage) {
266294
@JsonIgnore
267295
public GitLabApiForm getQueryParams() {
268296
return (new GitLabApiForm()
297+
.withParam("iids", iids)
269298
.withParam("state", state)
270299
.withParam("order_by", orderBy)
271300
.withParam("sort", sort)

0 commit comments

Comments
 (0)