From f050188ecfa8cb7b2ff735d3fbd04e9ebe76ae2a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20Sch=C3=B6ne?= <rene.schoene@tu-dresden.de>
Date: Fri, 2 Sep 2022 14:48:15 +0200
Subject: [PATCH] Resolve "Make explicit dependency definitions deprecated"

---
 ragconnect.base/src/main/jastadd/Navigation.jrag          | 3 +++
 ragconnect.base/src/main/jastadd/Warnings.jrag            | 4 ++++
 .../src/main/resources/dependencyDefinition.mustache      | 4 ++++
 ragconnect.tests/build.gradle                             | 6 +++---
 .../01-input/warnings/SomeDependenciesAndInc.expected     | 1 +
 .../warnings/SomeDependenciesAndNoIncAndCacheAll.expected | 1 +
 .../ragconnect/tests/{Errors.java => ErrorsTest.java}     | 4 +---
 .../ragconnect/tests/{Warnings.java => WarningsTest.java} | 8 +++-----
 8 files changed, 20 insertions(+), 11 deletions(-)
 rename ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/{Errors.java => ErrorsTest.java} (95%)
 rename ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/{Warnings.java => WarningsTest.java} (94%)

diff --git a/ragconnect.base/src/main/jastadd/Navigation.jrag b/ragconnect.base/src/main/jastadd/Navigation.jrag
index 5288a9f..4119bcc 100644
--- a/ragconnect.base/src/main/jastadd/Navigation.jrag
+++ b/ragconnect.base/src/main/jastadd/Navigation.jrag
@@ -111,6 +111,9 @@ aspect RagConnectNavigation {
 //    return containedFile().getFileName();
   }
 
+  // --- isFirstInList ---
+  inh boolean DependencyDefinition.isFirstInList();
+  eq ConnectSpecification.getDependencyDefinition(int index).isFirstInList() = index == 0;
 
   //--- givenEndpointTargetList ---
   syn List<EndpointTarget> RagConnect.givenEndpointTargetList() {
diff --git a/ragconnect.base/src/main/jastadd/Warnings.jrag b/ragconnect.base/src/main/jastadd/Warnings.jrag
index 351fb19..8ef06c6 100644
--- a/ragconnect.base/src/main/jastadd/Warnings.jrag
+++ b/ragconnect.base/src/main/jastadd/Warnings.jrag
@@ -7,6 +7,10 @@ aspect Warnings {
     when ragconnect().configIncrementalOptionActive()
     to RagConnect.warnings();
 
+  DependencyDefinition contributes warning("Dependency definition are deprecated since 1.0.0!")
+    when this.isFirstInList()  // print warning only once for first dependency definition
+    to RagConnect.warnings();
+
   EndpointDefinition contributes warning("No dependency definitions are given, and incremental evaluation is disabled. No messages will be sent for this!")
     when getSend() && ragconnect().allDependencyDefinitionList().isEmpty() && !ragconnect().configIncrementalOptionActive()
     to RagConnect.warnings();
diff --git a/ragconnect.base/src/main/resources/dependencyDefinition.mustache b/ragconnect.base/src/main/resources/dependencyDefinition.mustache
index 8919350..7c2ac5a 100644
--- a/ragconnect.base/src/main/resources/dependencyDefinition.mustache
+++ b/ragconnect.base/src/main/resources/dependencyDefinition.mustache
@@ -1,3 +1,7 @@
+/**
+* @deprecated Manual dependency definitions are not fully tested any longer since 1.0.0, see <a href="https://jastadd.pages.st.inf.tu-dresden.de/ragconnect-dev/dsl/#dependency-definitions">https://jastadd.pages.st.inf.tu-dresden.de/ragconnect-dev/dsl/#dependency-definitions</a>
+*/
+@Deprecated(since = "1.0.0")
 public void {{targetParentTypeName}}.{{dependencyMethodName}}({{sourceParentTypeName}} source) {
   add{{internalRelationPrefix}}Source(source);
 }
diff --git a/ragconnect.tests/build.gradle b/ragconnect.tests/build.gradle
index 5068a66..0b5fc98 100644
--- a/ragconnect.tests/build.gradle
+++ b/ragconnect.tests/build.gradle
@@ -49,9 +49,9 @@ dependencies {
     implementation group: 'org.jastadd', name: 'jastadd2', version: '2.3.5-dresden-7'
     relast group: 'org.jastadd', name: 'relast', version: "0.3.0-137"
 
-    testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.4.0'
-    testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.4.0'
-    testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.12.1'
+    testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.9.0'
+    testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.9.0'
+    testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.23.1'
     testImplementation group: 'org.awaitility', name: 'awaitility', version: '4.1.1'
     testImplementation group: 'io.github.artsok', name: 'rerunner-jupiter', version: '2.1.6'
 
diff --git a/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndInc.expected b/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndInc.expected
index 15fab00..f1154cf 100644
--- a/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndInc.expected
+++ b/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndInc.expected
@@ -1 +1,2 @@
+TestSomeDependencies.connect Line 3, column 1: Dependency definition are deprecated since 1.0.0!
 TestSomeDependencies.connect Line 3, column 1: Dependency definition should not be used if incremental evaluation is enabled!
diff --git a/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndNoIncAndCacheAll.expected b/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndNoIncAndCacheAll.expected
index 732463c..e4d442f 100644
--- a/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndNoIncAndCacheAll.expected
+++ b/ragconnect.tests/src/test/01-input/warnings/SomeDependenciesAndNoIncAndCacheAll.expected
@@ -1 +1,2 @@
 TestSomeDependencies.connect Line 1, column 1: Incremental evaluation is disabled, but cache=all is set. This might lead to no messages sent!
+TestSomeDependencies.connect Line 3, column 1: Dependency definition are deprecated since 1.0.0!
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Errors.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ErrorsTest.java
similarity index 95%
rename from ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Errors.java
rename to ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ErrorsTest.java
index 9d4c730..4b3f573 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Errors.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/ErrorsTest.java
@@ -2,8 +2,6 @@ package org.jastadd.ragconnect.tests;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -22,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
  *
  * @author rschoene - Initial contribution
  */
-public class Errors extends RagConnectTest {
+public class ErrorsTest extends RagConnectTest {
 
   private static final String ERROR_DIRECTORY = "errors/";
   private static final String OUTPUT_DIRECTORY = TestUtils.OUTPUT_DIRECTORY_PREFIX + ERROR_DIRECTORY;
diff --git a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Warnings.java b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/WarningsTest.java
similarity index 94%
rename from ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Warnings.java
rename to ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/WarningsTest.java
index 121843c..0ce33be 100644
--- a/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/Warnings.java
+++ b/ragconnect.tests/src/test/java/org/jastadd/ragconnect/tests/WarningsTest.java
@@ -2,8 +2,6 @@ package org.jastadd.ragconnect.tests;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -21,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
  *
  * @author rschoene - Initial contribution
  */
-public class Warnings extends RagConnectTest {
+public class WarningsTest extends RagConnectTest {
 
   private static final String WARNING_DIRECTORY = "warnings/";
   private static final String OUTPUT_DIRECTORY = TestUtils.OUTPUT_DIRECTORY_PREFIX + WARNING_DIRECTORY;
@@ -86,8 +84,8 @@ public class Warnings extends RagConnectTest {
 
     out = out.substring(out.indexOf(startOfWarningsPattern) + startOfWarningsPattern.length());
 
-    TestUtils.assertLinesMatch(WARNING_DIRECTORY, expectedName, out);
+    logger.debug("ragconnect for " + expectedName + " returned:\n{}", out);
 
-    logger.info("ragconnect for " + expectedName + " returned:\n{}", out);
+    TestUtils.assertLinesMatch(WARNING_DIRECTORY, expectedName, out);
   }
 }
-- 
GitLab