From c6cc349ca4e4e6dba4348d5196fd362e49fd42ce Mon Sep 17 00:00:00 2001
From: Manuel Krombholz <manuel_krofficial@online.de>
Date: Mon, 30 Aug 2021 17:10:23 +0200
Subject: [PATCH] Corrected ExternalHost behavior

---
 eraser-base/src/main/jastadd/ExternalHost.jrag | 11 +++++++++++
 eraser-base/src/main/jastadd/Util.jrag         | 12 +++---------
 eraser-base/src/main/jastadd/eraser.parser     |  2 +-
 3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/eraser-base/src/main/jastadd/ExternalHost.jrag b/eraser-base/src/main/jastadd/ExternalHost.jrag
index 892a7dfb..2b8e5a0d 100644
--- a/eraser-base/src/main/jastadd/ExternalHost.jrag
+++ b/eraser-base/src/main/jastadd/ExternalHost.jrag
@@ -9,4 +9,15 @@ aspect ExternalHost {
         }
         return this;
     }
+    public ExternalHost ExternalHost.setHostFromAddress(String line) {
+        String host = line;
+        if (line.contains(":")) {
+            String[] parts = line.split(":");
+            host = parts[0];
+            this.setPort(Integer.parseInt(parts[1]));
+        }
+        setHostName(host);
+
+        return this;
+    }
 }
\ No newline at end of file
diff --git a/eraser-base/src/main/jastadd/Util.jrag b/eraser-base/src/main/jastadd/Util.jrag
index 5dec6c93..b0d5bf09 100644
--- a/eraser-base/src/main/jastadd/Util.jrag
+++ b/eraser-base/src/main/jastadd/Util.jrag
@@ -11,16 +11,10 @@ aspect Util {
 
 
   public static ExternalHost ExternalHost.of(String hostName, int defaultPort, String username, String password) {
-    String host = hostName;
-    int port = defaultPort;
-    if (hostName.contains(":")) {
-      String[] parts = hostName.split(":");
-      host = parts[0];
-      port = Integer.parseInt(parts[1]);
-    }
     ExternalHost eh = new ExternalHost();
-    eh.setHostName(host);
-    eh.setPort(port);
+    eh.setPort(defaultPort);
+    eh.setHostFromAddress(hostName);
+
     if (username!=null)
       eh.setUserName(username);
     if (password!=null)
diff --git a/eraser-base/src/main/jastadd/eraser.parser b/eraser-base/src/main/jastadd/eraser.parser
index 456027b1..e4b4eedc 100644
--- a/eraser-base/src/main/jastadd/eraser.parser
+++ b/eraser-base/src/main/jastadd/eraser.parser
@@ -326,7 +326,7 @@ MqttRoot mqtt_root =
 MqttRoot mqtt_root_body =
      INCOMING EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.setIncomingPrefix(ensureTrailingSlash(n)); return mrb; :}
   |  OUTGOING EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.setOutgoingPrefix(ensureTrailingSlash(n)); return mrb; :}
-  |  HOST EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setHostName(n); return mrb; :}
+  |  HOST EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setHostFromAddress(n); return mrb; :}
   |  USER EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setUserName(n); return mrb; :}
   |  PASSWORD EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.getHost().setPassword(n); return mrb; :}
   |                                                     {: return new MqttRoot(); :}
-- 
GitLab