Merge branch 'stable-3.12'

* stable-3.12:
  Use ChangeIndexer.deleteAllForProject on project deletion
  Revert "Introduce all-project-changes-deleted-from-index event"

Change-Id: I99da02728c2baa7182c5383396a991712627ca86
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java
deleted file mode 100644
index e94c5fb..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2025 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;
-
-import com.google.gerrit.entities.Project;
-import com.google.gerrit.entities.Project.NameKey;
-import com.google.gerrit.server.events.ProjectEvent;
-
-public class AllProjectChangesDeletedFromIndexEvent extends ProjectEvent {
-  public static final String TYPE = "all-project-changes-deleted-from-index";
-  public String projectName;
-
-  public AllProjectChangesDeletedFromIndexEvent() {
-    super(TYPE);
-  }
-
-  @Override
-  public NameKey getProjectNameKey() {
-    return Project.nameKey(projectName);
-  }
-}
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 255fe3d..75a948a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
@@ -16,7 +16,6 @@
 
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.entities.Project;
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.Response;
@@ -38,8 +37,7 @@
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
 
 @Singleton
-class DeleteProject implements RestModifyView<ProjectResource, Input>, ChangeIndexedListener {
-
+class DeleteProject implements RestModifyView<ProjectResource, Input> {
   static class Input {
     boolean preserve;
     boolean force;
@@ -127,19 +125,4 @@
       deleteLog.onDelete((IdentifiedUser) userProvider.get(), project.getNameKey(), input, ex);
     }
   }
-
-  @Override
-  public void onChangeIndexed(String projectName, int id) {}
-
-  @Override
-  public void onChangeDeleted(int id) {}
-
-  @Override
-  public void onAllChangesDeletedForProject(String projectName) {
-    AllProjectChangesDeletedFromIndexEvent event = new AllProjectChangesDeletedFromIndexEvent();
-    event.projectName = projectName;
-    event.instanceId = instanceId;
-
-    dispatcher.get().postEvent(Project.nameKey(projectName), event);
-  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
index cd0510e..a2e3f15 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
@@ -20,9 +20,7 @@
 
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.config.CapabilityDefinition;
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.gerrit.extensions.events.LifecycleListener;
-import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
 import com.google.gerrit.server.events.EventTypes;
 import com.google.inject.AbstractModule;
@@ -64,10 +62,6 @@
     }
 
     EventTypes.register(ProjectDeletedEvent.TYPE, ProjectDeletedEvent.class);
-    EventTypes.register(
-        AllProjectChangesDeletedFromIndexEvent.TYPE, AllProjectChangesDeletedFromIndexEvent.class);
-
-    DynamicSet.bind(binder(), ChangeIndexedListener.class).to(DeleteProject.class);
 
     install(
         new RestApiModule() {
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 fa63d85..9c684ef 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
@@ -23,7 +23,6 @@
 import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
 import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
 import com.google.gerrit.acceptance.RestResponse;
 import com.google.gerrit.acceptance.TestPlugin;
@@ -38,7 +37,6 @@
 import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.client.ProjectState;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.server.events.Event;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.deleteproject.DeleteProject.Input;
 import java.io.File;
@@ -288,31 +286,6 @@
     assertThat(parentFolder.toFile().exists()).isFalse();
   }
 
-  @Test
-  @UseLocalDisk
-  public void testHttpDeleteProjectEmitsAllProjectChangesDeletedFromIndex() throws Exception {
-    RestResponse r = httpDeleteProjectHelper(false);
-    r.assertNoContent();
-
-    ImmutableList<Event> events =
-        eventRecorder.getGenericEvents(AllProjectChangesDeletedFromIndexEvent.TYPE, 1);
-
-    assertThat(((AllProjectChangesDeletedFromIndexEvent) events.getFirst()).getProjectNameKey())
-        .isEqualTo(project);
-  }
-
-  @Test
-  @UseLocalDisk
-  public void testSshDeleteProjectEmitsAllProjectChangesDeletedFromIndex() throws Exception {
-    adminSshSession.exec(createDeleteCommand(project.get()));
-
-    ImmutableList<Event> events =
-        eventRecorder.getGenericEvents(AllProjectChangesDeletedFromIndexEvent.TYPE, 1);
-
-    assertThat(((AllProjectChangesDeletedFromIndexEvent) events.getFirst()).getProjectNameKey())
-        .isEqualTo(project);
-  }
-
   private File verifyProjectRepoExists(Project.NameKey name) throws IOException {
     File projectDir;
     try (Repository projectRepo = repoManager.openRepository(name)) {