Projects: Add convenience methods for creating projects
The old idiom:
api.projects().name("foo").create(in);
more closely matches the REST API, but makes less sense in Java where
we don't necessarily require a hierarchical structure, and we can
infer the project name from the input.
The above becomes the simpler:
api.projects().create(in);
Also include a method to create with just a name.
Change-Id: Ib789854bd22e1a15ceebf37c57382ca4079c4459
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/ProjectIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/ProjectIT.java
index 7de4712..33e4f97 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/ProjectIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/ProjectIT.java
@@ -38,8 +38,7 @@
String name = "foo";
assertThat(name).isEqualTo(
gApi.projects()
- .name(name)
- .create()
+ .create(name)
.get()
.name);
}
@@ -49,8 +48,7 @@
String name = "foo";
assertThat(name).isEqualTo(
gApi.projects()
- .name(name + ".git")
- .create()
+ .create(name + ".git")
.get()
.name);
}
@@ -69,10 +67,8 @@
ProjectInput in = new ProjectInput();
in.name = "baz";
gApi.projects()
- .name("baz")
.create(in);
gApi.projects()
- .name("baz")
.create(in);
}
@@ -89,8 +85,8 @@
public void listProjects() throws Exception {
List<ProjectInfo> initialProjects = gApi.projects().list().get();
- gApi.projects().name("foo").create();
- gApi.projects().name("bar").create();
+ gApi.projects().create("foo");
+ gApi.projects().create("bar");
List<ProjectInfo> allProjects = gApi.projects().list().get();
assertThat(allProjects).hasSize(initialProjects.size() + 2);
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/CreateProjectIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/CreateProjectIT.java
index 68c9a5e..78132a9 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/CreateProjectIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/CreateProjectIT.java
@@ -49,7 +49,7 @@
@Test
public void testCreateProjectApi() throws Exception {
final String newProjectName = "newProject";
- ProjectInfo p = gApi.projects().name(newProjectName).create().get();
+ ProjectInfo p = gApi.projects().create(newProjectName).get();
assertThat(p.name).isEqualTo(newProjectName);
ProjectState projectState = projectCache.get(new Project.NameKey(newProjectName));
assertThat(projectState).isNotNull();
@@ -60,7 +60,7 @@
@Test
public void testCreateProjectApiWithGitSuffix() throws Exception {
final String newProjectName = "newProject";
- ProjectInfo p = gApi.projects().name(newProjectName + ".git").create().get();
+ ProjectInfo p = gApi.projects().create(newProjectName + ".git").get();
assertThat(p.name).isEqualTo(newProjectName);
ProjectState projectState = projectCache.get(new Project.NameKey(newProjectName));
assertThat(projectState).isNotNull();
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
index c12b719..fda48f5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/ListProjectsIT.java
@@ -81,7 +81,7 @@
ProjectInput projectInput = new ProjectInput();
projectInput.name = "some-project";
projectInput.description = "Description of some-project";
- gApi.projects().name(projectInput.name).create(projectInput);
+ gApi.projects().create(projectInput);
// description not be included in the results by default.
Map<String, ProjectInfo> result = gApi.projects().list().getAsMap();
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 ab0d3ae..7a626f1 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
@@ -40,6 +40,24 @@
*/
ProjectApi name(String name) throws RestApiException;
+ /**
+ * Create a project using the default configuration.
+ *
+ * @param name project name.
+ * @return API for accessing the newly-created project.
+ * @throws RestApiException if an error occurred.
+ */
+ ProjectApi create(String name) throws RestApiException;
+
+ /**
+ * Create a project.
+ *
+ * @param in project creation input; name must be set.
+ * @return API for accessing the newly-created project.
+ * @throws RestApiException if an error occurred.
+ */
+ ProjectApi create(ProjectInput in) throws RestApiException;
+
ListRequest list();
public abstract class ListRequest {
@@ -164,6 +182,16 @@
}
@Override
+ public ProjectApi create(ProjectInput in) throws RestApiException {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public ProjectApi create(String name) throws RestApiException {
+ throw new NotImplementedException();
+ }
+
+ @Override
public ListRequest list() {
throw new NotImplementedException();
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectsImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectsImpl.java
index f8c9880..db31d42 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectsImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/projects/ProjectsImpl.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.api.projects;
import com.google.gerrit.extensions.api.projects.ProjectApi;
+import com.google.gerrit.extensions.api.projects.ProjectInput;
import com.google.gerrit.extensions.api.projects.Projects;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -57,6 +58,18 @@
}
@Override
+ public ProjectApi create(String name) throws RestApiException {
+ ProjectInput in = new ProjectInput();
+ in.name = name;
+ return create(in);
+ }
+
+ @Override
+ public ProjectApi create(ProjectInput in) throws RestApiException {
+ return name(in.name).create(in);
+ }
+
+ @Override
public ListRequest list() {
return new ListRequest() {
@Override
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/CreateProjectCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/CreateProjectCommand.java
index 4e151b3..b93eb75 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/CreateProjectCommand.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/CreateProjectCommand.java
@@ -181,7 +181,7 @@
input.pluginConfigValues = parsePluginConfigValues(pluginConfigValues);
}
- gApi.projects().name(projectName).create(input);
+ gApi.projects().create(input);
} else {
List<Project.NameKey> parentCandidates =
suggestParentCandidates.getNameKeys();