Skip to content

Commit c1c801f

Browse files
committed
add sortkey support in QueryRequest
- required for paging with Gerrit < 2.9
1 parent d863b4b commit c1c801f

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

src/main/java/com/google/gerrit/extensions/api/changes/Changes.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public abstract class QueryRequest {
6767
private String query;
6868
private int limit;
6969
private int start;
70+
private String sortkey; // server version < 2.9, needed for change list paging
7071
private EnumSet<ListChangesOption> options = EnumSet.noneOf(ListChangesOption.class);
7172

7273
public abstract List<ChangeInfo> get() throws RestApiException;
@@ -86,6 +87,12 @@ public QueryRequest withStart(int start) {
8687
return this;
8788
}
8889

90+
// server version < 2.9, needed for change list paging
91+
public QueryRequest withSortkey(String sortkey) {
92+
this.sortkey = sortkey;
93+
return this;
94+
}
95+
8996
public QueryRequest withOption(ListChangesOption options) {
9097
this.options.add(options);
9198
return this;
@@ -113,6 +120,11 @@ public int getStart() {
113120
return start;
114121
}
115122

123+
// server version < 2.9, needed for change list paging
124+
public String getSortkey() {
125+
return sortkey;
126+
}
127+
116128
public EnumSet<ListChangesOption> getOptions() {
117129
return options;
118130
}

src/main/java/com/urswolfer/gerrit/client/rest/http/changes/ChangesRestClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ private List<ChangeInfo> get(QueryRequest queryRequest) throws RestApiException
8181
if (queryRequest.getStart() > 0) {
8282
query = UrlUtils.appendToUrlQuery(query, "S=" + queryRequest.getStart());
8383
}
84+
// server version < 2.9, needed for change list paging
85+
if (!Strings.isNullOrEmpty(queryRequest.getSortkey())) {
86+
query = UrlUtils.appendToUrlQuery(query, "N=" + queryRequest.getSortkey());
87+
}
8488
for (ListChangesOption option : queryRequest.getOptions()) {
8589
query = UrlUtils.appendToUrlQuery(query, "o=" + option);
8690
}

src/test/java/com/urswolfer/gerrit/client/rest/http/changes/ChangesRestClientTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public Iterator<ChangesQueryTestCase[]> getChangesQueryTestCases() {
7070
queryParameter(
7171
new TestQueryRequest().withStart(50)
7272
).expectUrl("/changes/?S=50"),
73+
queryParameter(
74+
new TestQueryRequest().withSortkey("003460ab0001ae15")
75+
).expectUrl("/changes/?N=003460ab0001ae15"),
7376
queryParameter(
7477
new TestQueryRequest().withQuery("is:open")
7578
.withLimit(10)
@@ -195,6 +198,7 @@ private static final class TestQueryRequest {
195198
private String query = null;
196199
private Integer limit = null;
197200
private Integer start = null;
201+
private String sortkey = null;
198202
private EnumSet<ListChangesOption> options = EnumSet.noneOf(ListChangesOption.class);
199203

200204
public TestQueryRequest withQuery(String query) {
@@ -212,6 +216,11 @@ public TestQueryRequest withStart(int start) {
212216
return this;
213217
}
214218

219+
public TestQueryRequest withSortkey(String sortkey) {
220+
this.sortkey = sortkey;
221+
return this;
222+
}
223+
215224
public TestQueryRequest withOption(ListChangesOption options) {
216225
this.options.add(options);
217226
return this;
@@ -227,6 +236,9 @@ public Changes.QueryRequest apply(Changes.QueryRequest queryRequest) {
227236
if (start != null) {
228237
queryRequest.withStart(start);
229238
}
239+
if (sortkey != null) {
240+
queryRequest.withSortkey(sortkey);
241+
}
230242
if (!options.isEmpty()) {
231243
queryRequest.withOptions(options);
232244
}

0 commit comments

Comments
 (0)