public void addPublisher()

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);
                }
              }
            });
  }