From c8d9962fea2adf85fc7a87c0f789df1231a5a3d3 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Thu, 2 Jul 2020 10:13:47 +0200 Subject: [PATCH] Add user and password to mqtt settings. --- eraser-base/src/main/jastadd/eraser.parser | 2 ++ eraser-base/src/main/jastadd/mqtt.jrag | 2 +- eraser-base/src/main/jastadd/mqtt.relast | 2 +- .../inf/st/eraser/jastadd/model/MQTTSender.java | 15 +++++++++++++-- .../st/eraser/jastadd/model/MQTTSenderImpl.java | 8 +++++++- .../st/eraser/jastadd/model/MQTTSenderStub.java | 2 +- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/eraser-base/src/main/jastadd/eraser.parser b/eraser-base/src/main/jastadd/eraser.parser index 0cc98445..5c275fa8 100644 --- a/eraser-base/src/main/jastadd/eraser.parser +++ b/eraser-base/src/main/jastadd/eraser.parser @@ -227,6 +227,8 @@ MqttRoot mqtt_root_body = INCOMING EQUALS TEXT.n mqtt_root_body.mrb {: mrb.setIncomingPrefix(n); return mrb; :} | OUTGOING EQUALS TEXT.n mqtt_root_body.mrb {: mrb.setOutgoingPrefix(n); return mrb; :} | HOST EQUALS TEXT.n mqtt_root_body.mrb {: mrb.setHostByName(n); return mrb; :} + | USER EQUALS TEXT.n mqtt_root_body.mrb {: mrb.setUser(n); return mrb; :} + | PASSWORD EQUALS TEXT.n mqtt_root_body.mrb {: mrb.setPassword(n); return mrb; :} | {: return new MqttRoot(); :} ; diff --git a/eraser-base/src/main/jastadd/mqtt.jrag b/eraser-base/src/main/jastadd/mqtt.jrag index 2d3f6fce..93e11442 100644 --- a/eraser-base/src/main/jastadd/mqtt.jrag +++ b/eraser-base/src/main/jastadd/mqtt.jrag @@ -48,7 +48,7 @@ aspect MQTT { } else { result = new MQTTSenderStub(); } - return result.setHost(getHost()); + return result.setHost(getHost(), getUser(), getPassword()); } //--- getMqttRoot --- diff --git a/eraser-base/src/main/jastadd/mqtt.relast b/eraser-base/src/main/jastadd/mqtt.relast index cf477ff7..84514940 100644 --- a/eraser-base/src/main/jastadd/mqtt.relast +++ b/eraser-base/src/main/jastadd/mqtt.relast @@ -1,4 +1,4 @@ // ---------------- MQTT ------------------------------ -MqttRoot ::= Topic:MqttTopic* <IncomingPrefix:String> <OutgoingPrefix:String> [Host:ExternalHost] ; +MqttRoot ::= Topic:MqttTopic* <IncomingPrefix:String> <OutgoingPrefix:String> <User:String> <Password:String> [Host:ExternalHost] ; MqttTopic ::= <TopicString:String> ; rel Item.Topic? <-> MqttTopic.Item* ; diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSender.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSender.java index 0f26efbe..5a8d3bd9 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSender.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSender.java @@ -12,10 +12,21 @@ import java.util.concurrent.TimeUnit; public interface MQTTSender extends AutoCloseable { /** - * Sets the host running the MQTT broker. + * Sets the host running the MQTT broker (no username/password set). * @param host host name (IP address or domain name) and port */ - MQTTSender setHost(ExternalHost host); + default MQTTSender setHost(ExternalHost host) { + return setHost(host, null, null); + } + + /** + * Sets the host, username and password running the MQTT broker. + * @param host host name (IP address or domain name) and port + * @param username username for authentication + * @param password password for authentication + */ + MQTTSender setHost(ExternalHost host, String username, String password); + /** * Set the timeout used for connecting and disconnecting. diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderImpl.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderImpl.java index 496d2a1c..a181424f 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderImpl.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderImpl.java @@ -29,11 +29,17 @@ public class MQTTSenderImpl implements MQTTSender { private TimeUnit publishTimeoutUnit; @Override - public MQTTSender setHost(ExternalHost host) { + public MQTTSender setHost(ExternalHost host, String username, String password) { /* The host running the MQTT broker. */ URI hostUri = URI.create("tcp://" + host.getHostName() + ":" + host.getPort()); logger.debug("Host is {}", hostUri); MQTT mqtt = new MQTT(); + if (username != null && !username.isEmpty()) { + mqtt.setUserName(username); + } + if (password != null && !password.isEmpty()) { + mqtt.setPassword(password); + } mqtt.setHost(hostUri); connection = mqtt.futureConnection(); setConnectTimeout(2, TimeUnit.SECONDS); diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderStub.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderStub.java index 2673e606..745bfcc3 100644 --- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderStub.java +++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/jastadd/model/MQTTSenderStub.java @@ -20,7 +20,7 @@ public class MQTTSenderStub implements MQTTSender { private Logger logger = LogManager.getLogger(MQTTSenderStub.class); private PublishCallback callback; - public MQTTSender setHost(ExternalHost host) { + public MQTTSender setHost(ExternalHost host, String username, String password) { return this; } -- GitLab