ProjectApi: Add method to set the default dashboard
Change-Id: I8e4b36b456b3c34b8fcd4347d1fe546095c875c2
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/DashboardIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/DashboardIT.java
index 5cdb583..3843a31 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/DashboardIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/DashboardIT.java
@@ -75,6 +75,15 @@
}
@Test
+ public void setDefaultDashboardByProject() throws Exception {
+ DashboardInfo info = createDashboard(DashboardsCollection.DEFAULT_DASHBOARD_NAME, "test");
+ assertThat(info.isDefault).isNull();
+ gApi.projects().name(project.get()).defaultDashboard(info.id);
+ assertThat(gApi.projects().name(project.get()).dashboard(info.id).get().isDefault).isTrue();
+ assertThat(gApi.projects().name(project.get()).defaultDashboard().get().id).isEqualTo(info.id);
+ }
+
+ @Test
public void replaceDefaultDashboard() throws Exception {
DashboardInfo d1 = createDashboard(DashboardsCollection.DEFAULT_DASHBOARD_NAME, "test1");
DashboardInfo d2 = createDashboard(DashboardsCollection.DEFAULT_DASHBOARD_NAME, "test2");
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/ProjectApi.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/ProjectApi.java
index 3379edc..9391d16 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/ProjectApi.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/projects/ProjectApi.java
@@ -154,6 +154,13 @@
*/
DashboardApi defaultDashboard() throws RestApiException;
+ /**
+ * Set the project's default dashboard.
+ *
+ * @param name the dashboard to set as default.
+ */
+ void defaultDashboard(String name) throws RestApiException;
+
abstract class ListDashboardsRequest {
public abstract List<DashboardInfo> get() throws RestApiException;
}
@@ -284,5 +291,10 @@
public ListDashboardsRequest dashboards() throws RestApiException {
throw new NotImplementedException();
}
+
+ @Override
+ public void defaultDashboard(String name) throws RestApiException {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectApiImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectApiImpl.java
index 89c92d0..d3e989d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectApiImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectApiImpl.java
@@ -486,6 +486,15 @@
}
@Override
+ public void defaultDashboard(String name) throws RestApiException {
+ try {
+ dashboardApi.create(checkExists(), name).setDefault();
+ } catch (Exception e) {
+ throw asRestApiException("Cannot set default dashboard", e);
+ }
+ }
+
+ @Override
public ListDashboardsRequest dashboards() throws RestApiException {
return new ListDashboardsRequest() {
@Override