in src/main/java/com/googlesource/gerrit/plugins/rabbitmq/worker/UserEventWorker.java [69:115]
public void addPublisher(
final String pluginName, final Publisher publisher, final String userName) {
workQueue
.getDefaultQueue()
.submit(
new Runnable() {
@Override
public void run() {
RequestContext old =
threadLocalRequestContext.setContext(
new RequestContext() {
@Override
public CurrentUser getUser() {
return pluginUser;
}
});
try {
final IdentifiedUser user = accountResolver.resolve(userName).asUniqueUser();
RegistrationHandle registration =
eventListeners.add(
pluginName,
new UserScopedEventListener() {
@Override
public void onEvent(Event event) {
publisher.getEventListener().onEvent(event);
}
@Override
public CurrentUser getUser() {
return user;
}
});
eventListenerRegistrations.put(publisher, registration);
logger.atInfo().log("Listen events as : %s", userName);
} catch (UnresolvableAccountException uae) {
logger.atSevere().withCause(uae).log(
"Cannot find account for listenAs: %s", userName);
} catch (ConfigInvalidException | IOException e) {
logger.atSevere().withCause(e).log("Could not query database for listenAs");
} finally {
threadLocalRequestContext.setContext(old);
}
}
});
}