Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
Change-Id: I2a5a0a197de767a193ad78eedbaa01bf0a657ef8
diff --git a/.gitignore b/.gitignore
index 1c54bab..681ddba 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,8 @@
+# `LC_COLLATE=C sort`
+/.apt_generated/
/.classpath
/.project
/.settings/
/bazel-*
+/bin/
/eclipse-out/
diff --git a/BUILD b/BUILD
index dec3e83..6c480ea 100644
--- a/BUILD
+++ b/BUILD
@@ -19,7 +19,7 @@
)
junit_tests(
- name = "rename_project_tests",
+ name = "rename-project_tests",
srcs = glob(["src/test/java/**/*.java"]),
tags = ["rename-project"],
deps = [":rename-project__plugin_test_deps"],
diff --git a/README.md b/README.md
index b133981..1ed0bf5 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Rename project plugin for Gerrit Code Review
-This plugin currently only supports Gerrit version 2.14.X.
+This plugin currently supports Gerrit version 2.14.X and 2.15.X with changes in reviewDb, noteDB is not yet supported.
For more information, see: `src/main/resources/Documentation/about.md`
diff --git a/WORKSPACE b/WORKSPACE
index 653e59f..aca27d8 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,9 +3,19 @@
load("//:bazlets.bzl", "load_bazlets")
load_bazlets(
- commit = "b750c0adec6deebb1063219787a97fab1d32724b",
+ commit = "4b3ce19d8d18d9f7df56a06532723b91ea6949d0",
+ #local_path = "/home/<user>/projects/bazlets",
)
+# Snapshot Plugin API
+#load(
+# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+# "gerrit_api_maven_local",
+#)
+
+# Load snapshot Plugin API
+#gerrit_api_maven_local()
+
# Release Plugin API
load(
"@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 1d8851b..c1932a9 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -3,8 +3,8 @@
def external_plugin_deps():
maven_jar(
name = "mockito",
- artifact = "org.mockito:mockito-core:2.27.0",
- sha1 = "835fc3283b481f4758b8ef464cd560c649c08b00",
+ artifact = "org.mockito:mockito-core:2.28.2",
+ sha1 = "91110215a8cb9b77a46e045ee758f77d79167cc0",
deps = [
"@byte-buddy//jar",
"@byte-buddy-agent//jar",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
index 3afc396..8bc3828 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -19,6 +19,7 @@
import com.google.common.base.Strings;
import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.api.access.PluginPermission;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -26,8 +27,9 @@
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.account.CapabilityControl;
import com.google.gerrit.server.extensions.events.PluginEvent;
+import com.google.gerrit.server.permissions.GlobalPermission;
+import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
@@ -65,6 +67,7 @@
private final PluginEvent pluginEvent;
private final String pluginName;
private final RenameLog renameLog;
+ private final PermissionBackend permissionBackend;
@Inject
RenameProject(
@@ -77,7 +80,8 @@
LockUnlockProject lockUnlockProject,
PluginEvent pluginEvent,
@PluginName String pluginName,
- RenameLog renameLog) {
+ RenameLog renameLog,
+ PermissionBackend permissionBackend) {
this.dbHandler = dbHandler;
this.fsHandler = fsHandler;
this.cacheHandler = cacheHandler;
@@ -88,6 +92,7 @@
this.pluginEvent = pluginEvent;
this.pluginName = pluginName;
this.renameLog = renameLog;
+ this.permissionBackend = permissionBackend;
}
private void assertNewNameNotNull(Input input) throws BadRequestException {
@@ -103,10 +108,11 @@
}
protected boolean canRename(ProjectResource rsrc) {
- CapabilityControl ctl = userProvider.get().getCapabilities();
- return ctl.canAdministrateServer()
- || ctl.canPerform(pluginName + "-" + RENAME_PROJECT)
- || (ctl.canPerform(pluginName + "-" + RENAME_OWN_PROJECT) && rsrc.getControl().isOwner());
+ PermissionBackend.WithUser userPermission = permissionBackend.user(userProvider);
+ return userPermission.testOrFalse(GlobalPermission.ADMINISTRATE_SERVER)
+ || userPermission.testOrFalse(new PluginPermission(pluginName, RENAME_PROJECT))
+ || (userPermission.testOrFalse(new PluginPermission(pluginName, RENAME_OWN_PROJECT))
+ && rsrc.getControl().isOwner());
}
void assertCanRename(ProjectResource rsrc, Input input, ProgressMonitor pm)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
index e1104dc..2246d50 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
@@ -22,7 +22,9 @@
import com.google.gerrit.server.config.AllUsersName;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MergeOpRepoManager;
+import com.google.gerrit.server.git.SubmoduleException;
import com.google.gerrit.server.git.SubmoduleOp;
+import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.project.ListChildProjects;
import com.google.gerrit.server.project.ProjectResource;
import com.google.inject.Inject;
@@ -87,14 +89,19 @@
}
private void assertHasNoChildProjects(ProjectResource rsrc) throws CannotRenameProjectException {
- List<ProjectInfo> children = listChildProjectsProvider.get().apply(rsrc);
- if (!children.isEmpty()) {
- String childrenString =
- String.join(", ", children.stream().map(info -> info.name).collect(Collectors.toList()));
- String message =
- String.format("Cannot rename project because it has children: %s", childrenString);
- log.error(message);
- throw new CannotRenameProjectException(message);
+ try {
+ List<ProjectInfo> children = listChildProjectsProvider.get().apply(rsrc);
+ if (!children.isEmpty()) {
+ String childrenString =
+ String.join(
+ ", ", children.stream().map(info -> info.name).collect(Collectors.toList()));
+ String message =
+ String.format("Cannot rename project because it has children: %s", childrenString);
+ log.error(message);
+ throw new CannotRenameProjectException(message);
+ }
+ } catch (PermissionBackendException e) {
+ throw new CannotRenameProjectException(e);
}
}
@@ -113,7 +120,7 @@
throw new CannotRenameProjectException(message);
}
}
- } catch (IOException e) {
+ } catch (IOException | SubmoduleException e) {
throw new CannotRenameProjectException(e);
}
}
diff --git a/tools/BUILD b/tools/BUILD
new file mode 100644
index 0000000..c5ed0b7
--- /dev/null
+++ b/tools/BUILD
@@ -0,0 +1 @@
+# Empty file required by Bazel
diff --git a/tools/eclipse/project.sh b/tools/eclipse/project.sh
index 2b895ff..3003cc2 100755
--- a/tools/eclipse/project.sh
+++ b/tools/eclipse/project.sh
@@ -13,4 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-`bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project --output location | sed s/BUILD:.*//`project.py -n rename-project -r .
+path=$(bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project \
+ --output location | sed s/BUILD:.*//)
+${path}project.py -n rename-project -r . "$@"