QChris has uploaded a new change for review.
https://gerrit.wikimedia.org/r/64299
Change subject: Add REST endpoint to rename projects
......................................................................
Add REST endpoint to rename projects
Change-Id: I7fee6f932a27e2e73f57dd71df1a890b80481043
---
M Documentation/rest-api-projects.txt
M gerrit-server/src/main/java/com/google/gerrit/server/project/Module.java
A gerrit-server/src/main/java/com/google/gerrit/server/project/SetName.java
3 files changed, 88 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/gerrit refs/changes/99/64299/1
diff --git a/Documentation/rest-api-projects.txt
b/Documentation/rest-api-projects.txt
index 1dc8bc8..72d8ce0 100644
--- a/Documentation/rest-api-projects.txt
+++ b/Documentation/rest-api-projects.txt
@@ -963,6 +963,38 @@
HTTP/1.1 204 No Content
----
+[[rename-project]]
+Rename Project
+~~~~~~~~~~~~~~
+[verse]
+'PUT /projects/link:#project-name[\{project-name\}]/name'
+
+Renames a project.
+
+The new project name must be provided in the request body.
+
+.Request
+----
+ PUT /projects/oldProjectName/name HTTP/1.0
+ Content-Type: application/json;charset=UTF-8
+
+ {
+ "name":"newProjectName"
+ }
+----
+
+As response the new project name is returned.
+
+.Response
+----
+ HTTP/1.1 200 OK
+ Content-Disposition: attachment
+ Content-Type: application/json;charset=UTF-8
+
+ )]}'
+ "newProjectName"
+----
+
[[ids]]
IDs
diff --git
a/gerrit-server/src/main/java/com/google/gerrit/server/project/Module.java
b/gerrit-server/src/main/java/com/google/gerrit/server/project/Module.java
index 3b44f66..3174d61 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/Module.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/Module.java
@@ -57,6 +57,8 @@
get(BRANCH_KIND).to(GetBranch.class);
install(new FactoryModuleBuilder().build(CreateBranch.Factory.class));
+ put(PROJECT_KIND, "name").to(SetName.class);
+
child(PROJECT_KIND, "dashboards").to(DashboardsCollection.class);
get(DASHBOARD_KIND).to(GetDashboard.class);
put(DASHBOARD_KIND).to(SetDashboard.class);
diff --git
a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetName.java
b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetName.java
new file mode 100644
index 0000000..ba99790
--- /dev/null
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetName.java
@@ -0,0 +1,54 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.project;
+
+import com.google.gerrit.common.data.GlobalCapability;
+import com.google.gerrit.common.errors.NameAlreadyUsedException;
+import com.google.gerrit.common.errors.PermissionDeniedException;
+import com.google.gerrit.common.errors.ProjectRenamingFailedException;
+import com.google.gerrit.extensions.annotations.RequiresCapability;
+import com.google.gerrit.extensions.restapi.AuthException;
+import com.google.gerrit.extensions.restapi.DefaultInput;
+import com.google.gerrit.extensions.restapi.RestModifyView;
+import com.google.inject.Inject;
+import com.google.gerrit.server.project.SetName.Input;
+
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
+
+@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
+class SetName implements RestModifyView<ProjectResource, Input> {
+ static class Input {
+ @DefaultInput
+ String name;
+ }
+
+ private final RenameProject.Factory renameProjectFactory;
+
+ @Inject
+ SetName(final RenameProject.Factory renameProjectFactory) {
+ this.renameProjectFactory = renameProjectFactory;
+ }
+
+ @Override
+ public Object apply(ProjectResource resource, Input input)
+ throws AuthException, NameAlreadyUsedException, NoSuchProjectException,
+ PermissionDeniedException, ProjectRenamingFailedException,
+ RepositoryNotFoundException {
+ final String sourceName = resource.getName();
+ final String destinationName = input.name;
+ return renameProjectFactory.create(sourceName, destinationName)
+ .renameProject();
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/64299
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7fee6f932a27e2e73f57dd71df1a890b80481043
Gerrit-PatchSet: 1
Gerrit-Project: gerrit
Gerrit-Branch: wmf
Gerrit-Owner: QChris <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits