Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
Bump Bazel version to 2.2.0
Bump required Bazel version to 2.1.0
Upgrade bazlets to latest stable-2.16 to build with 2.16.16 API
Documentation: Refactor to match other plugin documentation
Add an empty tools/BUILD file explicitly for Bazel
Upgrade bazlets to latest stable-2.16
Upgrade bazlets to latest stable-2.16
Upgrade bazlets to latest stable-2.15
Upgrade bazlets to latest stable-2.14
config.md: Correct formatting of config values
Change-Id: I8cc6f59eaf1bc33b9d37b7ec56c74181d9aff4f3
diff --git a/.bazelrc b/.bazelrc
deleted file mode 100644
index 615adcd..0000000
--- a/.bazelrc
+++ /dev/null
@@ -1,10 +0,0 @@
-build --workspace_status_command="python ./tools/workspace_status.py"
-
-# Standalone build compatbility with npm requires PATH on action_env (Issue 10372).
-build --action_env=PATH
-
-# See https://github.com/bazelbuild/bazel/issues/7026. Remove when flag is
-# flipped in Bazel again.
-build --incompatible_strict_action_env
-
-test --build_tests_only
diff --git a/.bazelversion b/.bazelversion
deleted file mode 100644
index ccbccc3..0000000
--- a/.bazelversion
+++ /dev/null
@@ -1 +0,0 @@
-2.2.0
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index f15f85d..0000000
--- a/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue May 15 09:19:33 PDT 2012
-eclipse.preferences.version=1
-encoding//src/main/java=UTF-8
-encoding//src/test/java=UTF-8
-encoding//src/test/resources=UTF-8
diff --git a/.settings/org.eclipse.core.runtime.prefs b/.settings/org.eclipse.core.runtime.prefs
deleted file mode 100644
index 8667cfd..0000000
--- a/.settings/org.eclipse.core.runtime.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Sep 02 16:59:24 PDT 2008
-eclipse.preferences.version=1
-line.separator=\n
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 40e022d..0000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,126 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=enabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index d4218a5..0000000
--- a/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,61 +0,0 @@
-#Wed Jul 29 11:31:38 PDT 2009
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_Google Format
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=com.google;com;junit;net;org;java;javax;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=false
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=false
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=true
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=false
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=false
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/BUILD b/BUILD
index febf834..819cac0 100644
--- a/BUILD
+++ b/BUILD
@@ -19,7 +19,7 @@
"Gerrit-SshModule: com.googlesource.gerrit.plugins.deleteproject.SshModule",
],
resource_jars = [":gr-delete-repo-static"],
- resources = glob(["src/main/resources/**/*"]),
+ resources = glob(["src/main/resources/Documentation/*.md"]),
deps = ["@commons-io//jar"],
)
@@ -48,7 +48,9 @@
name = "delete-project_tests",
srcs = glob(["src/test/java/**/*.java"]),
tags = ["delete-project"],
- deps = [":delete-project__plugin_test_deps"],
+ deps = [
+ ":delete-project__plugin_test_deps",
+ ],
)
java_library(
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index 9200448..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,58 +0,0 @@
-workspace(name = "delete_project")
-
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
- commit = "1b6fc9b39001806b37a4eedbb0a4816daf1a227d",
- #local_path = "/home/<user>/projects/bazlets",
-)
-
-# Polymer dependencies
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_polymer.bzl",
- "gerrit_polymer",
-)
-
-gerrit_polymer()
-
-# Load closure compiler with transitive dependencies
-load("@io_bazel_rules_closure//closure:repositories.bzl", "rules_closure_dependencies", "rules_closure_toolchains")
-
-rules_closure_dependencies()
-
-rules_closure_toolchains()
-
-# Load Gerrit npm_binary toolchain
-load("@com_googlesource_gerrit_bazlets//tools:js.bzl", "GERRIT", "npm_binary")
-
-npm_binary(
- name = "polymer-bundler",
- repository = GERRIT,
-)
-
-npm_binary(
- name = "crisper",
- repository = GERRIT,
-)
-
-# 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",
- "gerrit_api",
-)
-
-# Load release Plugin API
-gerrit_api()
-
-load("//:external_plugin_deps.bzl", "external_plugin_deps")
-
-external_plugin_deps()
diff --git a/bazlets.bzl b/bazlets.bzl
deleted file mode 100644
index f089af4..0000000
--- a/bazlets.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
- commit,
- local_path = None):
- if not local_path:
- git_repository(
- name = NAME,
- remote = "https://gerrit.googlesource.com/bazlets",
- commit = commit,
- )
- else:
- native.local_repository(
- name = NAME,
- path = local_path,
- )
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
deleted file mode 100644
index ef666ef..0000000
--- a/external_plugin_deps.bzl
+++ /dev/null
@@ -1,38 +0,0 @@
-load("//tools/bzl:maven_jar.bzl", "maven_jar")
-
-def external_plugin_deps():
- maven_jar(
- name = "mockito",
- artifact = "org.mockito:mockito-core:2.28.2",
- sha1 = "91110215a8cb9b77a46e045ee758f77d79167cc0",
- deps = [
- "@byte-buddy//jar",
- "@byte-buddy-agent//jar",
- "@objenesis//jar",
- ],
- )
-
- BYTE_BUDDY_VERSION = "1.9.10"
-
- maven_jar(
- name = "byte-buddy",
- artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
- sha1 = "211a2b4d3df1eeef2a6cacf78d74a1f725e7a840",
- )
-
- maven_jar(
- name = "byte-buddy-agent",
- artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
- sha1 = "9674aba5ee793e54b864952b001166848da0f26b",
- )
-
- maven_jar(
- name = "objenesis",
- artifact = "org.objenesis:objenesis:2.6",
- sha1 = "639033469776fd37c08358c6b92a4761feb2af4b",
- )
- maven_jar(
- name = "commons-io",
- artifact = "commons-io:commons-io:2.6",
- sha1 = "815893df5f31da2ece4040fe0a12fd44b577afaf",
- )
diff --git a/plugin.html b/plugin.html
index 138397d..7118174 100644
--- a/plugin.html
+++ b/plugin.html
@@ -18,11 +18,9 @@
<dom-module id="delete-repo">
<script>
- if (window.Polymer) {
- Gerrit.install(function(plugin) {
- plugin.registerCustomComponent(
- 'repo-command', 'gr-delete-repo');
- });
- }
+ Gerrit.install(function(plugin) {
+ plugin.registerCustomComponent(
+ 'repo-command', 'gr-delete-repo');
+ });
</script>
</dom-module>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Configuration.java
index a0592dd..ce41836 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Configuration.java
@@ -43,7 +43,6 @@
private final boolean allowDeletionWithTags;
private final boolean archiveDeletedRepos;
- private final boolean enablePreserveOption;
private final boolean hideProjectOnPreserve;
private final long deleteArchivedReposAfter;
private final String deletedProjectsParent;
@@ -64,7 +63,6 @@
this.hideProjectOnPreserve = cfg.getBoolean("hideProjectOnPreserve", false);
this.deletedProjectsParent = cfg.getString("parentForDeletedProjects", DELETED_PROJECTS_PARENT);
this.archiveDeletedRepos = cfg.getBoolean("archiveDeletedRepos", false);
- this.enablePreserveOption = cfg.getBoolean("enablePreserveOption", true);
this.archiveFolder =
getArchiveFolderFromConfig(cfg.getString("archiveFolder", pluginData.toString()));
this.deleteArchivedReposAfter =
@@ -104,10 +102,6 @@
return deleteArchivedReposAfter;
}
- public boolean enablePreserveOption() {
- return enablePreserveOption;
- }
-
private Path getArchiveFolderFromConfig(String configValue) {
try {
return Files.createDirectories(Paths.get(configValue));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
index 9fc119e..e5df5a3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
@@ -19,7 +19,6 @@
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.sshd.CommandMetaData;
import com.google.gerrit.sshd.SshCommand;
-import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import java.io.IOException;
import org.kohsuke.args4j.Argument;
@@ -47,14 +46,11 @@
@Option(name = "--preserve-git-repository", usage = "don't delete git repository directory")
private boolean preserveGitRepository = false;
- private final Configuration cfg;
private final DeleteProject deleteProject;
private final DeletePreconditions preConditions;
@Inject
- protected DeleteCommand(
- Configuration cfg, DeleteProject deleteProject, DeletePreconditions preConditions) {
- this.cfg = cfg;
+ protected DeleteCommand(DeleteProject deleteProject, DeletePreconditions preConditions) {
this.deleteProject = deleteProject;
this.preConditions = preConditions;
}
@@ -62,13 +58,6 @@
@Override
public void run() throws Failure {
try {
- if (preserveGitRepository && !cfg.enablePreserveOption()) {
- throw new UnloggedFailure(
- "Given the enablePreserveOption is configured to be false, "
- + "the --preserve-git-repository option is not allowed.\n"
- + "Please remove this option and retry.");
- }
-
DeleteProject.Input input = new DeleteProject.Input();
input.force = force;
input.preserve = preserveGitRepository;
@@ -90,7 +79,7 @@
preConditions.assertCanBeDeleted(rsrc, input);
deleteProject.doDelete(rsrc, input);
- } catch (RestApiException | OrmException | IOException e) {
+ } catch (RestApiException | IOException e) {
throw die(e);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java
index 374bb14..d3cef9c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java
@@ -17,10 +17,10 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.gerrit.extensions.systemstatus.ServerInformation;
+import com.google.gerrit.json.OutputFormat;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.AuditEvent;
import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.OutputFormat;
import com.google.gerrit.server.audit.AuditService;
import com.google.gerrit.server.util.PluginLogFile;
import com.google.gerrit.server.util.SystemLog;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
index 7797c6d..1c5efd3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
@@ -34,7 +34,7 @@
*
* <p>The log entry for a failed project deletion will look like this: [2015-03-05 12:14:30,180
* +0100] ERROR 1000000 admin FAIL \ myProject {"preserve":false,"force":false}
- * com.google.gwtorm.server.OrmException: \ Failed to access the database
+ * com.google.gerrit.exceptions.StorageException: \ Failed to access the database
*/
@Override
public String format(LoggingEvent event) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
index ba05668..5bf75c5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
@@ -21,6 +21,7 @@
import static java.util.stream.Collectors.toSet;
import com.google.common.collect.Iterables;
+import com.google.gerrit.exceptions.StorageException;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.api.access.PluginPermission;
import com.google.gerrit.extensions.common.ProjectInfo;
@@ -42,7 +43,6 @@
import com.google.gerrit.server.submit.MergeOpRepoManager;
import com.google.gerrit.server.submit.SubmoduleException;
import com.google.gerrit.server.submit.SubmoduleOp;
-import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -128,7 +128,7 @@
throw new CannotDeleteProjectException(
String.format("Project '%s' has open changes.", projectNameKey.get()));
}
- } catch (OrmException e) {
+ } catch (StorageException e) {
throw new CannotDeleteProjectException(
String.format("Unable to verify if '%s' has open changes.", projectNameKey.get()));
}
@@ -143,7 +143,7 @@
"Cannot delete project because it has at least one child: "
+ Iterables.getOnlyElement(children).name);
}
- } catch (OrmException | PermissionBackendException | RestApiException e) {
+ } catch (StorageException | PermissionBackendException | RestApiException e) {
throw new CannotDeleteProjectException(
String.format("Unable to verify if '%s' has children projects.", rsrc.getName()));
}
@@ -155,7 +155,7 @@
MergeOpRepoManager mergeOp = mergeOpProvider.get()) {
Set<Branch.NameKey> branches =
repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
- .map(ref -> new Branch.NameKey(projectNameKey, ref.getName()))
+ .map(ref -> Branch.nameKey(projectNameKey, ref.getName()))
.collect(toSet());
SubmoduleOp sub = subOpFactory.create(branches, mergeOp);
for (Branch.NameKey b : branches) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
index 4b6e75f..1590862 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
@@ -22,7 +22,6 @@
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.project.ProjectResource;
-import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -71,8 +70,7 @@
}
@Override
- public Object apply(ProjectResource rsrc, Input input)
- throws OrmException, IOException, RestApiException {
+ public Object apply(ProjectResource rsrc, Input input) throws IOException, RestApiException {
preConditions.assertDeletePermission(rsrc);
preConditions.assertCanBeDeleted(rsrc, input);
@@ -80,8 +78,7 @@
return Response.none();
}
- public void doDelete(ProjectResource rsrc, Input input)
- throws OrmException, IOException, RestApiException {
+ public void doDelete(ProjectResource rsrc, Input input) throws IOException, RestApiException {
Project project = rsrc.getProjectState().getProject();
boolean preserve = input != null && input.preserve;
Exception ex = null;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HideProject.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HideProject.java
index f529c54..5ed2efe 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HideProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HideProject.java
@@ -41,24 +41,27 @@
private final ProjectCache projectCache;
private final CreateProject createProject;
private final Configuration cfg;
+ private final ProjectConfig.Factory projectConfigFactory;
@Inject
HideProject(
MetaDataUpdate.Server metaDataUpdateFactory,
ProjectCache projectCache,
CreateProject createProject,
- Configuration cfg) {
+ Configuration cfg,
+ ProjectConfig.Factory projectConfigFactory) {
this.metaDataUpdateFactory = metaDataUpdateFactory;
this.projectCache = projectCache;
this.createProject = createProject;
this.cfg = cfg;
+ this.projectConfigFactory = projectConfigFactory;
}
public void apply(ProjectResource rsrc) throws IOException, RestApiException {
try {
MetaDataUpdate md = metaDataUpdateFactory.create(rsrc.getNameKey());
- ProjectConfig projectConfig = ProjectConfig.read(md);
+ ProjectConfig projectConfig = projectConfigFactory.read(md);
Project p = projectConfig.getProject();
p.setState(ProjectState.HIDDEN);
@@ -81,7 +84,7 @@
}
private void createProjectIfMissing(String projectName) throws IOException, RestApiException {
- if (projectCache.get(new Project.NameKey(projectName)) == null) {
+ if (projectCache.get(Project.nameKey(projectName)) == null) {
try {
createProject.apply(TopLevelResource.INSTANCE, IdString.fromDecoded(projectName), null);
} catch (RestApiException | ConfigInvalidException | PermissionBackendException e) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HttpModule.java
index 8cf1874..5066685 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/HttpModule.java
@@ -17,27 +17,12 @@
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.webui.JavaScriptPlugin;
import com.google.gerrit.extensions.webui.WebUiPlugin;
-import com.google.inject.Inject;
import com.google.inject.servlet.ServletModule;
public class HttpModule extends ServletModule {
- private final Configuration cfg;
-
- @Inject
- HttpModule(Configuration cfg) {
- this.cfg = cfg;
- }
-
@Override
protected void configureServlets() {
- if (cfg.enablePreserveOption()) {
- DynamicSet.bind(binder(), WebUiPlugin.class)
- .toInstance(new JavaScriptPlugin("delete-project.js"));
- DynamicSet.bind(binder(), WebUiPlugin.class)
- .toInstance(new JavaScriptPlugin("gr-delete-repo.html"));
- } else {
- DynamicSet.bind(binder(), WebUiPlugin.class)
- .toInstance(new JavaScriptPlugin("delete-project-with-preserve-disabled.js"));
- }
+ DynamicSet.bind(binder(), WebUiPlugin.class)
+ .toInstance(new JavaScriptPlugin("gr-delete-repo.html"));
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Module.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Module.java
index 4826666..7a91b29 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/Module.java
@@ -26,7 +26,6 @@
import com.google.inject.Inject;
import com.google.inject.internal.UniqueAnnotations;
import com.googlesource.gerrit.plugins.deleteproject.cache.CacheDeleteHandler;
-import com.googlesource.gerrit.plugins.deleteproject.database.DatabaseDeleteHandler;
import com.googlesource.gerrit.plugins.deleteproject.fs.ArchiveRepositoryRemover;
import com.googlesource.gerrit.plugins.deleteproject.fs.DeleteTrashFolders;
import com.googlesource.gerrit.plugins.deleteproject.fs.FilesystemDeleteHandler;
@@ -53,7 +52,6 @@
bind(CapabilityDefinition.class)
.annotatedWith(Exports.named(DELETE_OWN_PROJECT))
.to(DeleteOwnProjectCapability.class);
- bind(DatabaseDeleteHandler.class);
bind(FilesystemDeleteHandler.class);
bind(DeletePreconditions.class);
if (scheduleCleaning) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/cache/CacheDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/cache/CacheDeleteHandler.java
index c453478..bdf3ff5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/cache/CacheDeleteHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/cache/CacheDeleteHandler.java
@@ -17,7 +17,6 @@
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
-import java.io.IOException;
public class CacheDeleteHandler {
@@ -28,7 +27,7 @@
this.projectCache = projectCache;
}
- public void delete(Project project) throws IOException {
+ public void delete(Project project) {
projectCache.remove(project);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
index cca8386..a54b8c0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
@@ -18,136 +18,70 @@
import static java.util.stream.Collectors.toList;
import com.google.common.flogger.FluentLogger;
-import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.reviewdb.server.ReviewDbUtil;
import com.google.gerrit.server.StarredChangesUtil;
import com.google.gerrit.server.UserInitiated;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.account.AccountsUpdate;
import com.google.gerrit.server.account.ProjectWatches.ProjectWatchKey;
-import com.google.gerrit.server.change.AccountPatchReviewStore;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.index.change.ChangeIndexer;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
-import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.query.account.InternalAccountQuery;
-import com.google.gwtorm.jdbc.JdbcSchema;
-import com.google.gwtorm.server.OrmException;
-import com.google.gwtorm.server.ResultSet;
import com.google.inject.Inject;
import com.google.inject.Provider;
import java.io.IOException;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.errors.ConfigInvalidException;
public class DatabaseDeleteHandler {
private static final FluentLogger log = FluentLogger.forEnclosingClass();
- private final Provider<ReviewDb> dbProvider;
private final StarredChangesUtil starredChangesUtil;
- private final DynamicItem<AccountPatchReviewStore> accountPatchReviewStore;
private final ChangeIndexer indexer;
private final Provider<InternalAccountQuery> accountQueryProvider;
private final Provider<AccountsUpdate> accountsUpdateProvider;
private final ChangeNotes.Factory schemaFactoryNoteDb;
private final GitRepositoryManager repoManager;
- private final NotesMigration migration;
@Inject
public DatabaseDeleteHandler(
- Provider<ReviewDb> dbProvider,
StarredChangesUtil starredChangesUtil,
- DynamicItem<AccountPatchReviewStore> accountPatchReviewStore,
ChangeIndexer indexer,
ChangeNotes.Factory schemaFactoryNoteDb,
- NotesMigration migration,
GitRepositoryManager repoManager,
Provider<InternalAccountQuery> accountQueryProvider,
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider) {
- this.dbProvider = dbProvider;
this.starredChangesUtil = starredChangesUtil;
- this.accountPatchReviewStore = accountPatchReviewStore;
this.indexer = indexer;
this.accountQueryProvider = accountQueryProvider;
this.accountsUpdateProvider = accountsUpdateProvider;
this.schemaFactoryNoteDb = schemaFactoryNoteDb;
this.repoManager = repoManager;
- this.migration = migration;
}
- public void delete(Project project) throws OrmException, IOException {
- ReviewDb db = ReviewDbUtil.unwrapDb(dbProvider.get());
- if (isReviewDb()) {
- Connection conn = ((JdbcSchema) db).getConnection();
- try {
- conn.setAutoCommit(false);
- try {
- atomicDelete(db, project, getChangesList(project, conn));
- conn.commit();
- } finally {
- conn.setAutoCommit(true);
- }
- } catch (SQLException e) {
- try {
- conn.rollback();
- } catch (SQLException ex) {
- throw new OrmException(ex);
- }
- throw new OrmException(e);
- }
- } else {
- atomicDelete(db, project, getChangesListFromNoteDb(project));
- }
- }
-
- private boolean isReviewDb() {
- return !migration.disableChangeReviewDb();
- }
-
- private List<Change.Id> getChangesList(Project project, Connection conn) throws SQLException {
- try (PreparedStatement changesForProject =
- conn.prepareStatement("SELECT change_id FROM changes WHERE dest_project_name = ?")) {
- changesForProject.setString(1, project.getName());
- try (java.sql.ResultSet resultSet = changesForProject.executeQuery()) {
- List<Change.Id> changeIds = new ArrayList<>();
- while (resultSet.next()) {
- changeIds.add(new Change.Id(resultSet.getInt(1)));
- }
- return changeIds;
- }
- } catch (SQLException e) {
- throw new SQLException("Unable to get list of changes for project " + project.getName(), e);
- }
+ public void delete(Project project) throws IOException {
+ atomicDelete(project, getChangesListFromNoteDb(project));
}
private List<Change.Id> getChangesListFromNoteDb(Project project) throws IOException {
Project.NameKey projectKey = project.getNameKey();
List<Change.Id> changeIds =
schemaFactoryNoteDb
- .scan(repoManager.openRepository(projectKey), dbProvider.get(), projectKey)
+ .scan(repoManager.openRepository(projectKey), projectKey)
.map(ChangeNotesResult::id)
.collect(toList());
log.atFine().log(
"Number of changes in noteDb related to project %s are %d",
- projectKey.get(),
- changeIds.size());
+ projectKey.get(), changeIds.size());
return changeIds;
}
- private void deleteChanges(ReviewDb db, Project.NameKey project, List<Change.Id> changeIds)
- throws OrmException {
+ private void deleteChanges(Project.NameKey project, List<Change.Id> changeIds) {
for (Change.Id id : changeIds) {
try {
@@ -155,39 +89,14 @@
} catch (NoSuchChangeException e) {
// we can ignore the exception during delete
}
- if (isReviewDb()) {
- ResultSet<PatchSet> patchSets = db.patchSets().byChange(id);
- if (patchSets != null) {
- deleteFromPatchSets(db, patchSets);
- }
-
- // In the future, use schemaVersion to decide what to delete.
- db.patchComments().delete(db.patchComments().byChange(id));
- db.patchSetApprovals().delete(db.patchSetApprovals().byChange(id));
-
- db.changeMessages().delete(db.changeMessages().byChange(id));
- db.changes().deleteKeys(Collections.singleton(id));
- }
// Delete from the secondary index
- try {
- indexer.delete(id);
- } catch (IOException e) {
- log.atSevere().withCause(e).log("Failed to delete change %s from index", id);
- }
+ indexer.delete(id);
}
}
- private void deleteFromPatchSets(ReviewDb db, ResultSet<PatchSet> patchSets) throws OrmException {
- for (PatchSet patchSet : patchSets) {
- accountPatchReviewStore.get().clearReviewed(patchSet.getId());
- db.patchSets().delete(Collections.singleton(patchSet));
- }
- }
+ public void atomicDelete(Project project, List<Change.Id> changeIds) {
- public void atomicDelete(ReviewDb db, Project project, List<Change.Id> changeIds)
- throws OrmException {
-
- deleteChanges(db, project.getNameKey(), changeIds);
+ deleteChanges(project.getNameKey(), changeIds);
for (AccountState a : accountQueryProvider.get().byWatchedProject(project.getNameKey())) {
Account.Id accountId = a.getAccount().getId();
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
deleted file mode 100644
index 3432652..0000000
--- a/src/main/resources/Documentation/build.md
+++ /dev/null
@@ -1,86 +0,0 @@
-Build
-=====
-
-This plugin is built with Bazel and two build modes are supported:
-
-* Standalone
-* In Gerrit tree.
-
-Standalone build mode is recommended, as this mode doesn't require local Gerrit
-tree to exist.
-
-## Build standalone
-
-To build the plugin, issue the following command:
-
-```
- bazel build @PLUGIN@
-```
-
-The output is created in
-
-```
- bazel-bin/@PLUGIN@.jar
-```
-
-To package the plugin sources run:
-
-```
- bazel build lib@PLUGIN@__plugin-src.jar
-```
-
-The output is created in:
-
-```
- bazel-bin/lib@PLUGIN@__plugin-src.jar
-```
-
-To execute the tests run:
-
-```
- bazel test //...
-```
-
-This project can be imported into the Eclipse IDE. Execute:
-
-```
- ./tools/eclipse/project.sh
-```
-
-to generate the required files and then import the project.
-
-
-## Build in Gerrit tree
-
-Clone or link this plugin to the plugins directory of Gerrit's source
-tree, and issue the command:
-
-```
- bazel build plugins/@PLUGIN@
-```
-
-The output is created in
-
-```
- bazel-bin/plugins/@PLUGIN@/@PLUGIN@.jar
-```
-
-To execute the tests run:
-
-```
- bazel test plugins/@PLUGIN@:@PLUGIN@_tests
-```
-
-or filtering using the comma separated tags:
-
-````
- bazel test --test_tag_filters=@PLUGIN@ //...
-````
-
-This project can be imported into the Eclipse IDE.
-Add the plugin name to the `CUSTOM_PLUGINS` set in
-Gerrit core in `tools/bzl/plugins.bzl`, and execute:
-
-```
- ./tools/eclipse/project.py
-```
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 41b8490..047d7eb 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -33,19 +33,8 @@
By default false.
-plugin.@PLUGIN@.enablePreserveOption
-: Whether the "Preserve git repository" option is enabled for the user on the
- UI and ssh delete-project command.
-
- Disabling the preserve option means the user does not have access to the
- preserve option on the UI and ssh delete-project command.
-
- If this is set to false, then preserving deleted git repositories is
- disabled.
-
- By default true.
-
-plugin.@PLUGIN@.parentForDeletedProjects
+<a id="parentForDeletedProjects">
+`plugin.@PLUGIN@.parentForDeletedProjects`
: The name of the project that is used as parent for all deleted
projects that were preserved by hiding them.
diff --git a/src/main/resources/static/delete-project-with-preserve-disabled.js b/src/main/resources/static/delete-project-with-preserve-disabled.js
deleted file mode 100644
index 2065616..0000000
--- a/src/main/resources/static/delete-project-with-preserve-disabled.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (C) 2018 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.
-
-function _getCookie(name) {
- var key = name + '=';
- var result = '';
- document.cookie.split(';').some(c => {
- c = c.trim();
- if (c.indexOf(key, 0) === 0) {
- result = c.substring(key.length);
- return true;
- }
- });
- return result;
-}
-
-if (_getCookie('GERRIT_UI') === 'GWT') {
- Gerrit.install(function(self) {
- function onDeleteProject(c) {
- var f = c.checkbox();
- var b = c.button('Delete',
- {onclick: function(){
- c.call(
- {force: f.checked, preserve: false},
- function(r) {
- c.hide();
- window.alert('The project: "'
- + c.project
- + '" was deleted.'),
- Gerrit.go('/admin/projects/');
- });
- }});
- c.popup(c.div(
- c.msg('Are you really sure you want to delete the project: "'
- + c.project
- + '"?'),
- c.br(),
- c.label(f, 'Delete project even if open changes exist?'),
- c.br(),
- b));
- }
- self.onAction('project', 'delete', onDeleteProject);
- });
-}
diff --git a/src/main/resources/static/delete-project.js b/src/main/resources/static/delete-project.js
deleted file mode 100644
index a72ad60..0000000
--- a/src/main/resources/static/delete-project.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// 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.
-
-function _getCookie(name) {
- var key = name + '=';
- var result = '';
- document.cookie.split(';').some(c => {
- c = c.trim();
- if (c.indexOf(key, 0) === 0) {
- result = c.substring(key.length);
- return true;
- }
- });
- return result;
-}
-
-if (_getCookie('GERRIT_UI') === 'GWT') {
- Gerrit.install(function(self) {
- function onDeleteProject(c) {
- var f = c.checkbox();
- var p = c.checkbox();
- var b = c.button('Delete',
- {onclick: function(){
- c.call(
- {force: f.checked, preserve: p.checked},
- function(r) {
- c.hide();
- window.alert('The project: "'
- + c.project
- + '" was deleted.'),
- Gerrit.go('/admin/projects/');
- });
- }});
- c.popup(c.div(
- c.msg('Are you really sure you want to delete the project: "'
- + c.project
- + '"?'),
- c.br(),
- c.label(f, 'Delete project even if open changes exist?'),
- c.br(),
- c.label(p, 'Preserve GIT Repository?'),
- c.br(),
- b));
- }
- self.onAction('project', 'delete', onDeleteProject);
- });
-}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ConfigurationTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ConfigurationTest.java
index 8686916..70d1715 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ConfigurationTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ConfigurationTest.java
@@ -65,7 +65,6 @@
assertThat(deleteConfig.shouldArchiveDeletedRepos()).isFalse();
assertThat(deleteConfig.getArchiveDuration()).isEqualTo(DEFAULT_ARCHIVE_DURATION_MS);
assertThat(deleteConfig.getArchiveFolder().toString()).isEqualTo(pluginDataDir.toString());
- assertThat(deleteConfig.enablePreserveOption()).isTrue();
}
@Test
@@ -75,7 +74,6 @@
pluginConfig.setBoolean("allowDeletionOfReposWithTags", false);
pluginConfig.setBoolean("hideProjectOnPreserve", true);
pluginConfig.setBoolean("archiveDeletedRepos", true);
- pluginConfig.setBoolean("enablePreserveOption", false);
pluginConfig.setString("deleteArchivedReposAfter", CUSTOM_DURATION);
pluginConfig.setString("archiveFolder", customArchiveFolder.toString());
@@ -86,7 +84,6 @@
assertThat(deleteConfig.deletionWithTagsAllowed()).isFalse();
assertThat(deleteConfig.projectOnPreserveHidden()).isTrue();
assertThat(deleteConfig.shouldArchiveDeletedRepos()).isTrue();
- assertThat(deleteConfig.enablePreserveOption()).isFalse();
assertThat(deleteConfig.getArchiveDuration()).isEqualTo(Long.parseLong(CUSTOM_DURATION));
assertThat(deleteConfig.getArchiveFolder().toString())
.isEqualTo(customArchiveFolder.toString());
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
index 1074e65..44bcc8c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
@@ -24,6 +24,7 @@
import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
+import com.google.gerrit.exceptions.StorageException;
import com.google.gerrit.extensions.api.access.PluginPermission;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -41,7 +42,6 @@
import com.google.gerrit.server.restapi.project.ListChildProjects;
import com.google.gerrit.server.submit.MergeOpRepoManager;
import com.google.gerrit.server.submit.SubmoduleOp;
-import com.google.gwtorm.server.OrmException;
import com.google.inject.Provider;
import org.junit.Before;
import org.junit.Test;
@@ -52,7 +52,7 @@
@RunWith(MockitoJUnitRunner.class)
public class DeletePreconditionsTest {
private static final String PLUGIN_NAME = "delete-project";
- private static final Project.NameKey PROJECT_NAMEKEY = new Project.NameKey("test-project");
+ private static final Project.NameKey PROJECT_NAMEKEY = Project.nameKey("test-project");
@Mock private Configuration config;
@Mock private Provider<ListChildProjects> listChildProjectsProvider;
@@ -164,7 +164,7 @@
@Test
public void testUnableToAssertOpenChanges() throws Exception {
InternalChangeQuery queryChange = mock(InternalChangeQuery.class);
- doThrow(OrmException.class).when(queryChange).byProjectOpen(PROJECT_NAMEKEY);
+ doThrow(StorageException.class).when(queryChange).byProjectOpen(PROJECT_NAMEKEY);
when(queryProvider.get()).thenReturn(queryChange);
String expectedMessage =
String.format("Unable to verify if '%s' has open changes.", PROJECT_NAMEKEY.get());
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
index 36d1ab3..8795fde 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
@@ -26,13 +26,14 @@
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.acceptance.UseLocalDisk;
import com.google.gerrit.acceptance.UseSsh;
+import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.client.ProjectState;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.project.ProjectConfig;
-import com.google.gwtorm.server.OrmException;
+import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.deleteproject.DeleteProject.Input;
import java.io.File;
import java.io.IOException;
@@ -61,6 +62,8 @@
private static final String ARCHIVE_FOLDER = "archiveFolder";
private static final String PARENT_FOLDER = "parentFolder";
+ @Inject private RequestScopeOperations requestScopeOperations;
+
private File archiveFolder;
private File projectDir;
@@ -161,31 +164,6 @@
@Test
@UseLocalDisk
- @GerritConfig(name = "plugin.delete-project.enablePreserveOption", value = "true")
- public void testSshDeleteProjPreserveGitRepoEnabled() throws Exception {
- String cmd = createDeleteCommand("--preserve-git-repository", project.get());
- adminSshSession.exec(cmd);
-
- assertThat(adminSshSession.getError()).isNull();
- assertThat(projectDir.exists()).isTrue();
- }
-
- @Test
- @UseLocalDisk
- @GerritConfig(name = "plugin.delete-project.enablePreserveOption", value = "false")
- public void testSshDeleteProjPreserveGitRepoNotEnabled() throws Exception {
- String cmd = createDeleteCommand("--preserve-git-repository", project.get());
- adminSshSession.exec(cmd);
- String expected =
- "Given the enablePreserveOption is configured to be false, "
- + "the --preserve-git-repository option is not allowed.\n"
- + "Please remove this option and retry.\n";
- assertThat(adminSshSession.getError()).isEqualTo(expected);
- assertThat(projectDir.exists()).isTrue();
- }
-
- @Test
- @UseLocalDisk
@GerritConfig(name = "plugin.delete-project.hideProjectOnPreserve", value = "true")
public void testSshHideProject() throws Exception {
String cmd = createDeleteCommand("--preserve-git-repository", project.get());
@@ -202,7 +180,7 @@
@Test
@UseLocalDisk
public void testDeleteProjWithChildren() throws Exception {
- String childrenString = createProject("foo", project, true).get();
+ String childrenString = createProjectOverAPI("foo", project, true, null).get();
verifyProjectRepoExists(Project.NameKey.parse(childrenString));
String cmd = createDeleteCommand(project.get());
@@ -267,7 +245,7 @@
assertThat(isEmpty(archiveFolder.toPath())).isTrue();
String name = "pj1";
- String projectName = createProject(name).get();
+ String projectName = createProjectOverAPI(name, null, true, null).get();
File projectDir = verifyProjectRepoExists(Project.NameKey.parse(projectName));
Path parentFolder = projectDir.toPath().getParent().resolve(PARENT_FOLDER).resolve(projectName);
@@ -301,7 +279,7 @@
}
private RestResponse httpDeleteProjectHelper(boolean force) throws Exception {
- setApiUser(user);
+ requestScopeOperations.setApiUser(user.id());
sender.clear();
String endPoint = "/projects/" + project.get() + "/delete-project~delete";
Input i = new Input();
@@ -317,7 +295,7 @@
private void pushTagOldCommitNotForce() throws Exception {
testRepo = cloneProject(project, user);
- commitBuilder().ident(user.getIdent()).message("subject (" + System.nanoTime() + ")").create();
+ commitBuilder().ident(user.newIdent()).message("subject (" + System.nanoTime() + ")").create();
String tagName = "v1_" + System.nanoTime();
grant(project, "refs/for/refs/heads/master", Permission.SUBMIT, false, REGISTERED_USERS);
@@ -341,7 +319,7 @@
}
}
- private void assertAllChangesDeletedInIndex() throws OrmException {
+ private void assertAllChangesDeletedInIndex() {
assertThat(queryProvider.get().byProject(project)).isEmpty();
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjectsTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjectsTest.java
index 3b18ba3..cc6e1f1 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjectsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjectsTest.java
@@ -92,10 +92,10 @@
}
private void assertProtected(String name) {
- assertThat(protectedProjects.isProtected(new Project.NameKey(name))).isTrue();
+ assertThat(protectedProjects.isProtected(Project.nameKey(name))).isTrue();
}
private void assertNotProtected(String name) {
- assertThat(protectedProjects.isProtected(new Project.NameKey(name))).isFalse();
+ assertThat(protectedProjects.isProtected(Project.nameKey(name))).isFalse();
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandlerTest.java
index c03b810..de59ac3 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandlerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandlerTest.java
@@ -62,7 +62,7 @@
public void shouldDeleteRepository() throws Exception {
String repoName = "testRepo";
Repository repository = createRepository(repoName);
- Project.NameKey nameKey = new Project.NameKey(repoName);
+ Project.NameKey nameKey = Project.nameKey(repoName);
Project project = new Project(nameKey);
when(repoManager.openRepository(nameKey)).thenReturn(repository);
when(config.shouldArchiveDeletedRepos()).thenReturn(false);
@@ -75,7 +75,7 @@
public void shouldDeleteEmptyParentFolders() throws Exception {
String repoName = "a/b/c";
Repository repository = createRepository(repoName);
- Project.NameKey nameKey = new Project.NameKey(repoName);
+ Project.NameKey nameKey = Project.nameKey(repoName);
Project project = new Project(nameKey);
when(repoManager.openRepository(nameKey)).thenReturn(repository);
fsDeleteHandler = new FilesystemDeleteHandler(repoManager, deletedListener, config);
@@ -91,7 +91,7 @@
String repoToKeepName = "a/b/e";
Repository repoToKeep = createRepository(repoToKeepName);
- Project.NameKey nameKey = new Project.NameKey(repoToDeleteName);
+ Project.NameKey nameKey = Project.nameKey(repoToDeleteName);
Project project = new Project(nameKey);
when(repoManager.openRepository(nameKey)).thenReturn(repoToDelete);
fsDeleteHandler = new FilesystemDeleteHandler(repoManager, deletedListener, config);
@@ -104,7 +104,7 @@
public void shouldPreserveRepository() throws Exception {
String repoName = "preservedRepo";
Repository repository = createRepository(repoName);
- Project.NameKey nameKey = new Project.NameKey(repoName);
+ Project.NameKey nameKey = Project.nameKey(repoName);
Project project = new Project(nameKey);
when(repoManager.openRepository(nameKey)).thenReturn(repository);
fsDeleteHandler = new FilesystemDeleteHandler(repoManager, deletedListener, config);
@@ -126,7 +126,7 @@
Path archiveFolder = basePath.resolve("test_archive");
when(config.shouldArchiveDeletedRepos()).thenReturn(true);
when(config.getArchiveFolder()).thenReturn(archiveFolder);
- Project.NameKey nameKey = new Project.NameKey(repoName);
+ Project.NameKey nameKey = Project.nameKey(repoName);
Project project = new Project(nameKey);
when(repoManager.openRepository(nameKey)).thenReturn(repository);
fsDeleteHandler = new FilesystemDeleteHandler(repoManager, deletedListener, config);
diff --git a/tools/BUILD b/tools/BUILD
deleted file mode 100644
index 1fa2160..0000000
--- a/tools/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file - bazel treat directories with BUILD file as a package
\ No newline at end of file
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD
deleted file mode 100644
index c5ed0b7..0000000
--- a/tools/bzl/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file required by Bazel
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
deleted file mode 100644
index c921d01..0000000
--- a/tools/bzl/classpath.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- _classpath_collector = "classpath_collector",
-)
-
-classpath_collector = _classpath_collector
diff --git a/tools/bzl/genrule2.bzl b/tools/bzl/genrule2.bzl
deleted file mode 100644
index 61c4e18..0000000
--- a/tools/bzl/genrule2.bzl
+++ /dev/null
@@ -1,3 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:genrule2.bzl", _genrule2 = "genrule2")
-
-genrule2 = _genrule2
diff --git a/tools/bzl/js.bzl b/tools/bzl/js.bzl
deleted file mode 100644
index 0f9e367..0000000
--- a/tools/bzl/js.bzl
+++ /dev/null
@@ -1,3 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:js.bzl", _polygerrit_plugin = "polygerrit_plugin")
-
-polygerrit_plugin = _polygerrit_plugin
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
deleted file mode 100644
index 97307bd..0000000
--- a/tools/bzl/junit.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- _junit_tests = "junit_tests",
-)
-
-junit_tests = _junit_tests
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
deleted file mode 100644
index 35ea8ce..0000000
--- a/tools/bzl/maven_jar.bzl
+++ /dev/null
@@ -1,3 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _maven_jar = "maven_jar")
-
-maven_jar = _maven_jar
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
deleted file mode 100644
index 4d2dbdd..0000000
--- a/tools/bzl/plugin.bzl
+++ /dev/null
@@ -1,10 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- _gerrit_plugin = "gerrit_plugin",
- _plugin_deps = "PLUGIN_DEPS",
- _plugin_test_deps = "PLUGIN_TEST_DEPS",
-)
-
-gerrit_plugin = _gerrit_plugin
-PLUGIN_DEPS = _plugin_deps
-PLUGIN_TEST_DEPS = _plugin_test_deps
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD
deleted file mode 100644
index 0c7503d..0000000
--- a/tools/eclipse/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-load("//tools/bzl:classpath.bzl", "classpath_collector")
-
-classpath_collector(
- name = "main_classpath_collect",
- testonly = 1,
- deps = [
- "//:delete-project__plugin_test_deps",
- ],
-)
diff --git a/tools/eclipse/project.sh b/tools/eclipse/project.sh
deleted file mode 100755
index 55713c7..0000000
--- a/tools/eclipse/project.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 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.
-
-`bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project --output location | sed s/BUILD:.*//`project.py -n delete-project -r .
diff --git a/tools/workspace_status.py b/tools/workspace_status.py
deleted file mode 100644
index e65db86..0000000
--- a/tools/workspace_status.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-
-# This script will be run by bazel when the build process starts to
-# generate key-value information that represents the status of the
-# workspace. The output should be like
-#
-# KEY1 VALUE1
-# KEY2 VALUE2
-#
-# If the script exits with non-zero code, it's considered as a failure
-# and the output will be discarded.
-
-from __future__ import print_function
-import subprocess
-import sys
-
-CMD = ['git', 'describe', '--always', '--match', 'v[0-9].*', '--dirty']
-
-
-def revision():
- try:
- return subprocess.check_output(CMD).strip().decode("utf-8")
- except OSError as err:
- print('could not invoke git: %s' % err, file=sys.stderr)
- sys.exit(1)
- except subprocess.CalledProcessError as err:
- print('error using git: %s' % err, file=sys.stderr)
- sys.exit(1)
-
-
-print("STABLE_BUILD_DELETE-PROJECT_LABEL %s" % revision())