From 841cea4ec046aed6b762846c8e2bfb61901ff320 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Thu, 14 Jan 2021 11:34:32 +0100 Subject: [PATCH] Simplify handler creation. --- .../src/main/jastadd/Navigation.jrag | 7 +++++++ .../main/jastadd/intermediate/Generation.jadd | 5 +++++ .../jastadd/intermediate/MustacheNodes.relast | 3 ++- .../src/main/resources/MqttHandler.jadd | 4 +++- .../src/main/resources/handler.mustache | 20 ++++++++++++++----- .../src/main/resources/mqtt.mustache | 9 --------- .../src/main/resources/ragconnect.mustache | 6 +----- .../src/main/resources/rest.mustache | 12 ----------- 8 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 ragconnect.base/src/main/resources/rest.mustache diff --git a/ragconnect.base/src/main/jastadd/Navigation.jrag b/ragconnect.base/src/main/jastadd/Navigation.jrag index f6fc20b..1c2c4af 100644 --- a/ragconnect.base/src/main/jastadd/Navigation.jrag +++ b/ragconnect.base/src/main/jastadd/Navigation.jrag @@ -61,4 +61,11 @@ aspect Navigation { // --- isDefaultMappingDefinition --- syn boolean MappingDefinition.isDefaultMappingDefinition() = false; eq DefaultMappingDefinition.isDefaultMappingDefinition() = true; + + // --- mragconnect --- + inh MRagConnect MHandler.mragconnect(); + eq MRagConnect.getHandler().mragconnect() = this; + + // --- rootTypeComponents --- + syn JastAddList<MTypeComponent> MHandler.rootTypeComponents() = mragconnect().getRootTypeComponents(); } diff --git a/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd b/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd index 6b63992..607f960 100644 --- a/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd +++ b/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd @@ -136,6 +136,11 @@ aspect AttributesForMustache { result.addRootTypeComponent(child.asTypeComponent().toMustache()); } } + // MHandler ::= <ClassName> <Construction> <AttributeName> <FieldName> <InUse:boolean>; + result.addHandler(new MHandler("MqttServerHandler", "new MqttServerHandler(\"RagConnectMQTT\")", + result.mqttHandlerAttribute(), result.mqttHandlerField(), usesMqtt)); + result.addHandler(new MHandler("RestServerHandler", "new RestServerHandler(\"RagConnectREST\")", + result.restHandlerAttribute(), result.restHandlerField(), usesRest)); return result; } diff --git a/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast b/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast index 62ecdb6..0684317 100644 --- a/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast +++ b/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast @@ -1,4 +1,4 @@ -MRagConnect ::= ReceiveDefinition:MReceiveDefinition* SendDefinition:MSendDefinition* MappingDefinition:MMappingDefinition* DependencyDefinition:MDependencyDefinition* RootTypeComponent:MTypeComponent* TokenComponent:MTokenComponent*; +MRagConnect ::= ReceiveDefinition:MReceiveDefinition* SendDefinition:MSendDefinition* MappingDefinition:MMappingDefinition* DependencyDefinition:MDependencyDefinition* RootTypeComponent:MTypeComponent* TokenComponent:MTokenComponent* Handler:MHandler*; abstract MEndpointDefinition ::= InnerMappingDefinition:MInnerMappingDefinition*; MReceiveDefinition : MEndpointDefinition; MSendDefinition : MEndpointDefinition; @@ -7,6 +7,7 @@ MInnerMappingDefinition; MDependencyDefinition; MTypeComponent; MTokenComponent; +MHandler ::= <ClassName> <Construction> <AttributeName> <FieldName> <InUse:boolean>; rel MRagConnect.RagConnect -> RagConnect; rel MInnerMappingDefinition.MMappingDefinition -> MMappingDefinition; diff --git a/ragconnect.base/src/main/resources/MqttHandler.jadd b/ragconnect.base/src/main/resources/MqttHandler.jadd index d9f99fb..b675026 100644 --- a/ragconnect.base/src/main/resources/MqttHandler.jadd +++ b/ragconnect.base/src/main/resources/MqttHandler.jadd @@ -1,5 +1,7 @@ import java.io.IOException; -import java.util.concurrent.TimeUnit;aspect MqttHandler { +import java.util.concurrent.TimeUnit; + +aspect MqttHandler { public class MqttServerHandler { private final java.util.Map<String, MqttHandler> handlers = new java.util.HashMap<>(); private long time; diff --git a/ragconnect.base/src/main/resources/handler.mustache b/ragconnect.base/src/main/resources/handler.mustache index e89c451..796f760 100644 --- a/ragconnect.base/src/main/resources/handler.mustache +++ b/ragconnect.base/src/main/resources/handler.mustache @@ -1,7 +1,17 @@ aspect RagConnectHandler { -interface RagConnectHandler<T> { - boolean connectReceive(String path, java.util.function.Consumer<T> callback); - boolean sendPush(String path, T value); - boolean connectSendPull(String path, SupplierWithException<T> supplier); -} +{{#Handlers}} + {{#InUse}} + private {{ClassName}} {{rootNodeName}}.{{FieldName}} = {{{Construction}}}; + {{#rootTypeComponents}} + {{#first}}inh {{ClassName}} ASTNode.{{AttributeName}}();{{/first}} + eq {{rootNodeName}}.get{{name}}().{{AttributeName}}() = {{FieldName}}; + {{/rootTypeComponents}} + syn {{ClassName}} {{rootNodeName}}.{{AttributeName}}() = {{FieldName}}; + {{/InUse}} +{{/Handlers}} + public void {{rootNodeName}}.{{closeMethod}}() { + {{#Handlers}} + {{#InUse}}{{FieldName}}.close();{{/InUse}} + {{/Handlers}} + } } diff --git a/ragconnect.base/src/main/resources/mqtt.mustache b/ragconnect.base/src/main/resources/mqtt.mustache index 8de0b5a..f12cb89 100644 --- a/ragconnect.base/src/main/resources/mqtt.mustache +++ b/ragconnect.base/src/main/resources/mqtt.mustache @@ -1,14 +1,5 @@ aspect MQTT { - private String {{rootNodeName}}.MqttName() { return "RagConnectMQTT"; } - private MqttServerHandler {{rootNodeName}}.{{mqttHandlerField}} = new MqttServerHandler(MqttName()); - public void {{rootNodeName}}.{{mqttSetupWaitUntilReadyMethod}}(long time, java.util.concurrent.TimeUnit unit) { {{mqttHandlerField}}.setupWaitUntilReady(time, unit); } - - {{#RootTypeComponents}} - {{#first}}inh MqttServerHandler ASTNode.{{mqttHandlerAttribute}}();{{/first}} - eq {{rootNodeName}}.get{{name}}().{{mqttHandlerAttribute}}() = {{mqttHandlerField}}; - {{/RootTypeComponents}} - syn MqttServerHandler {{rootNodeName}}.{{mqttHandlerAttribute}}() = {{mqttHandlerField}}; } diff --git a/ragconnect.base/src/main/resources/ragconnect.mustache b/ragconnect.base/src/main/resources/ragconnect.mustache index a39510d..49d1721 100644 --- a/ragconnect.base/src/main/resources/ragconnect.mustache +++ b/ragconnect.base/src/main/resources/ragconnect.mustache @@ -1,10 +1,6 @@ {{#usesMqtt}}{{> mqtt}}{{/usesMqtt}} -{{#usesRest}}{{> rest}}{{/usesRest}} +{{> handler}} aspect ROS2RAG { - public void {{rootNodeName}}.{{closeMethod}}() { - {{#usesMqtt}}{{mqttHandlerField}}.close();{{/usesMqtt}} - {{#usesRest}}{{restHandlerField}}.close();{{/usesRest}} - } {{#ReceiveDefinitions}} {{> receiveDefinition}} {{/ReceiveDefinitions}} diff --git a/ragconnect.base/src/main/resources/rest.mustache b/ragconnect.base/src/main/resources/rest.mustache deleted file mode 100644 index 6bbde2b..0000000 --- a/ragconnect.base/src/main/resources/rest.mustache +++ /dev/null @@ -1,12 +0,0 @@ -aspect REST { - private String {{rootNodeName}}.RestName() { return "RagConnectREST"; } - private RestServerHandler {{rootNodeName}}.{{restHandlerField}} = new RestServerHandler(RestName()); - - {{#getRootTypeComponents}} - {{#first}}inh RestServerHandler ASTNode.{{restHandlerAttribute}}();{{/first}} - eq {{rootNodeName}}.get{{name}}().{{restHandlerAttribute}}() = {{restHandlerField}}; - {{/getRootTypeComponents}} - {{^getRootTypeComponents}} - syn RestServerHandler {{rootNodeName}}.{{restHandlerAttribute}}() = {{restHandlerField}}; - {{/getRootTypeComponents}} -} -- GitLab