diff --git a/eraser-base/src/main/jastadd/eraser.parser b/eraser-base/src/main/jastadd/eraser.parser index 0cc98445f2d2ad28c4288ed20435c5e1dea6acc4..5c275fa8c16d8a694608581b08640ae8a9db5451 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 2d3f6fceefc39d47b1fae782aa4d2f2fbba94b88..93e11442e9f277455b8b2a62e32375fd091c94e8 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 cf477ff72e303415e47f42c939afe26cdfc4ed54..845149403b3576e7503f59eef2a4e59ca1411485 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 0f26efbec7f853e183ae4999468ee47e9542d542..5a8d3bd9788728ee9b746347bb8da5da66e5c67b 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 496d2a1c317d067b64f1823ff57b637ea307719c..a181424f24826736fe4b3730ae4bc6390a24be7f 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 2673e60679a5749405c6e8b3fcaccdda4763750b..745bfcc3c97d485da1b9f3ac3df3bb2a800e47ff 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; }