From 552abf7bc2331cf458d90fb71282bb4840656d11 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Wed, 19 Jan 2022 16:10:56 +0100
Subject: [PATCH] working on forwarding using implicit NTAs

- fix regression errors
---
 .../src/main/jastadd/Intermediate.jadd        |  8 +++++++-
 .../ragconnect/tests/ForwardingTest.java      |  1 -
 .../singleList/AbstractSingleListTest.java    | 19 +++++++++----------
 .../singleList/SingleListIncrementalTest.java | 17 +++++------------
 .../singleList/SingleListManualTest.java      | 17 +++++------------
 5 files changed, 26 insertions(+), 36 deletions(-)

diff --git a/ragconnect.base/src/main/jastadd/Intermediate.jadd b/ragconnect.base/src/main/jastadd/Intermediate.jadd
index 438ce31..1fdb8c8 100644
--- a/ragconnect.base/src/main/jastadd/Intermediate.jadd
+++ b/ragconnect.base/src/main/jastadd/Intermediate.jadd
@@ -5,6 +5,10 @@ Design considerations
 */
 aspect NewStuff {
   // unsorted
+  inh boolean EndpointDefinition.isImplied();
+  eq ConnectSpecification.getEndpointDefinition().isImplied() = false;
+  eq EndpointTarget.impliedEndpointDefinitions().isImplied() = true;
+
   syn String TypeComponent.disconnectMethodName() {
     List<TypeEndpointTarget> typeEndpointTargets = getTypeEndpointTargets();
     if (typeEndpointTargets.isEmpty()) {
@@ -414,7 +418,9 @@ aspect MustacheReceiveAndSendAndHandleUri {
 
   private String TypeEndpointTarget.getterMethodeNameHelper(boolean useForwarding) {
     return (useForwarding && needForwardingNTA() ? forwardingNTA_Name() :
-            "get" + getType().getName() + (typeIsList() && (!containingEndpointDefinition().getIndexBasedListAccess() || containingEndpointDefinition().getWithAdd()) ? "List" : "") + (typeIsOpt() ? "Opt" : "") + "NoTransform");
+            "get" + getType().getName() + (typeIsList() && (!containingEndpointDefinition().getIndexBasedListAccess() ||
+                    containingEndpointDefinition().getWithAdd()) ? "List" : "") + (typeIsOpt() ? "Opt" : "")
+                    + (needForwardingNTA() ? "NoTransform" : ""));
   }
 
   eq ContextFreeTypeEndpointTarget.getterMethodName() = null;
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ForwardingTest.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ForwardingTest.java
index f52459e..64430eb 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ForwardingTest.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ForwardingTest.java
@@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.*;
  * @author rschoene - Initial contribution
  */
 @Tag("Incremental")
-@Tag("New")
 public class ForwardingTest extends AbstractMqttTest {
 
   private static final String TOPIC_A_SINGLE = "a-single";
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/AbstractSingleListTest.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/AbstractSingleListTest.java
index 3301877..832ba76 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/AbstractSingleListTest.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/AbstractSingleListTest.java
@@ -1,6 +1,5 @@
 package org.jastadd.ragconnect.tests.singleList;
 
-import org.awaitility.Awaitility;
 import org.jastadd.ragconnect.tests.AbstractMqttTest;
 import org.jastadd.ragconnect.tests.TestUtils;
 import org.jastadd.ragconnect.tests.TestUtils.IntList;
@@ -10,11 +9,7 @@ import singleList.ast.MqttHandler;
 
 import java.io.IOException;
 import java.nio.file.Paths;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Function;
@@ -34,6 +29,8 @@ import static org.junit.jupiter.api.Assertions.*;
 @Tag("SingleList")
 public abstract class AbstractSingleListTest extends AbstractMqttTest {
 
+  protected MqttHandler handler;
+
   public interface TestWrapperJastAddList<T> extends Iterable<T> {
     int getNumChild();
   }
@@ -144,10 +141,13 @@ public abstract class AbstractSingleListTest extends AbstractMqttTest {
     assertTrue(receiverRoot.connectUsingWildcardWithAddA(mqttUri(TOPIC_A_WILDCARD)));
 
     // send: explicit topics, wait between connections to ensure correct arrival at receiver
-    MqttHandler checkArrivalHandler = new MqttHandler().dontSendWelcomeMessage().setHost(TestUtils.getMqttHost());
-    ReceiverData checkArrivalData = new ReceiverData();
-    checkArrivalHandler.waitUntilReady(2, TimeUnit.SECONDS);
-    checkArrivalHandler.newConnection("#", bytes -> checkArrivalData.valueSentSinceLastCheck.set(true));
+    handler = new MqttHandler().dontSendWelcomeMessage().setHost(TestUtils.getMqttHost());
+    data = new ReceiverData();
+    handler.waitUntilReady(2, TimeUnit.SECONDS);
+    handler.newConnection("#", bytes -> {
+      data.valueSentSinceLastCheck.set(true);
+      data.numberOfElements += 1;
+    });
 
     assertTrue(senderRoot.connectA4(mqttUri(TOPIC_A_4), isWriteCurrentValue()));
     waitForValue();
@@ -163,7 +163,6 @@ public abstract class AbstractSingleListTest extends AbstractMqttTest {
 
     assertTrue(senderRoot.connectInOutput(mqttUri(TOPIC_A_5_INOUT), isWriteCurrentValue()));
     // no need to wait here, because first "checkTree" will wait anyway
-    checkArrivalHandler.close();
   }
 
   private void waitForValue() {
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListIncrementalTest.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListIncrementalTest.java
index 54bbf67..71280af 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListIncrementalTest.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListIncrementalTest.java
@@ -1,14 +1,14 @@
 package org.jastadd.ragconnect.tests.singleList;
 
-import org.jastadd.ragconnect.tests.TestUtils;
 import org.junit.jupiter.api.Tag;
-import singleListInc.ast.*;
+import singleListInc.ast.A;
+import singleListInc.ast.ReceiverRoot;
+import singleListInc.ast.Root;
+import singleListInc.ast.SenderRoot;
 
-import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test case "single list incremental".
@@ -19,7 +19,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class SingleListIncrementalTest extends AbstractSingleListTest {
 
   private Root model;
-  private MqttHandler handler;
 
   SingleListIncrementalTest() {
     super("singleListInc");
@@ -43,16 +42,10 @@ public class SingleListIncrementalTest extends AbstractSingleListTest {
   }
 
   @Override
-  protected void setupReceiverAndConnectPart() throws IOException {
+  protected void setupReceiverAndConnectPart() {
     model.ragconnectSetupMqttWaitUntilReady(2, TimeUnit.SECONDS);
 
-    handler = new MqttHandler().dontSendWelcomeMessage().setHost(TestUtils.getMqttHost());
-    assertTrue(handler.waitUntilReady(2, TimeUnit.SECONDS));
-
     // no dependencies
-
-    data = new ReceiverData();
-    handler.newConnection(TOPIC_A_WILDCARD, bytes -> data.numberOfElements += 1);
   }
 
   @Override
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListManualTest.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListManualTest.java
index 9a8bf0a..3944322 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListManualTest.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/singleList/SingleListManualTest.java
@@ -1,13 +1,13 @@
 package org.jastadd.ragconnect.tests.singleList;
 
-import org.jastadd.ragconnect.tests.TestUtils;
-import singleList.ast.*;
+import singleList.ast.A;
+import singleList.ast.ReceiverRoot;
+import singleList.ast.Root;
+import singleList.ast.SenderRoot;
 
-import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test case "single list manual".
@@ -17,7 +17,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class SingleListManualTest extends AbstractSingleListTest {
 
   private Root model;
-  private MqttHandler handler;
 
   SingleListManualTest() {
     super("singleList");
@@ -41,20 +40,14 @@ public class SingleListManualTest extends AbstractSingleListTest {
   }
 
   @Override
-  protected void setupReceiverAndConnectPart() throws IOException {
+  protected void setupReceiverAndConnectPart() {
     model.ragconnectSetupMqttWaitUntilReady(2, TimeUnit.SECONDS);
 
-    handler = new MqttHandler().dontSendWelcomeMessage().setHost(TestUtils.getMqttHost());
-    assertTrue(handler.waitUntilReady(2, TimeUnit.SECONDS));
-
     // add dependencies
     ((SenderRoot) senderRoot).addInputDependencyToA1((SenderRoot) senderRoot);
     ((SenderRoot) senderRoot).addInputDependencyToA2((SenderRoot) senderRoot);
     ((SenderRoot) senderRoot).addInputDependencyToA3((SenderRoot) senderRoot);
     ((SenderRoot) senderRoot).addInputDependencyToA4((SenderRoot) senderRoot);
-
-    data = new ReceiverData();
-    handler.newConnection(TOPIC_A_WILDCARD, bytes -> data.numberOfElements += 1);
   }
 
   @Override
-- 
GitLab