CheckCodeOwnerConfigFilesInRevision: Get changed files without rename detection

CheckCodeOwnerConfigFilesInRevision checks OWNERS files in a revision.
For this we do not care about renames and deletions, hence rename
detection is not needed here.

Change-Id: Iedb2f65698eaae073a61b0e926c5d188af31e45b
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/ChangedFiles.java b/java/com/google/gerrit/plugins/codeowners/backend/ChangedFiles.java
index ccbb5ba..6c77dd0 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/ChangedFiles.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/ChangedFiles.java
@@ -75,18 +75,23 @@
   /**
    * Gets the changed files.
    *
-   * <p>Rename detection is enabled.
+   * <p>Rename detection is disabled.
+   *
+   * <p>Uses the configured merge commit strategy.
    *
    * @param project the project
    * @param revision the revision for which the changed files should be retrieved
-   * @param mergeCommitStrategy the merge commit strategy that should be used to compute the changed
-   *     files for merge commits
    * @return the files that have been changed in the given revision, sorted alphabetically by path
+   * @throws IOException thrown if the computation fails due to an I/O error
    */
-  public ImmutableList<ChangedFile> get(
-      Project.NameKey project, ObjectId revision, MergeCommitStrategy mergeCommitStrategy)
-      throws IOException, DiffNotAvailableException {
-    return get(project, revision, mergeCommitStrategy, /* enableRenameDetection= */ true);
+  public ImmutableList<ChangedFile> getWithoutRenameDetection(
+      Project.NameKey project, ObjectId revision) throws IOException, DiffNotAvailableException {
+    requireNonNull(project, "project");
+    requireNonNull(revision, "revision");
+    return getWithoutRenameDetection(
+        project,
+        revision,
+        codeOwnersPluginConfiguration.getProjectConfig(project).getMergeCommitStrategy());
   }
 
   /**
@@ -106,6 +111,63 @@
     return get(project, revision, mergeCommitStrategy, /* enableRenameDetection= */ false);
   }
 
+  /**
+   * Gets the changed files.
+   *
+   * <p>Rename detection is enabled.
+   *
+   * <p>Uses the configured merge commit strategy.
+   *
+   * @param revisionResource the revision resource for which the changed files should be retrieved
+   * @return the files that have been changed in the given revision, sorted alphabetically by path
+   * @throws IOException thrown if the computation fails due to an I/O error
+   * @see #get(Project.NameKey, ObjectId, MergeCommitStrategy)
+   */
+  public ImmutableList<ChangedFile> get(RevisionResource revisionResource)
+      throws IOException, DiffNotAvailableException {
+    requireNonNull(revisionResource, "revisionResource");
+    return get(revisionResource.getProject(), revisionResource.getPatchSet().commitId());
+  }
+
+  /**
+   * Gets the changed files.
+   *
+   * <p>Rename detection is enabled.
+   *
+   * <p>Uses the configured merge commit strategy.
+   *
+   * @param project the project
+   * @param revision the revision for which the changed files should be retrieved
+   * @return the files that have been changed in the given revision, sorted alphabetically by path
+   * @throws IOException thrown if the computation fails due to an I/O error
+   */
+  public ImmutableList<ChangedFile> get(Project.NameKey project, ObjectId revision)
+      throws IOException, DiffNotAvailableException {
+    requireNonNull(project, "project");
+    requireNonNull(revision, "revision");
+    return get(
+        project,
+        revision,
+        codeOwnersPluginConfiguration.getProjectConfig(project).getMergeCommitStrategy());
+  }
+
+  /**
+   * Gets the changed files.
+   *
+   * <p>Rename detection is enabled.
+   *
+   * @param project the project
+   * @param revision the revision for which the changed files should be retrieved
+   * @param mergeCommitStrategy the merge commit strategy that should be used to compute the changed
+   *     files for merge commits
+   * @return the files that have been changed in the given revision, sorted alphabetically by path
+   */
+  public ImmutableList<ChangedFile> get(
+      Project.NameKey project, ObjectId revision, MergeCommitStrategy mergeCommitStrategy)
+      throws IOException, DiffNotAvailableException {
+    return get(project, revision, mergeCommitStrategy, /* enableRenameDetection= */ true);
+  }
+
   private ImmutableList<ChangedFile> get(
       Project.NameKey project,
       ObjectId revision,
@@ -146,46 +208,6 @@
   }
 
   /**
-   * Gets the changed files.
-   *
-   * <p>Rename detection is enabled.
-   *
-   * <p>Uses the configured merge commit strategy.
-   *
-   * @param project the project
-   * @param revision the revision for which the changed files should be retrieved
-   * @return the files that have been changed in the given revision, sorted alphabetically by path
-   * @throws IOException thrown if the computation fails due to an I/O error
-   */
-  public ImmutableList<ChangedFile> get(Project.NameKey project, ObjectId revision)
-      throws IOException, DiffNotAvailableException {
-    requireNonNull(project, "project");
-    requireNonNull(revision, "revision");
-    return get(
-        project,
-        revision,
-        codeOwnersPluginConfiguration.getProjectConfig(project).getMergeCommitStrategy());
-  }
-
-  /**
-   * Gets the changed files.
-   *
-   * <p>Rename detection is enabled.
-   *
-   * <p>Uses the configured merge commit strategy.
-   *
-   * @param revisionResource the revision resource for which the changed files should be retrieved
-   * @return the files that have been changed in the given revision, sorted alphabetically by path
-   * @throws IOException thrown if the computation fails due to an I/O error
-   * @see #get(Project.NameKey, ObjectId, MergeCommitStrategy)
-   */
-  public ImmutableList<ChangedFile> get(RevisionResource revisionResource)
-      throws IOException, DiffNotAvailableException {
-    requireNonNull(revisionResource, "revisionResource");
-    return get(revisionResource.getProject(), revisionResource.getPatchSet().commitId());
-  }
-
-  /**
    * Gets the changed files from {@link DiffOperationsForCommitValidation} which needs to be used to
    * retrieve modified files during commit validation.
    *
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwnerConfigFilesInRevision.java b/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwnerConfigFilesInRevision.java
index 930ab0f..70a425a 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwnerConfigFilesInRevision.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwnerConfigFilesInRevision.java
@@ -95,7 +95,8 @@
         RevWalk rw = new RevWalk(repository)) {
       RevCommit commit = rw.parseCommit(revisionResource.getPatchSet().commitId());
       return Response.ok(
-          changedFiles.get(revisionResource.getProject(), commit).stream()
+          // We are only interested in the new paths, hence rename detection is not needed.
+          changedFiles.getWithoutRenameDetection(revisionResource.getProject(), commit).stream()
               // filter out deletions (files without new path)
               .filter(changedFile -> changedFile.newPath().isPresent())
               // filter out non code owner config files