From 93fbab4aed79b57ceea572c91d1eaa4e60220178 Mon Sep 17 00:00:00 2001
From: Manuel Krombholz <s3866577@msx.tu-dresden.de>
Date: Wed, 26 May 2021 01:59:53 +0200
Subject: [PATCH] Added mqtt username and password for receiver

---
 .../inf/st/eraser/openhab2/mqtt/MQTTUpdater.java     |  4 +++-
 .../tudresden/inf/st/eraser/util/MqttReceiver.java   | 12 ++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java
index 64711484..79d19c6d 100644
--- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java
+++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/mqtt/MQTTUpdater.java
@@ -40,7 +40,9 @@ public class MQTTUpdater implements AutoCloseable {
   public void setRoot(Root root) {
     ExternalHost host = root.getMqttRoot().getHost();
     delegatee.setHost(host.getHostName(), host.getPort());
-    delegatee.setOnMessage((topicString, message) ->
+    delegatee.setUsername(root.getMqttRoot().getUser());
+    delegatee.setPassword(root.getMqttRoot().getPassword());
+    delegatee.setOnMessage((topicString, message)->
         root.getMqttRoot().resolveTopic(topicString).ifPresent(topic ->
             topic.getItems().forEach(
                 item -> itemUpdate(item, message))));
diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java
index 75bbfe3c..4c448c27 100644
--- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java
+++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/util/MqttReceiver.java
@@ -28,6 +28,8 @@ public class MqttReceiver implements AutoCloseable {
 
   /** The host running the MQTT broker. */
   private URI host;
+  private String username;
+  private String password;
   /** The connection to the MQTT broker. */
   private CallbackConnection connection;
   /** Whether we are subscribed to the topics yet */
@@ -54,6 +56,14 @@ public class MqttReceiver implements AutoCloseable {
     logger.debug("Host is {}", this.host);
   }
 
+  public void setUsername(String username) {
+    this.username = username;
+  }
+
+  public void setPassword(String password) {
+    this.password = password;
+  }
+
   public void setOnMessage(BiConsumer<String, String> callback) {
     this.onMessageCallback = callback;
   }
@@ -101,6 +111,8 @@ public class MqttReceiver implements AutoCloseable {
     Objects.requireNonNull(this.host, "Host need to be set!");
     MQTT mqtt = new MQTT();
     mqtt.setHost(this.host);
+    mqtt.setPassword(this.password);
+    mqtt.setUserName(this.username);
     connection = mqtt.callbackConnection();
     AtomicReference<Throwable> error = new AtomicReference<>();
     connection.listener(new ExtendedListener() {
-- 
GitLab