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

Reply via email to