Fix RepoView leak in CodeOwnerConfigValidator

The onPreMerge() operation of CodeOwnerConfigValidator was creating
a RepoView on-the-fly without a proper try-with-resource causing
the leak of a Repository object reference counting.

Extract the repoView creation in a separate variable and make sure
it is included in the outer try-with-resource everywhere it is used.

NOTE: ErrorProne should have spotted resources leaks in the
first place, so we should consider enabling the MustBeClosedChecker.

[1] https://errorprone.info/bugpattern/MustBeClosedChecker

Change-Id: I2880a4cf8b76e2be979288c996720478f98b4fba
diff --git a/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java b/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
index 8411568..1a08131 100644
--- a/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
+++ b/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
@@ -306,15 +306,15 @@
       } else {
         try (InMemoryInserter ins = new InMemoryInserter(repository);
             ObjectReader reader = ins.newReader();
-            RevWalk rw = new RevWalk(reader)) {
+            RevWalk rw = new RevWalk(reader);
+            RepoView repoView = new RepoView(repository, rw, ins)) {
           ChangeNotes changeNotes =
               changeNotesFactory.create(projectState.getNameKey(), commit.change().getId());
           PatchSet patchSet = patchSetUtil.get(changeNotes, patchSetId);
           IdentifiedUser patchSetUploader = userFactory.create(patchSet.uploader());
           validationResult =
               validateCodeOwnerConfig(
-                  diffOperationsForCommitValidationFactory.create(
-                      new RepoView(repository, rw, ins), ins),
+                  diffOperationsForCommitValidationFactory.create(repoView, ins),
                   branchNameKey,
                   commit,
                   patchSetUploader,
diff --git a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
index c3dece0..0957119 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
@@ -66,7 +66,8 @@
             new TestRepository<>(repoManager.openRepository(project));
         ObjectInserter ins = testRepo.getRepository().newObjectInserter();
         ObjectReader reader = ins.newReader();
-        RevWalk revWalk = new RevWalk(reader)) {
+        RevWalk revWalk = new RevWalk(reader);
+        RepoView repoView = new RepoView(testRepo.getRepository(), revWalk, ins)) {
       RevCommit commit =
           testRepo
               .commit()
@@ -81,9 +82,7 @@
       receiveEvent.commit = commit;
       receiveEvent.revWalk = testRepo.getRevWalk();
       receiveEvent.repoConfig = new Config();
-      receiveEvent.diffOperations =
-          diffOperationsForCommitValidationFactory.create(
-              new RepoView(testRepo.getRepository(), revWalk, ins), ins);
+      receiveEvent.diffOperations = diffOperationsForCommitValidationFactory.create(repoView, ins);
       CommitValidationException exception =
           assertThrows(
               CommitValidationException.class,