Merge branch stable-2.11 into stable-2.12

6dce1d7 Allow to specify amqp passwords in etc/secure.config
3f65399 Build with API version 2.11.8
5558190 Organize imports
3ed04fb Build with API version 2.11.7

Change-Id: I90b0dcadd9dea3cae356a295ca637c8974ef3ba2
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
index 3ffcc12..c26685b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
@@ -25,9 +25,9 @@
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Gerrit;
 import com.googlesource.gerrit.plugins.rabbitmq.message.Publisher;
 import com.googlesource.gerrit.plugins.rabbitmq.message.PublisherFactory;
+import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultEventWorker;
 import com.googlesource.gerrit.plugins.rabbitmq.worker.EventWorker;
 import com.googlesource.gerrit.plugins.rabbitmq.worker.EventWorkerFactory;
-import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultEventWorker;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index 9d658da..c07fcdc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -35,9 +35,9 @@
 import com.googlesource.gerrit.plugins.rabbitmq.message.PublisherFactory;
 import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactory;
 import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactoryProvider;
+import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultEventWorker;
 import com.googlesource.gerrit.plugins.rabbitmq.worker.EventWorker;
 import com.googlesource.gerrit.plugins.rabbitmq.worker.EventWorkerFactory;
-import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultEventWorker;
 import com.googlesource.gerrit.plugins.rabbitmq.worker.UserEventWorker;
 
 class Module extends AbstractModule {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
index fd2264f..5d1c553 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
@@ -15,6 +15,7 @@
 package com.googlesource.gerrit.plugins.rabbitmq.config;
 
 import com.google.gerrit.common.TimeUtil;
+
 import com.googlesource.gerrit.plugins.rabbitmq.annotation.MessageHeader;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Message;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Section;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
index 5ad4a49..b400b76 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
@@ -24,6 +24,7 @@
 import org.eclipse.jgit.lib.Config;
 
 public class Gerrit implements Section {
+  private Config gerritConfig;
 
   @Default
   @MessageHeader("gerrit-name")
@@ -50,10 +51,15 @@
   @Default
   public String listenAs;
 
+  public String getAMQPUserPassword(String userName) {
+    return gerritConfig.getString("AMQP", userName, "password");
+  }
+
   @Inject
   public Gerrit(final @GerritServerConfig Config config) {
     this.canonicalWebUrl = config.getString("gerrit", null, "canonicalWebUrl");
     this.version = Version.getVersion();
+    this.gerritConfig = config;
   }
 
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
index 201f0ac..6c5f450 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
@@ -19,6 +19,7 @@
 import com.google.gson.Gson;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
+
 import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
 import com.googlesource.gerrit.plugins.rabbitmq.session.Session;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
index 1f9b7e3..6afec87 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
@@ -17,6 +17,7 @@
 import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.AMQP;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Exchange;
+import com.googlesource.gerrit.plugins.rabbitmq.config.section.Gerrit;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Message;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
 import com.googlesource.gerrit.plugins.rabbitmq.session.Session;
@@ -148,7 +149,11 @@
         if (StringUtils.isNotEmpty(amqp.username)) {
           factory.setUsername(amqp.username);
         }
-        if (StringUtils.isNotEmpty(amqp.password)) {
+        Gerrit gerrit = properties.getSection(Gerrit.class);
+        String securePassword = gerrit.getAMQPUserPassword(amqp.username);
+        if (StringUtils.isNotEmpty(securePassword)) {
+          factory.setPassword(securePassword);
+        } else if (StringUtils.isNotEmpty(amqp.password)) {
           factory.setPassword(amqp.password);
         }
         connection = factory.newConnection();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/worker/DefaultEventWorker.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/worker/DefaultEventWorker.java
index 2d2e5ba..45e0e97 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/worker/DefaultEventWorker.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/worker/DefaultEventWorker.java
@@ -17,6 +17,7 @@
 import com.google.gerrit.common.EventListener;
 import com.google.gerrit.server.events.Event;
 import com.google.inject.Singleton;
+
 import com.googlesource.gerrit.plugins.rabbitmq.message.Publisher;
 
 import org.slf4j.Logger;
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index cda6fb5..f54918f 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -13,6 +13,18 @@
 If `rabbitmq.config` exists in `$site_path/data/rabbitmq`, it is loaded at first.
 It means that this is default for all config files.
 
+
+Secure.config
+---------------------
+
+If amqp.<username>.password is specified in `$site_path/etc/secure.config`. This
+password is used when trying to connect to amqp with username = <username>.
+
+```
+  [amqp "guest"]
+    password = guest
+```
+
 File format
 ---------------------