diff --git a/buildSrc/src/main/groovy/ros3rag.java-application-conventions.gradle b/buildSrc/src/main/groovy/ros3rag.java-application-conventions.gradle index ca778a499ace2bc60db88434e4f64745d05b4717..2242c13850ef41b8c202298aeab8ee06fded6cde 100644 --- a/buildSrc/src/main/groovy/ros3rag.java-application-conventions.gradle +++ b/buildSrc/src/main/groovy/ros3rag.java-application-conventions.gradle @@ -2,7 +2,3 @@ plugins { id 'ros3rag.java-common-conventions' id 'application' } - -run { - standardInput = System.in -} diff --git a/buildSrc/src/main/groovy/ros3rag.java-ragconnect-conventions.gradle b/buildSrc/src/main/groovy/ros3rag.java-ragconnect-conventions.gradle index e653684f56697e4bb881b8ddcc44c94f127179b5..ad1b6a77d40560af9619a15e0791845b4a506306 100644 --- a/buildSrc/src/main/groovy/ros3rag.java-ragconnect-conventions.gradle +++ b/buildSrc/src/main/groovy/ros3rag.java-ragconnect-conventions.gradle @@ -3,17 +3,19 @@ plugins { } configurations { - baseRuntimeClasspath - ragconnectClasspath - grammar2umlClasspath + ragconnect + grammar2uml + relast } dependencies { api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' - grammar2umlClasspath group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.1.1' + grammar2uml group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.2.3' - ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.3.1' + relast group: 'org.jastadd', name: 'relast', version: "0.4.0-143" + ragconnect group: 'de.tudresden.inf.st', name: 'ragconnect', version: '1.0.0-alpha-198' // implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5' // implementation fileTree(include: ['dumpAstWithPlantuml-0.3.5.jar'], dir: '../libs') } + diff --git a/gradle.properties b/gradle.properties index 22f6318499e1f85d428c501b08679b7257d9a688..45378cc37ed4a3ac3643f8748530f9082394c660 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,8 @@ -jackson_version = 2.12.3 -jupiter_version = 5.8.0-M1 -assertj_version = 3.19.0 -log4j_version = 2.14.1 +jackson_version = 2.13.2.2 +jackson_yaml_version = 2.13.2 +jupiter_version = 5.8.2 +assertj_version = 3.22.0 +log4j_version = 2.17.2 protobuf_version = 4.0.0-rc-2 -protobuf_plugin_version = 0.8.16 -jastadd_gradle_version = 1.13.3 +protobuf_plugin_version = 0.8.18 +jastadd_gradle_version = 1.14.5 diff --git a/ros3rag.common/build.gradle b/ros3rag.common/build.gradle index 25432f5ea77cf25415c59d185360e67eac23740e..d3efb0c5ed12f6d9609eb725358a3f3ebca5c707 100644 --- a/ros3rag.common/build.gradle +++ b/ros3rag.common/build.gradle @@ -12,7 +12,7 @@ plugins { } dependencies { - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jackson_version}" + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jackson_yaml_version}" api group: 'com.google.protobuf', name: 'protobuf-java', version: "${protobuf_version}" api group: 'com.google.protobuf', name: 'protobuf-java-util', version: "${protobuf_version}" api group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1' diff --git a/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java b/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java index d9bb9027947046c3ab12603a1ee6164bdb834cb9..dfb03f3f94b8c06192e181b52f23713d597b8406 100644 --- a/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java +++ b/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java @@ -68,7 +68,6 @@ public abstract class SharedMainParts<MqttHandler extends SharedMainParts.MqttHa mainHandler.setHost(config.mqttHost); mainHandler.waitUntilReady(2, TimeUnit.SECONDS); CountDownLatch exitCondition = new CountDownLatch(1); - startCondition = new CountDownLatch(1); mainHandler.newConnection(TOPIC_EXIT, bytes -> exitCondition.countDown()); mainHandler.newConnection(TOPIC_MODEL, bytes -> logStatus(new String(bytes))); mainHandler.newConnection(TOPIC_REWIND, bytes -> @@ -128,7 +127,7 @@ public abstract class SharedMainParts<MqttHandler extends SharedMainParts.MqttHa startCondition.countDown(); break; default: - System.err.println("Unknown command: " + command); + System.err.println("Unknown coordinator command: " + command); } } @@ -147,10 +146,11 @@ public abstract class SharedMainParts<MqttHandler extends SharedMainParts.MqttHa model.ragconnectSetupMqttWaitUntilReady(2, TimeUnit.SECONDS); if (config.useCoordinator()) { + startCondition = new CountDownLatch(1); mainHandler.publish(joinTopics(config.coordinatorMqttTopicPrefix, TOPIC_SUFFIX_COORDINATOR_STATUS), "up".getBytes(StandardCharsets.UTF_8)); + startCondition.await(); } - startCondition.await(); connectEndpoints(); diff --git a/ros3rag.common/src/main/resources/tasks.gradle b/ros3rag.common/src/main/resources/tasks.gradle index 1a8119d2cfa1494004dcdd4c0badaa202f0238d9..8016213bdb698da3a2458d150e84f6574ec4f03e 100644 --- a/ros3rag.common/src/main/resources/tasks.gradle +++ b/ros3rag.common/src/main/resources/tasks.gradle @@ -1,9 +1,8 @@ dependencies { -// jastadd2 "org.jastadd:jastadd:2.3.5" - jastadd2 fileTree(include: ['jastadd2.jar'], dir: '../libs') + jastadd2 "org.jastadd:jastadd2:2.3.5-dresden-5" +// jastadd2 fileTree(include: ['jastadd2.jar'], dir: '../libs') api group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15' - } sourceCompatibility = 11 @@ -14,7 +13,7 @@ targetCompatibility = 11 task ragConnect(type: JavaExec) { group = 'Build' main = 'org.jastadd.ragconnect.compiler.Compiler' - classpath = configurations.ragconnectClasspath + classpath = configurations.ragconnect args([ '--o=src/gen/jastadd', @@ -26,6 +25,7 @@ task ragConnect(type: JavaExec) { '--logWrites', // '--verbose', '--rootNode=' + project.ext.ragConnectRootNode, + '--List=JastAddList', '--experimental-jastadd-329', '--incremental=param', "--tracing=cache,flush" @@ -38,7 +38,7 @@ task ragConnect(type: JavaExec) { task grammar2uml(type: JavaExec) { main = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler' - classpath = configurations.grammar2umlClasspath + classpath = configurations.grammar2uml args([ '--verbose', @@ -49,10 +49,16 @@ task grammar2uml(type: JavaExec) { // phase: RelAst task relastToJastAdd(type: JavaExec) { group = 'Build' - main = "-jar" + classpath = configurations.relast + //noinspection GroovyAssignabilityCheck, GroovyAccessibility + mainClass = 'org.jastadd.relast.compiler.Compiler' - args(["../libs/relast.jar", - "--grammarName=./src/gen/jastadd/model", + doFirst { + mkdir "src/gen/jastadd/" + } + + args = [ + "--grammarName=./src/gen/jastadd/model", "--useJastAddNames", "--listClass=java.util.ArrayList", "--jastAddList=JastAddList", @@ -60,7 +66,7 @@ task relastToJastAdd(type: JavaExec) { "--resolverHelper", "--file", "src/gen/jastadd/types.relast" - ] + project.ext.relastFiles) + ] + project.ext.relastFiles inputs.files project.ext.relastFiles + ['src/gen/jastadd/types.relast'] outputs.files file("./src/gen/jastadd/model.ast"), file("./src/gen/jastadd/model.jadd") diff --git a/ros3rag.placeA/src/main/jastadd/WorldModelA.connect b/ros3rag.placeA/src/main/jastadd/WorldModelA.connect index 0edcf6fdd768c76b2c9d42170aa7d6ffdc4902c6..c3e16e8da32f55d35ca7eb6ce2bcfdf7e8f2b57f 100644 --- a/ros3rag.placeA/src/main/jastadd/WorldModelA.connect +++ b/ros3rag.placeA/src/main/jastadd/WorldModelA.connect @@ -1,13 +1,13 @@ // --- receiving --- -receive tree WorldModelA.Scene using ParseScene, ConvertScene ; +receive WorldModelA.Scene using ParseScene, ConvertScene ; // rs: not sure whether we want to receive a complete scene. could be hard to update/merge // if necessary, need a mapping. the multi-point-connection is an alternative. // we need to decide for one way // rs: let's try to use a "multi-point-connection" (same input meesage, multiple recipients) -receive tree ObjectOfInterest.Position using DeserializeObject, ExtractPositionFromObject ; -receive tree ObjectOfInterest.Size using DeserializeObject, ExtractSizeFromObject ; -receive tree ObjectOfInterest.Orientation using DeserializeObject,ExtractOrientationFromObject ; +receive ObjectOfInterest.Position using DeserializeObject, ExtractPositionFromObject ; +receive ObjectOfInterest.Size using DeserializeObject, ExtractSizeFromObject ; +receive ObjectOfInterest.Orientation using DeserializeObject,ExtractOrientationFromObject ; DeserializeObject maps byte[] bytes to de.tudresden.inf.st.ceti.Object {: return de.tudresden.inf.st.ceti.Object.parseFrom(bytes); @@ -38,4 +38,4 @@ ExtractOrientationFromObject maps de.tudresden.inf.st.ceti.Object o to Orientati :} // --- sending --- -send tree WorldModelA.LogicalScene ; +send WorldModelA.LogicalScene ; diff --git a/ros3rag.placeA/src/main/java/de/tudresden/inf/st/placeA/UtilA.java b/ros3rag.placeA/src/main/java/de/tudresden/inf/st/placeA/UtilA.java index 623867a147fbdef4627fdf5de7707de8690d26a2..fafa021fed70482ede4922a531724e386b8e1adc 100644 --- a/ros3rag.placeA/src/main/java/de/tudresden/inf/st/placeA/UtilA.java +++ b/ros3rag.placeA/src/main/java/de/tudresden/inf/st/placeA/UtilA.java @@ -68,7 +68,7 @@ public class UtilA { @SuppressWarnings("rawtypes") static class ExposingASTNode extends ASTNode { public Scene exposed_apply_ConvertScene(de.tudresden.inf.st.ceti.Scene pbScene) throws Exception { - return ASTNode._apply_ConvertScene(pbScene); + return ASTNode._ragconnect__apply_ConvertScene(pbScene); } } } diff --git a/ros3rag.placeB/src/main/jastadd/WorldModelB.connect b/ros3rag.placeB/src/main/jastadd/WorldModelB.connect index 374830424811e961e9a541705e7e21da49bf1ba3..d2a9fab1ffc9a1e03bed700abce9002545137088 100644 --- a/ros3rag.placeB/src/main/jastadd/WorldModelB.connect +++ b/ros3rag.placeB/src/main/jastadd/WorldModelB.connect @@ -1,11 +1,12 @@ // --- receiving --- -receive tree WorldModelB.MyScene using ParseScene, ConvertScene ; -receive tree WorldModelB.OtherScene1 ; -receive tree WorldModelB.OtherScene2 ; -receive tree Robot.CanReachObjectOfInterestWrapper using ParseReachability, ConvertReachability ; +receive WorldModelB.MyScene using ParseScene, ConvertScene ; +receive WorldModelB.OtherScene1 ; +receive WorldModelB.OtherScene2 ; +receive WorldModelB.TestingOtherScene ; +receive Robot.CanReachObjectOfInterestWrapper using ParseReachability, ConvertReachability ; // --- sending --- -send tree WorldModelB.NextOperation using PrintOperation ; +send WorldModelB.NextOperation using PrintOperation ; PrintOperation maps Operation op to byte[] {: var result = op.toMergedSelection(); diff --git a/ros3rag.placeB/src/main/jastadd/WorldModelB.relast b/ros3rag.placeB/src/main/jastadd/WorldModelB.relast index d474353f51d2f96183a30ed438208fab5c1bbc8d..f2bc3600e6bc36d75cadc98b8f6100cc8cdaa220 100644 --- a/ros3rag.placeB/src/main/jastadd/WorldModelB.relast +++ b/ros3rag.placeB/src/main/jastadd/WorldModelB.relast @@ -1,4 +1,4 @@ -WorldModelB ::= Robot* [MyScene:Scene] [OtherScene1:LogicalScene] [OtherScene2:LogicalScene] /OtherScene:LogicalScene*/ /NextOperation:Operation/ ; +WorldModelB ::= Robot* [MyScene:Scene] [OtherScene1:LogicalScene] [OtherScene2:LogicalScene] /OtherScene:LogicalScene*/ /NextOperation:Operation/ TestingOtherScene:LogicalScene* ; // workaround with NTA OtherSceneList as receiving lists is not possible yet Robot ::= <Name:String> CanReachObjectOfInterestWrapper ; diff --git a/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java b/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java index b68cd908f8c48d62adcff4e0569a59ffc68cb9c2..64b88e1562b3a5b6739aaefad95214e0ca3d2119 100644 --- a/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java +++ b/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java @@ -138,10 +138,10 @@ public class UtilB { @SuppressWarnings("rawtypes") static class ExposingASTNode extends ASTNode { public Scene exposed_apply_ConvertScene(de.tudresden.inf.st.ceti.Scene pbScene) throws Exception { - return ASTNode._apply_ConvertScene(pbScene); + return ASTNode._ragconnect__apply_ConvertScene(pbScene); } public CanReachObjectOfInterestWrapper exposed_apply_ConvertReachability(de.tudresden.inf.st.ceti.Reachability r) throws Exception { - return ASTNode._apply_ConvertReachability(r); + return ASTNode._ragconnect__apply_ConvertReachability(r); } }