Merge branch 'stable-2.16' into stable-3.0

* stable-2.16:
  Bump Bazel version to 3.0.0
  Upgrade bazlets to latest stable-2.16 to build with 2.16.17 API
  Upgrade bazlets to latest stable-2.16

Change-Id: I7734e57d616accafe09c5cee7f15332e2d810a92
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 4a36342..0000000
--- a/.bazelversion
+++ /dev/null
@@ -1 +0,0 @@
-3.0.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 14256c0..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,58 +0,0 @@
-workspace(name = "delete_project")
-
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
-    commit = "9e23df10840ca3976431c842fdada58c7a51c6e3",
-    #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..4b5f6f2 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -33,18 +33,6 @@
 
 	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
 :	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())