Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
Make transitive starlark loads explicit
Format java files with google-java-format
Create a user-context if not propagated by Gerrit
Change-Id: I61240539c0a6a295147e8f11db55ed90aca66403
diff --git a/WORKSPACE b/WORKSPACE
index d22a85a..6089c79 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
load("//:bazlets.bzl", "load_bazlets")
load_bazlets(
- commit = "b084bd74743f4303971a2a057bcea4f3352ddf4e",
+ commit = "1d381f01c853e2c02ae35430a8e294e485635d62",
#local_path = "/home/<user>/projects/bazlets",
)
diff --git a/lib/prolog/prolog.bzl b/lib/prolog/prolog.bzl
index ae46601..5ba004b 100644
--- a/lib/prolog/prolog.bzl
+++ b/lib/prolog/prolog.bzl
@@ -1 +1,3 @@
-load("@com_googlesource_gerrit_bazlets//lib/prolog:prolog.bzl", "prolog_cafe_library")
+load("@com_googlesource_gerrit_bazlets//lib/prolog:prolog.bzl", _prolog_cafe_library = "prolog_cafe_library")
+
+prolog_cafe_library = _prolog_cafe_library
diff --git a/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
index 22e3db8..4a34958 100644
--- a/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
+++ b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
@@ -19,10 +19,12 @@
import static com.google.gerrit.extensions.client.DiffPreferencesInfo.Whitespace.IGNORE_NONE;
import com.google.common.collect.Sets;
+import com.google.gerrit.exceptions.StorageException;
import com.google.gerrit.extensions.annotations.Listen;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.ChangeApi;
import com.google.gerrit.extensions.api.changes.Changes;
+import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -30,12 +32,16 @@
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.patch.PatchList;
import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.patch.PatchListKey;
import com.google.gerrit.server.patch.PatchListNotAvailableException;
+import com.google.gerrit.server.util.ManualRequestContext;
+import com.google.gerrit.server.util.OneOffRequestContext;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import java.io.IOException;
import java.util.Set;
import org.eclipse.jgit.lib.ObjectId;
@@ -54,22 +60,58 @@
private final Accounts accounts;
private final ReviewerManager reviewerManager;
+ private final OneOffRequestContext oneOffReqCtx;
+
+ private Provider<CurrentUser> currentUserProvider;
+
@Inject
public GitRefListener(
GerritApi api,
PatchListCache patchListCache,
GitRepositoryManager repositoryManager,
Accounts accounts,
- ReviewerManager reviewerManager) {
+ ReviewerManager reviewerManager,
+ OneOffRequestContext oneOffReqCtx,
+ Provider<CurrentUser> currentUserProvider) {
this.api = api;
this.patchListCache = patchListCache;
this.repositoryManager = repositoryManager;
this.accounts = accounts;
this.reviewerManager = reviewerManager;
+ this.oneOffReqCtx = oneOffReqCtx;
+ this.currentUserProvider = currentUserProvider;
}
@Override
public void onGitReferenceUpdated(Event event) {
+ AccountInfo updaterAccountInfo = event.getUpdater();
+ CurrentUser currentUser = currentUserProvider.get();
+ if (currentUser.isIdentifiedUser()) {
+ handleGitReferenceUpdated(event);
+ } else if (updaterAccountInfo != null) {
+ handleGitReferenceUpdatedAsUser(event, new Account.Id(updaterAccountInfo._accountId));
+ } else {
+ handleGitReferenceUpdatedAsServer(event);
+ }
+ }
+
+ private void handleGitReferenceUpdatedAsUser(Event event, Account.Id updaterAccountId) {
+ try (ManualRequestContext ctx = oneOffReqCtx.openAs(updaterAccountId)) {
+ handleGitReferenceUpdated(event);
+ } catch (StorageException e) {
+ logger.warn("Unable to process event {} on project {}", event, event.getProjectName(), e);
+ }
+ }
+
+ private void handleGitReferenceUpdatedAsServer(Event event) {
+ try (ManualRequestContext ctx = oneOffReqCtx.open()) {
+ handleGitReferenceUpdated(event);
+ } catch (StorageException e) {
+ logger.warn("Unable to process event {} on project {}", event, event.getProjectName(), e);
+ }
+ }
+
+ private void handleGitReferenceUpdated(Event event) {
String projectName = event.getProjectName();
Repository repository;
try {
diff --git a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerIT.java b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerIT.java
index aa6db4f..24c07a3 100644
--- a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerIT.java
+++ b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerIT.java
@@ -21,7 +21,11 @@
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.gerrit.server.AnonymousUser;
+import com.google.gerrit.server.util.ManualRequestContext;
+import com.google.gerrit.server.util.ThreadLocalRequestContext;
import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
import org.eclipse.jgit.transport.ReceiveCommand.Type;
import org.junit.Test;
@@ -30,6 +34,13 @@
sysModule = "com.vmware.gerrit.owners.common.GitRefListenerIT$TestModule")
public class GitRefListenerIT extends LightweightPluginDaemonTest {
+ @Inject GitRefListenerTest gitRefListener;
+ @Inject ThreadLocalRequestContext requestContext;
+
+ String aRefChange = RefNames.REFS_CHANGES + "01/01/01";
+ String anOldObjectId = "anOldRef";
+ String aNewObjectId = "aNewRef";
+
public static class TestModule extends AbstractModule {
@Override
protected void configure() {
@@ -39,15 +50,14 @@
@Test
public void shouldNotProcessNoteDbOnlyRefs() {
- GitRefListenerTest gitRefListener = getPluginInstance(GitRefListenerTest.class);
-
- String aRefChange = RefNames.REFS_CHANGES + "01/01" + RefNames.META_SUFFIX;
- String anOldObjectId = "anOldRef";
- String aNewObjectId = "aNewRef";
-
ReferenceUpdatedEventTest refUpdatedEvent =
new ReferenceUpdatedEventTest(
- project, aRefChange, anOldObjectId, aNewObjectId, Type.CREATE);
+ project,
+ RefNames.REFS_CHANGES + "01/01" + RefNames.META_SUFFIX,
+ anOldObjectId,
+ aNewObjectId,
+ Type.CREATE,
+ admin.id());
gitRefListener.onGitReferenceUpdated(refUpdatedEvent);
assertEquals(0, gitRefListener.getProcessedEvents());
@@ -55,21 +65,31 @@
@Test
public void shouldProcessRefChanges() {
- GitRefListenerTest gitRefListener = getPluginInstance(GitRefListenerTest.class);
-
- String aRefChange = RefNames.REFS_CHANGES + "01/01/01";
- String anOldObjectId = "anOldRef";
- String aNewObjectId = "aNewRef";
-
- ReferenceUpdatedEventTest refUpdatedEvent =
- new ReferenceUpdatedEventTest(
- project, aRefChange, anOldObjectId, aNewObjectId, Type.CREATE);
-
- gitRefListener.onGitReferenceUpdated(refUpdatedEvent);
+ gitRefListener.onGitReferenceUpdated(newRefUpdateEvent());
assertEquals(1, gitRefListener.getProcessedEvents());
}
- private <T> T getPluginInstance(Class<T> clazz) {
- return plugin.getSysInjector().getInstance(clazz);
+ @Test
+ public void shouldRetrieveChangeFromAnonymousContext() throws Exception {
+ try (ManualRequestContext ctx = new ManualRequestContext(new AnonymousUser(), requestContext)) {
+ gitRefListener.onGitReferenceUpdated(newRefUpdateEvent());
+ assertEquals(1, gitRefListener.getProcessedEvents());
+ }
+ }
+
+ @Test
+ public void shouldRetrieveChangeFromAnonymousContextWithoutAccountId() throws Exception {
+ ReferenceUpdatedEventTest refUpdateWithoutAccountId =
+ new ReferenceUpdatedEventTest(
+ project, aRefChange, anOldObjectId, aNewObjectId, Type.CREATE, null);
+ try (ManualRequestContext ctx = new ManualRequestContext(new AnonymousUser(), requestContext)) {
+ gitRefListener.onGitReferenceUpdated(refUpdateWithoutAccountId);
+ assertEquals(1, gitRefListener.getProcessedEvents());
+ }
+ }
+
+ private ReferenceUpdatedEventTest newRefUpdateEvent() {
+ return new ReferenceUpdatedEventTest(
+ project, aRefChange, anOldObjectId, aNewObjectId, Type.CREATE, admin.id());
}
}
diff --git a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
index 1052349..e3d4be4 100644
--- a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
+++ b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
@@ -16,9 +16,12 @@
package com.vmware.gerrit.owners.common;
import com.google.gerrit.extensions.api.GerritApi;
+import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.patch.PatchListCache;
+import com.google.gerrit.server.util.OneOffRequestContext;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.googlesource.gerrit.owners.common.Accounts;
import com.googlesource.gerrit.owners.common.GitRefListener;
import com.googlesource.gerrit.owners.common.ReviewerManager;
@@ -31,12 +34,21 @@
@Inject
public GitRefListenerTest(
- GerritApi api,
- PatchListCache patchListCache,
- GitRepositoryManager repositoryManager,
- Accounts accounts,
- ReviewerManager reviewerManager) {
- super(api, patchListCache, repositoryManager, accounts, reviewerManager);
+ GerritApi api,
+ PatchListCache patchListCache,
+ GitRepositoryManager repositoryManager,
+ Accounts accounts,
+ ReviewerManager reviewerManager,
+ OneOffRequestContext oneOffReqCtx,
+ Provider<CurrentUser> currentUserProvider) {
+ super(
+ api,
+ patchListCache,
+ repositoryManager,
+ accounts,
+ reviewerManager,
+ oneOffReqCtx,
+ currentUserProvider);
}
@Override
diff --git a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/ReferenceUpdatedEventTest.java b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/ReferenceUpdatedEventTest.java
index 446a8bb..9946502 100644
--- a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/ReferenceUpdatedEventTest.java
+++ b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/ReferenceUpdatedEventTest.java
@@ -18,6 +18,8 @@
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
+import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.Account.Id;
import com.google.gerrit.reviewdb.client.Project;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.junit.Ignore;
@@ -30,18 +32,21 @@
private final String oldObjectId;
private final String newObjectId;
private final ReceiveCommand.Type type;
+ private final Id eventAccountId;
public ReferenceUpdatedEventTest(
Project.NameKey project,
String ref,
String oldObjectId,
String newObjectId,
- ReceiveCommand.Type type) {
+ ReceiveCommand.Type type,
+ Account.Id eventAccountId) {
this.projectName = project.get();
this.ref = ref;
this.oldObjectId = oldObjectId;
this.newObjectId = newObjectId;
this.type = type;
+ this.eventAccountId = eventAccountId;
}
@Override
@@ -81,7 +86,11 @@
@Override
public AccountInfo getUpdater() {
- return null;
+ if (eventAccountId == null) {
+ return null;
+ }
+
+ return new AccountInfo(eventAccountId.get());
}
@Override
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
index d5764f7..c921d01 100644
--- a/tools/bzl/classpath.bzl
+++ b/tools/bzl/classpath.bzl
@@ -1,4 +1,6 @@
load(
"@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- "classpath_collector",
+ _classpath_collector = "classpath_collector",
)
+
+classpath_collector = _classpath_collector
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
index 3af7e58..97307bd 100644
--- a/tools/bzl/junit.bzl
+++ b/tools/bzl/junit.bzl
@@ -1,4 +1,6 @@
load(
"@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- "junit_tests",
+ _junit_tests = "junit_tests",
)
+
+junit_tests = _junit_tests
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
index 43393b9..ce4730f 100644
--- a/tools/bzl/maven_jar.bzl
+++ b/tools/bzl/maven_jar.bzl
@@ -1 +1,4 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "GERRIT", "maven_jar")
+load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _GERRIT = "GERRIT", _maven_jar = "maven_jar")
+
+GERRIT = _GERRIT
+maven_jar = _maven_jar
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
index d21bdf4..a271493 100644
--- a/tools/bzl/plugin.bzl
+++ b/tools/bzl/plugin.bzl
@@ -1,7 +1,12 @@
load(
"@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- "PLUGIN_DEPS",
- "PLUGIN_DEPS_NEVERLINK",
- "PLUGIN_TEST_DEPS",
- "gerrit_plugin",
+ _gerrit_plugin = "gerrit_plugin",
+ _plugin_deps = "PLUGIN_DEPS",
+ _plugin_deps_neverlink = "PLUGIN_DEPS_NEVERLINK",
+ _plugin_test_deps = "PLUGIN_TEST_DEPS",
)
+
+gerrit_plugin = _gerrit_plugin
+PLUGIN_DEPS = _plugin_deps
+PLUGIN_DEPS_NEVERLINK = _plugin_deps_neverlink
+PLUGIN_TEST_DEPS = _plugin_test_deps
diff --git a/tools/genrule2.bzl b/tools/genrule2.bzl
index de66f32..61c4e18 100644
--- a/tools/genrule2.bzl
+++ b/tools/genrule2.bzl
@@ -1 +1,3 @@
-load("@com_googlesource_gerrit_bazlets//tools:genrule2.bzl", "genrule2")
+load("@com_googlesource_gerrit_bazlets//tools:genrule2.bzl", _genrule2 = "genrule2")
+
+genrule2 = _genrule2