AccessIT: Use ExtensionRegistry for FileHistoryWebLink Add the necessary support in ExtensionRegistry and update the tests in AccessIT to use it. Change-Id: I15640bd6ac4309dfdf62d510338aecc19c82b531
diff --git a/java/com/google/gerrit/acceptance/ExtensionRegistry.java b/java/com/google/gerrit/acceptance/ExtensionRegistry.java index fa047a8..3034099 100644 --- a/java/com/google/gerrit/acceptance/ExtensionRegistry.java +++ b/java/com/google/gerrit/acceptance/ExtensionRegistry.java
@@ -26,6 +26,7 @@ import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.extensions.registration.PrivateInternals_DynamicMapImpl; import com.google.gerrit.extensions.registration.RegistrationHandle; +import com.google.gerrit.extensions.webui.FileHistoryWebLink; import com.google.gerrit.server.ExceptionHook; import com.google.gerrit.server.change.ChangeETagComputation; import com.google.gerrit.server.git.ChangeMessageModifier; @@ -56,6 +57,7 @@ private final DynamicSet<RefOperationValidationListener> refOperationValidationListeners; private final DynamicSet<CommentAddedListener> commentAddedListeners; private final DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners; + private final DynamicSet<FileHistoryWebLink> fileHistoryWebLinks; @Inject ExtensionRegistry( @@ -74,7 +76,8 @@ DynamicMap<DownloadScheme> downloadSchemes, DynamicSet<RefOperationValidationListener> refOperationValidationListeners, DynamicSet<CommentAddedListener> commentAddedListeners, - DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners) { + DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners, + DynamicSet<FileHistoryWebLink> fileHistoryWebLinks) { this.accountIndexedListeners = accountIndexedListeners; this.changeIndexedListeners = changeIndexedListeners; this.groupIndexedListeners = groupIndexedListeners; @@ -91,6 +94,7 @@ this.refOperationValidationListeners = refOperationValidationListeners; this.commentAddedListeners = commentAddedListeners; this.refUpdatedListeners = refUpdatedListeners; + this.fileHistoryWebLinks = fileHistoryWebLinks; } public Registration newRegistration() { @@ -169,6 +173,10 @@ return add(refUpdatedListeners, refUpdatedListener); } + public Registration add(FileHistoryWebLink fileHistoryWebLink) { + return add(fileHistoryWebLinks, fileHistoryWebLink); + } + private <T> Registration add(DynamicSet<T> dynamicSet, T extension) { return add(dynamicSet, extension, "gerrit"); }
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/AccessIT.java b/javatests/com/google/gerrit/acceptance/rest/project/AccessIT.java index bb043c2..c6c26c9 100644 --- a/javatests/com/google/gerrit/acceptance/rest/project/AccessIT.java +++ b/javatests/com/google/gerrit/acceptance/rest/project/AccessIT.java
@@ -22,6 +22,8 @@ import static com.google.gerrit.truth.ConfigSubject.assertThat; import com.google.gerrit.acceptance.AbstractDaemonTest; +import com.google.gerrit.acceptance.ExtensionRegistry; +import com.google.gerrit.acceptance.ExtensionRegistry.Registration; import com.google.gerrit.acceptance.GitUtil; import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.testsuite.project.ProjectOperations; @@ -40,8 +42,6 @@ import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.common.GroupInfo; import com.google.gerrit.extensions.common.WebLinkInfo; -import com.google.gerrit.extensions.registration.DynamicSet; -import com.google.gerrit.extensions.registration.RegistrationHandle; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; @@ -72,9 +72,9 @@ private static final String LABEL_CODE_REVIEW = "Code-Review"; - @Inject private DynamicSet<FileHistoryWebLink> fileHistoryWebLinkDynamicSet; @Inject private ProjectOperations projectOperations; @Inject private RequestScopeOperations requestScopeOperations; + @Inject private ExtensionRegistry extensionRegistry; private Project.NameKey newProjectName; @@ -89,39 +89,39 @@ assertThat(inheritedName).isEqualTo(AllProjectsNameProvider.DEFAULT); } + private Registration newFileHistoryWebLink() { + FileHistoryWebLink weblink = + new FileHistoryWebLink() { + @Override + public WebLinkInfo getFileHistoryWebLink( + String projectName, String revision, String fileName) { + return new WebLinkInfo( + "name", "imageURL", "http://view/" + projectName + "/" + fileName); + } + }; + return extensionRegistry.newRegistration().add(weblink); + } + @Test public void webLink() throws Exception { - RegistrationHandle handle = - fileHistoryWebLinkDynamicSet.add( - "gerrit", - (projectName, revision, fileName) -> - new WebLinkInfo("name", "imageURL", "http://view/" + projectName + "/" + fileName)); - try { + try (Registration registration = newFileHistoryWebLink()) { ProjectAccessInfo info = pApi().access(); assertThat(info.configWebLinks).hasSize(1); assertThat(info.configWebLinks.get(0).url) .isEqualTo("http://view/" + newProjectName + "/project.config"); - } finally { - handle.remove(); } } @Test public void webLinkNoRefsMetaConfig() throws Exception { - RegistrationHandle handle = - fileHistoryWebLinkDynamicSet.add( - "gerrit", - (projectName, revision, fileName) -> - new WebLinkInfo("name", "imageURL", "http://view/" + projectName + "/" + fileName)); - try (Repository repo = repoManager.openRepository(newProjectName)) { + try (Repository repo = repoManager.openRepository(newProjectName); + Registration registration = newFileHistoryWebLink()) { RefUpdate u = repo.updateRef(RefNames.REFS_CONFIG); u.setForceUpdate(true); assertThat(u.delete()).isEqualTo(Result.FORCED); // This should not crash. pApi().access(); - } finally { - handle.remove(); } }