Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
Upgrade bazlets to latest stable-2.16 to build with 2.16.8 API
Upgrade bazlets to latest stable-2.15 to build with 2.15.13 API
Upgrade bazlets to latest stable-2.14 to build with 2.14.20 API
Change-Id: Ifc4d373e8094420f34f589a930e98d62bcd9e6c8
diff --git a/.bazelrc b/.bazelrc
deleted file mode 100644
index 73fc9ea..0000000
--- a/.bazelrc
+++ /dev/null
@@ -1,4 +0,0 @@
-build --workspace_status_command=./tools/workspace-status.sh
-build --experimental_strict_action_env
-build --action_env=PATH
-test --build_tests_only
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 c4386ab..83793ef 100644
--- a/BUILD
+++ b/BUILD
@@ -18,7 +18,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"],
)
@@ -47,7 +47,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 def05e2..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,56 +0,0 @@
-workspace(name = "delete_project")
-
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
- commit = "a5525ae2c43e61cf113dacc03691cb2bcf44fb12",
- #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:defs.bzl", "closure_repositories")
-
-closure_repositories()
-
-# 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 7e04095..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.27.0",
- sha1 = "835fc3283b481f4758b8ef464cd560c649c08b00",
- 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/DeleteAction.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteAction.java
index 040f7e4..d9f427c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteAction.java
@@ -16,12 +16,10 @@
import com.google.gerrit.extensions.webui.UiAction;
import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.project.ProjectResource;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.googlesource.gerrit.plugins.deleteproject.cache.CacheDeleteHandler;
-import com.googlesource.gerrit.plugins.deleteproject.database.DatabaseDeleteHandler;
import com.googlesource.gerrit.plugins.deleteproject.fs.FilesystemDeleteHandler;
public class DeleteAction extends DeleteProject implements UiAction<ProjectResource> {
@@ -30,25 +28,14 @@
@Inject
DeleteAction(
ProtectedProjects protectedProjects,
- DatabaseDeleteHandler dbHandler,
FilesystemDeleteHandler fsHandler,
CacheDeleteHandler cacheHandler,
Provider<CurrentUser> userProvider,
DeleteLog deleteLog,
DeletePreconditions preConditions,
Configuration cfg,
- HideProject hideProject,
- NotesMigration migration) {
- super(
- dbHandler,
- fsHandler,
- cacheHandler,
- userProvider,
- deleteLog,
- preConditions,
- cfg,
- hideProject,
- migration);
+ HideProject hideProject) {
+ super(fsHandler, cacheHandler, userProvider, deleteLog, preConditions, cfg, hideProject);
this.protectedProjects = protectedProjects;
}
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 e3fa6b9..4ffd01c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
@@ -21,15 +21,12 @@
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.notedb.NotesMigration;
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;
import com.googlesource.gerrit.plugins.deleteproject.DeleteProject.Input;
import com.googlesource.gerrit.plugins.deleteproject.cache.CacheDeleteHandler;
-import com.googlesource.gerrit.plugins.deleteproject.database.DatabaseDeleteHandler;
import com.googlesource.gerrit.plugins.deleteproject.fs.FilesystemDeleteHandler;
import java.io.IOException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -43,27 +40,22 @@
protected final DeletePreconditions preConditions;
- private final DatabaseDeleteHandler dbHandler;
private final FilesystemDeleteHandler fsHandler;
private final CacheDeleteHandler cacheHandler;
private final Provider<CurrentUser> userProvider;
private final DeleteLog deleteLog;
private final Configuration cfg;
private final HideProject hideProject;
- private NotesMigration migration;
@Inject
DeleteProject(
- DatabaseDeleteHandler dbHandler,
FilesystemDeleteHandler fsHandler,
CacheDeleteHandler cacheHandler,
Provider<CurrentUser> userProvider,
DeleteLog deleteLog,
DeletePreconditions preConditions,
Configuration cfg,
- HideProject hideProject,
- NotesMigration migration) {
- this.dbHandler = dbHandler;
+ HideProject hideProject) {
this.fsHandler = fsHandler;
this.cacheHandler = cacheHandler;
this.userProvider = userProvider;
@@ -71,12 +63,10 @@
this.preConditions = preConditions;
this.cfg = cfg;
this.hideProject = hideProject;
- this.migration = migration;
}
@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);
@@ -84,16 +74,12 @@
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;
try {
if (!preserve || !cfg.projectOnPreserveHidden()) {
- if (!migration.disableChangeReviewDb()) {
- dbHandler.delete(project);
- }
try {
fsHandler.delete(project, preserve);
} catch (RepositoryNotFoundException e) {
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/database/DatabaseDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
deleted file mode 100644
index 5dff8c5..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
+++ /dev/null
@@ -1,175 +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.
-
-package com.googlesource.gerrit.plugins.deleteproject.database;
-
-import static java.util.Collections.singleton;
-
-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.index.change.ChangeIndexer;
-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;
-
- @Inject
- public DatabaseDeleteHandler(
- Provider<ReviewDb> dbProvider,
- StarredChangesUtil starredChangesUtil,
- DynamicItem<AccountPatchReviewStore> accountPatchReviewStore,
- ChangeIndexer indexer,
- 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;
- }
-
- public void delete(Project project) throws OrmException {
- ReviewDb db = ReviewDbUtil.unwrapDb(dbProvider.get());
- 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);
- }
- }
-
- 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);
- }
- }
-
- private void deleteChanges(ReviewDb db, Project.NameKey project, List<Change.Id> changeIds)
- throws OrmException {
-
- for (Change.Id id : changeIds) {
- try {
- starredChangesUtil.unstarAll(project, id);
- } catch (NoSuchChangeException e) {
- // we can ignore the exception during delete
- }
- 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);
- }
- }
- }
-
- 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(ReviewDb db, Project project, List<Change.Id> changeIds)
- throws OrmException {
-
- deleteChanges(db, project.getNameKey(), changeIds);
-
- for (AccountState a : accountQueryProvider.get().byWatchedProject(project.getNameKey())) {
- Account.Id accountId = a.getAccount().getId();
- for (ProjectWatchKey watchKey : a.getProjectWatches().keySet()) {
- if (project.getNameKey().equals(watchKey.project())) {
- try {
- accountsUpdateProvider
- .get()
- .update(
- "Delete Project Watches via API",
- accountId,
- u -> u.deleteProjectWatches(singleton(watchKey)));
- } catch (IOException | ConfigInvalidException e) {
- log.atSevere().withCause(e).log(
- "Removing watch entry for user %s in project %s failed.",
- a.getUserName(), project.getName());
- }
- }
- }
- }
- }
-}
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
deleted file mode 100644
index 0a6767b..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-genfiles/@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-genfiles/plugins/@PLUGIN@/@PLUGIN@.jar
-```
-
-To execute the tests run:
-
-```
- bazel test plugins/@PLUGIN@:delete_project_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 c4f98ff..01c756b 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -34,19 +34,6 @@
By default false.
-<a id="enablePreserveOption">
-`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.
-
<a id="parentForDeletedProjects">
`plugin.@PLUGIN@.parentForDeletedProjects`
: The name of the project that is used as parent for all deleted
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 550ea6c..0000000
--- a/src/main/resources/static/delete-project-with-preserve-disabled.js
+++ /dev/null
@@ -1,42 +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.
-
-if (!window.Polymer) {
- 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);
- });
-}
\ No newline at end of file
diff --git a/src/main/resources/static/delete-project.js b/src/main/resources/static/delete-project.js
deleted file mode 100644
index 2291279..0000000
--- a/src/main/resources/static/delete-project.js
+++ /dev/null
@@ -1,45 +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.
-
-if (!window.Polymer) {
- 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 6658478..b2cc319 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
@@ -23,6 +23,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;
@@ -40,7 +41,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.Rule;
@@ -53,7 +53,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;
@@ -160,7 +160,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 206f231..1bc8b72 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
@@ -26,11 +26,13 @@
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.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.project.ProjectConfig;
+import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.deleteproject.DeleteProject.Input;
import java.io.File;
import java.io.IOException;
@@ -59,6 +61,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;
@@ -143,31 +147,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());
@@ -184,7 +163,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());
@@ -248,7 +227,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);
@@ -282,7 +261,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();
@@ -298,7 +277,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);
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/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 d5764f7..0000000
--- a/tools/bzl/classpath.bzl
+++ /dev/null
@@ -1,4 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- "classpath_collector",
-)
diff --git a/tools/bzl/genrule2.bzl b/tools/bzl/genrule2.bzl
deleted file mode 100644
index de66f32..0000000
--- a/tools/bzl/genrule2.bzl
+++ /dev/null
@@ -1 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:genrule2.bzl", "genrule2")
diff --git a/tools/bzl/js.bzl b/tools/bzl/js.bzl
deleted file mode 100644
index 0eba184..0000000
--- a/tools/bzl/js.bzl
+++ /dev/null
@@ -1 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:js.bzl", "polygerrit_plugin")
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
deleted file mode 100644
index 3af7e58..0000000
--- a/tools/bzl/junit.bzl
+++ /dev/null
@@ -1,4 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- "junit_tests",
-)
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
deleted file mode 100644
index 2eabedb..0000000
--- a/tools/bzl/maven_jar.bzl
+++ /dev/null
@@ -1 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "maven_jar")
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
deleted file mode 100644
index 0b25d23..0000000
--- a/tools/bzl/plugin.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- "PLUGIN_DEPS",
- "PLUGIN_TEST_DEPS",
- "gerrit_plugin",
-)
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.sh b/tools/workspace-status.sh
deleted file mode 100755
index 3185cae..0000000
--- a/tools/workspace-status.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-# 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.
-
-function rev() {
- cd $1; git describe --always --match "v[0-9].*" --dirty
-}
-
-echo STABLE_BUILD_DELETE-PROJECT_LABEL $(rev .)