Migrate Changes#query and Projects#list to a more fluent interface
This syntax allows more compact userland code.
Thanks to Dave Borowitz for this suggestion.
Example:
changes.query("is:open")
.withLimit(5)
.get();
Change-Id: I676e58c5d50c5599908df19f9384cc1e6d2aed8e
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/Changes.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/Changes.java
index ecf0d9e..201a0bd 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/Changes.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/Changes.java
@@ -30,49 +30,43 @@
throws RestApiException;
ChangeApi create(ChangeInfo in) throws RestApiException;
- /**
- * Shorthand for {@link #query(QueryParameter)} without any conditions (i.e. lists all changes).
- */
- List<ChangeInfo> query() throws RestApiException;
- List<ChangeInfo> query(QueryParameter queryParameter) throws RestApiException;
+ QueryRequest query();
+ QueryRequest query(String query);
- public class QueryParameter {
+ public abstract class QueryRequest {
private String query;
private int limit;
private int start;
private EnumSet<ListChangesOption> options = EnumSet.noneOf(ListChangesOption.class);
- public QueryParameter() {}
+ public abstract List<ChangeInfo> get() throws RestApiException;
- public QueryParameter(String query) {
- this.query = query;
- }
-
- public QueryParameter withQuery(String query) {
+ public QueryRequest withQuery(String query) {
this.query = query;
return this;
}
- public QueryParameter withLimit(int limit) {
+ public QueryRequest withLimit(int limit) {
this.limit = limit;
return this;
}
- public QueryParameter withStart(int start) {
+ public QueryRequest withStart(int start) {
this.start = start;
return this;
}
- public QueryParameter withOption(ListChangesOption options) {
+ public QueryRequest withOption(ListChangesOption options) {
this.options.add(options);
return this;
}
- public QueryParameter withOptions(ListChangesOption... options) {
+
+ public QueryRequest withOptions(ListChangesOption... options) {
this.options.addAll(Arrays.asList(options));
return this;
}
- public QueryParameter withOptions(EnumSet<ListChangesOption> options) {
+ public QueryRequest withOptions(EnumSet<ListChangesOption> options) {
this.options = options;
return this;
}
@@ -120,12 +114,12 @@
}
@Override
- public List<ChangeInfo> query() throws RestApiException {
+ public QueryRequest query() {
throw new NotImplementedException();
}
@Override
- public List<ChangeInfo> query(QueryParameter queryParameter) throws RestApiException {
+ public QueryRequest query(String query) {
throw new NotImplementedException();
}
}
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/Projects.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/Projects.java
index 02351cd..9c0cfd8 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/Projects.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/Projects.java
@@ -23,37 +23,32 @@
public interface Projects {
ProjectApi name(String name) throws RestApiException;
- List<ProjectInfo> list() throws RestApiException;
- List<ProjectInfo> list(ListParameter listParameter) throws RestApiException;
+ ListRequest list();
- public class ListParameter {
+ public abstract class ListRequest {
private boolean description;
private String prefix;
private int limit;
private int start;
- public ListParameter() {}
+ public abstract List<ProjectInfo> get() throws RestApiException;
- public ListParameter(String prefix) {
- this.prefix = prefix;
- }
-
- public ListParameter withDescription(boolean description) {
+ public ListRequest withDescription(boolean description) {
this.description = description;
return this;
}
- public ListParameter withPrefix(String prefix) {
+ public ListRequest withPrefix(String prefix) {
this.prefix = prefix;
return this;
}
- public ListParameter withLimit(int limit) {
+ public ListRequest withLimit(int limit) {
this.limit = limit;
return this;
}
- public ListParameter withStart(int start) {
+ public ListRequest withStart(int start) {
this.start = start;
return this;
}
@@ -86,12 +81,7 @@
}
@Override
- public List<ProjectInfo> list() throws RestApiException {
- throw new NotImplementedException();
- }
-
- @Override
- public List<ProjectInfo> list(ListParameter listParameter) throws RestApiException {
+ public ListRequest list() {
throw new NotImplementedException();
}
}