diff --git a/src/main/jastadd/Analysis.jrag b/src/main/jastadd/Analysis.jrag index da9a88b6c0d76925c0876d84063075ed495a02a1..623a3f0ad8c0457d8d0606bf70dea0adfea89ea4 100644 --- a/src/main/jastadd/Analysis.jrag +++ b/src/main/jastadd/Analysis.jrag @@ -1,10 +1,10 @@ aspect Analysis { - // --- lookupTokenUpdateDefinition --- - inh TokenUpdateDefinition TokenUpdateDefinition.lookupTokenUpdateDefinition(TokenComponent token); - eq RagConnect.getUpdateDefinition().lookupTokenUpdateDefinition(TokenComponent token) { - for (UpdateDefinition def : getUpdateDefinitionList()) { - if (def.isTokenUpdateDefinition() && def.asTokenUpdateDefinition().getToken().equals(token)) { - return def.asTokenUpdateDefinition(); + // --- lookupTokenEndpointDefinition --- + inh TokenEndpointDefinition TokenEndpointDefinition.lookupTokenEndpointDefinition(TokenComponent token); + eq RagConnect.getEndpointDefinition().lookupTokenEndpointDefinition(TokenComponent token) { + for (EndpointDefinition def : getEndpointDefinitionList()) { + if (def.isTokenEndpointDefinition() && def.asTokenEndpointDefinition().getToken().equals(token)) { + return def.asTokenEndpointDefinition(); } } return null; @@ -22,6 +22,6 @@ aspect Analysis { } // --- isAlreadyDefined --- - syn boolean TokenUpdateDefinition.isAlreadyDefined() = lookupTokenUpdateDefinition(getToken()) != this; + syn boolean TokenEndpointDefinition.isAlreadyDefined() = lookupTokenEndpointDefinition(getToken()) != this; syn boolean DependencyDefinition.isAlreadyDefined() = lookupDependencyDefinition(getSource().containingTypeDecl(), getID()) != this; } diff --git a/src/main/jastadd/Errors.jrag b/src/main/jastadd/Errors.jrag index 4ea4c18912a1550938a603090c941ba85397e2ba..6a98fa93fcba075c181171367db9b8f24b671a23 100644 --- a/src/main/jastadd/Errors.jrag +++ b/src/main/jastadd/Errors.jrag @@ -45,7 +45,7 @@ aspect Errors { to RagConnect.errors(); DependencyDefinition contributes error("There must be a write update definition targeting " + getSource().parentTypeypeAndName() + " for dependency definition " + getID()) - when targetUpdateDefinition() == null + when targetEndpointDefinition() == null to RagConnect.errors(); } diff --git a/src/main/jastadd/MustacheNodes.relast b/src/main/jastadd/MustacheNodes.relast index f213a35741dd514ac86201c7e6ee32f2053a7a83..b0d7cc4f2a08716791ca6c01786b7531867b0e20 100644 --- a/src/main/jastadd/MustacheNodes.relast +++ b/src/main/jastadd/MustacheNodes.relast @@ -2,9 +2,9 @@ //rel TypeComponentMustache.TypeComponent -> TypeComponent ; MRagConnect ::= ReadDefinition:MReadDefinition* WriteDefinition:MWriteDefinition* MappingDefinition:MMappingDefinition* DependencyDefinition:MDependencyDefinition* RootTypeComponent:MTypeComponent* TokenComponent:MTokenComponent*; -abstract MUpdateDefinition ::= InnerMappingDefinition:MInnerMappingDefinition*; -MReadDefinition : MUpdateDefinition; -MWriteDefinition : MUpdateDefinition; +abstract MEndpointDefinition ::= InnerMappingDefinition:MInnerMappingDefinition*; +MReadDefinition : MEndpointDefinition; +MWriteDefinition : MEndpointDefinition; MMappingDefinition; MInnerMappingDefinition; MDependencyDefinition; diff --git a/src/main/jastadd/NameResolution.jrag b/src/main/jastadd/NameResolution.jrag index 6d5ebe27211b6a83917126201cfa09e3d63f4064..f282ba55983feeae814e12823ff31f1d6480b6a8 100644 --- a/src/main/jastadd/NameResolution.jrag +++ b/src/main/jastadd/NameResolution.jrag @@ -1,6 +1,6 @@ aspect NameResolution { - refine RefResolverStubs eq UpdateDefinition.resolveMappingByToken(String id, int position) { + refine RefResolverStubs eq EndpointDefinition.resolveMappingByToken(String id, int position) { // return a MappingDefinition for (MappingDefinition mappingDefinition : ragconnect().getMappingDefinitionList()) { if (mappingDefinition.getID().equals(id)) { diff --git a/src/main/jastadd/Navigation.jrag b/src/main/jastadd/Navigation.jrag index 8195b3a4fe49fbf3de57c5f01e699392fc023a2f..cfa3e01aa01d26cba381ef8ae7173d99dbe6a4cf 100644 --- a/src/main/jastadd/Navigation.jrag +++ b/src/main/jastadd/Navigation.jrag @@ -16,33 +16,33 @@ aspect Navigation { eq RagConnect.getChild().containedFileName() = getFileName(); eq MRagConnect.getChild().containedFileName() = null; - // --- isTokenUpdateDefinition --- - syn boolean UpdateDefinition.isTokenUpdateDefinition() = false; - eq TokenUpdateDefinition.isTokenUpdateDefinition() = true; + // --- isTokenEndpointDefinition --- + syn boolean EndpointDefinition.isTokenEndpointDefinition() = false; + eq TokenEndpointDefinition.isTokenEndpointDefinition() = true; - // --- asTokenUpdateDefinition --- - syn TokenUpdateDefinition UpdateDefinition.asTokenUpdateDefinition() = null; - eq TokenUpdateDefinition.asTokenUpdateDefinition() = this; + // --- asTokenEndpointDefinition --- + syn TokenEndpointDefinition EndpointDefinition.asTokenEndpointDefinition() = null; + eq TokenEndpointDefinition.asTokenEndpointDefinition() = this; // --- isWriteToMqttDefinition --- - syn boolean UpdateDefinition.isWriteToMqttDefinition() = false; + syn boolean EndpointDefinition.isWriteToMqttDefinition() = false; eq WriteToMqttDefinition.isWriteToMqttDefinition() = true; // --- asWriteToMqttDefinition --- - syn WriteToMqttDefinition UpdateDefinition.asWriteToMqttDefinition() = null; + syn WriteToMqttDefinition EndpointDefinition.asWriteToMqttDefinition() = null; eq WriteToMqttDefinition.asWriteToMqttDefinition() = this; // --- asReadFromMqttDefinition --- - syn ReadFromMqttDefinition UpdateDefinition.asReadFromMqttDefinition() = null; + syn ReadFromMqttDefinition EndpointDefinition.asReadFromMqttDefinition() = null; eq ReadFromMqttDefinition.asReadFromMqttDefinition() = this; - // --- targetUpdateDefinition --- - syn WriteToMqttDefinition DependencyDefinition.targetUpdateDefinition() { + // --- targetEndpointDefinition --- + syn WriteToMqttDefinition DependencyDefinition.targetEndpointDefinition() { // resolve definition in here, as we do not need resolveMethod in any other place (yet) - for (UpdateDefinition updateDefinition : ragconnect().getUpdateDefinitionList()) { - if (updateDefinition.isWriteToMqttDefinition() && - updateDefinition.asWriteToMqttDefinition().getToken().equals(this.getTarget())) { - return updateDefinition.asWriteToMqttDefinition(); + for (EndpointDefinition endpointDefinition : ragconnect().getEndpointDefinitionList()) { + if (endpointDefinition.isWriteToMqttDefinition() && + endpointDefinition.asWriteToMqttDefinition().getToken().equals(this.getTarget())) { + return endpointDefinition.asWriteToMqttDefinition(); } } return null; diff --git a/src/main/jastadd/RagConnect.relast b/src/main/jastadd/RagConnect.relast index e3ab24ad171007ea53ed78314b89b079d574d508..c2e96a56589842e38d136828f111143a1bf239b1 100644 --- a/src/main/jastadd/RagConnect.relast +++ b/src/main/jastadd/RagConnect.relast @@ -1,14 +1,14 @@ -RagConnect ::= UpdateDefinition* DependencyDefinition* MappingDefinition* Program <FileName> ; +RagConnect ::= EndpointDefinition* DependencyDefinition* MappingDefinition* Program <FileName> ; -abstract UpdateDefinition ::= <AlwaysApply:boolean> ; +abstract EndpointDefinition ::= <AlwaysApply:boolean> ; -rel UpdateDefinition.Mapping* -> MappingDefinition; +rel EndpointDefinition.Mapping* -> MappingDefinition; -abstract TokenUpdateDefinition : UpdateDefinition; -rel TokenUpdateDefinition.Token -> TokenComponent; +abstract TokenEndpointDefinition : EndpointDefinition; +rel TokenEndpointDefinition.Token -> TokenComponent; -ReadFromMqttDefinition : TokenUpdateDefinition; -WriteToMqttDefinition : TokenUpdateDefinition; +ReadFromMqttDefinition : TokenEndpointDefinition; +WriteToMqttDefinition : TokenEndpointDefinition; DependencyDefinition ::= <ID>; rel DependencyDefinition.Source <-> TokenComponent.DependencySourceDefinition*; diff --git a/src/main/jastadd/backend/Generation.jadd b/src/main/jastadd/backend/Generation.jadd index 88a9b57afc41e43fd9e04e863f7242e7fc88cdfd..c26ff69adf511be974b050b51dd129038246a312 100644 --- a/src/main/jastadd/backend/Generation.jadd +++ b/src/main/jastadd/backend/Generation.jadd @@ -37,29 +37,29 @@ aspect AttributesForMustache { syn String MRagConnect.mqttWaitUntilReadyMethod() = getRagConnect().mqttWaitUntilReadyMethod(); syn String MRagConnect.mqttCloseMethod() = getRagConnect().mqttCloseMethod(); - // --- MUpdateDefinition --- - syn String MUpdateDefinition.preemptiveExpectedValue(); - syn String MUpdateDefinition.preemptiveReturn(); - syn TokenUpdateDefinition MUpdateDefinition.updateDef(); - syn String MUpdateDefinition.firstInputVarName(); + // --- MEndpointDefinition --- + syn String MEndpointDefinition.preemptiveExpectedValue(); + syn String MEndpointDefinition.preemptiveReturn(); + syn TokenEndpointDefinition MEndpointDefinition.endpointDef(); + syn String MEndpointDefinition.firstInputVarName(); - eq MUpdateDefinition.getInnerMappingDefinition(int i).isLast() = i == getNumInnerMappingDefinition() - 1; - eq MUpdateDefinition.getInnerMappingDefinition().resultVarPrefix() = resultVarPrefix(); - eq MUpdateDefinition.getInnerMappingDefinition(int i).inputVarName() = i == 0 ? firstInputVarName() : resultVarPrefix() + getInnerMappingDefinition(i - 1).getMappingDefinition().methodName(); + eq MEndpointDefinition.getInnerMappingDefinition(int i).isLast() = i == getNumInnerMappingDefinition() - 1; + eq MEndpointDefinition.getInnerMappingDefinition().resultVarPrefix() = resultVarPrefix(); + eq MEndpointDefinition.getInnerMappingDefinition(int i).inputVarName() = i == 0 ? firstInputVarName() : resultVarPrefix() + getInnerMappingDefinition(i - 1).getMappingDefinition().methodName(); - inh String MUpdateDefinition.mqttHandlerAttribute(); + inh String MEndpointDefinition.mqttHandlerAttribute(); - syn String MUpdateDefinition.connectMethod() = updateDef().connectMethod(); - syn TokenComponent MUpdateDefinition.token() = updateDef().getToken(); - syn boolean MUpdateDefinition.alwaysApply() = updateDef().getAlwaysApply(); - syn String MUpdateDefinition.resultVarPrefix() = "result"; // we do not need "_" here, because methodName begins with one - syn String MUpdateDefinition.parentTypeName() = token().containingTypeDecl().getName(); - syn String MUpdateDefinition.tokenName() = token().getName(); - syn MInnerMappingDefinition MUpdateDefinition.lastDefinition() = getInnerMappingDefinition(getNumInnerMappingDefinition() - 1); - syn String MUpdateDefinition.lastDefinitionToType() = lastDefinition().ToType(); - syn String MUpdateDefinition.lastDefinitionName() = lastDefinition().methodName(); - syn String MUpdateDefinition.lastResult() = resultVarPrefix() + lastDefinitionName(); - syn String MUpdateDefinition.condition() { + syn String MEndpointDefinition.connectMethod() = endpointDef().connectMethod(); + syn TokenComponent MEndpointDefinition.token() = endpointDef().getToken(); + syn boolean MEndpointDefinition.alwaysApply() = endpointDef().getAlwaysApply(); + syn String MEndpointDefinition.resultVarPrefix() = "result"; // we do not need "_" here, because methodName begins with one + syn String MEndpointDefinition.parentTypeName() = token().containingTypeDecl().getName(); + syn String MEndpointDefinition.tokenName() = token().getName(); + syn MInnerMappingDefinition MEndpointDefinition.lastDefinition() = getInnerMappingDefinition(getNumInnerMappingDefinition() - 1); + syn String MEndpointDefinition.lastDefinitionToType() = lastDefinition().ToType(); + syn String MEndpointDefinition.lastDefinitionName() = lastDefinition().methodName(); + syn String MEndpointDefinition.lastResult() = resultVarPrefix() + lastDefinitionName(); + syn String MEndpointDefinition.condition() { if (lastDefinition().getMappingDefinition().getToType().isArray()) { return "java.util.Arrays.equals(" + preemptiveExpectedValue() + ", " + lastResult() + ")"; } @@ -82,13 +82,13 @@ aspect AttributesForMustache { // --- MReadDefinition --- eq MReadDefinition.preemptiveExpectedValue() = "get" + tokenName() + "()"; eq MReadDefinition.preemptiveReturn() = "return;"; - eq MReadDefinition.updateDef() = getReadFromMqttDefinition(); + eq MReadDefinition.endpointDef() = getReadFromMqttDefinition(); eq MReadDefinition.firstInputVarName() = "message"; // --- MWriteDefinition --- eq MWriteDefinition.preemptiveExpectedValue() = lastValue(); eq MWriteDefinition.preemptiveReturn() = "return false;"; - eq MWriteDefinition.updateDef() = getWriteToMqttDefinition(); + eq MWriteDefinition.endpointDef() = getWriteToMqttDefinition(); eq MWriteDefinition.firstInputVarName() = "get" + tokenName() + "()"; syn String MWriteDefinition.writeTopic() = getWriteToMqttDefinition().writeTopic(); @@ -109,8 +109,8 @@ aspect AttributesForMustache { syn String MDependencyDefinition.dependencyMethod() = getDependencyDefinition().dependencyMethod(); syn String MDependencyDefinition.sourceParentTypeName() = getDependencyDefinition().getSource().containingTypeDecl().getName(); syn String MDependencyDefinition.internalRelationPrefix() = getDependencyDefinition().internalRelationPrefix(); - syn nta MUpdateDefinition MDependencyDefinition.targetUpdateDefinition() { - return getDependencyDefinition().targetUpdateDefinition().toMustache(); + syn nta MEndpointDefinition MDependencyDefinition.targetEndpointDefinition() { + return getDependencyDefinition().targetEndpointDefinition().toMustache(); } // --- MTypeComponent --- @@ -129,7 +129,7 @@ aspect AttributesForMustache { syn lazy MRagConnect RagConnect.toMustache() { MRagConnect result = new MRagConnect(); result.setRagConnect(this); - for (UpdateDefinition def : getUpdateDefinitionList()) { + for (EndpointDefinition def : getEndpointDefinitionList()) { if (def.isWriteToMqttDefinition()) { result.addWriteDefinition(def.asWriteToMqttDefinition().toMustache()); } else { @@ -156,8 +156,8 @@ aspect AttributesForMustache { } //MInnerMappingDefinition.MappingDefinition -> MappingDefinition; - protected void MUpdateDefinition.addInnerMappings() { - for (MappingDefinition def : updateDef().effectiveMappings()) { + protected void MEndpointDefinition.addInnerMappings() { + for (MappingDefinition def : endpointDef().effectiveMappings()) { MInnerMappingDefinition inner = new MInnerMappingDefinition(); inner.setMappingDefinition(def); addInnerMappingDefinition(inner); @@ -205,7 +205,7 @@ aspect AspectGeneration { syn String TokenComponent.internalName() = getDependencySourceDefinitionList().isEmpty() ? externalName() : "_internal_" + getName(); syn String TokenComponent.externalName() = getName(); - syn String TokenUpdateDefinition.connectMethod() = "connect" + getToken().getName(); + syn String TokenEndpointDefinition.connectMethod() = "connect" + getToken().getName(); syn String WriteToMqttDefinition.writeTopic() = "_topic_" + getToken().getName(); syn String WriteToMqttDefinition.lastValue() = "_lastValue" + getToken().getName(); syn String WriteToMqttDefinition.updateMethod() = "_update_" + getToken().getName(); @@ -227,7 +227,7 @@ aspect AspectGeneration { // naming copy attributes // --- mqttHandlerAttribute --- - inh String UpdateDefinition.mqttHandlerAttribute(); + inh String EndpointDefinition.mqttHandlerAttribute(); inh String MappingDefinition.mqttHandlerAttribute(); inh String DependencyDefinition.mqttHandlerAttribute(); eq RagConnect.getChild().mqttHandlerAttribute() = mqttHandlerAttribute(); diff --git a/src/main/jastadd/backend/Mappings.jrag b/src/main/jastadd/backend/Mappings.jrag index 8232e8ffbf4d099023f3d215666d47cfce179fa0..866ed94c9153da7d277a6bc3d478114e9091e50f 100644 --- a/src/main/jastadd/backend/Mappings.jrag +++ b/src/main/jastadd/backend/Mappings.jrag @@ -105,7 +105,7 @@ aspect DefaultMappings { aspect Mappings { // --- effectiveMappings --- - syn java.util.List<MappingDefinition> UpdateDefinition.effectiveMappings(); + syn java.util.List<MappingDefinition> EndpointDefinition.effectiveMappings(); eq ReadFromMqttDefinition.effectiveMappings() { // if there is a first mapping, check if its input type is byte[]. // or if no mappings are specified. @@ -159,7 +159,7 @@ aspect Mappings { eq JavaArrayMappingDefinitionType.isArray() = true; // --- suitableDefaultMapping --- - syn DefaultMappingDefinition UpdateDefinition.suitableDefaultMapping(); + syn DefaultMappingDefinition EndpointDefinition.suitableDefaultMapping(); eq ReadFromMqttDefinition.suitableDefaultMapping() { String typeName = getMappingList().isEmpty() ? getToken().getJavaTypeUse().getName() : diff --git a/src/main/jastadd/parser/RagConnect.parser b/src/main/jastadd/parser/RagConnect.parser index 3fbf4b8ef3c7abdfc10b72c38938ba980079d653..beef4f0c23fdd07a429e1dcc977715d304dd9d64 100644 --- a/src/main/jastadd/parser/RagConnect.parser +++ b/src/main/jastadd/parser/RagConnect.parser @@ -1,5 +1,5 @@ RagConnect ragconnect - = update_definition.d ragconnect.r {: r.getUpdateDefinitionList().insertChild(d, 0); return r; :} + = endpoint_definition.d ragconnect.r {: r.getEndpointDefinitionList().insertChild(d, 0); return r; :} | dependency_definition.d ragconnect.r {: r.getDependencyDefinitionList().insertChild(d, 0); return r; :} | mapping_definition.d ragconnect.r {: r.getMappingDefinitionList().insertChild(d, 0); return r; :} | comment ragconnect.r {: return r; :} @@ -12,7 +12,7 @@ RagConnect ragconnect } :} ; -UpdateDefinition update_definition +EndpointDefinition endpoint_definition = READ ID.type_name DOT ID.token_name SCOL {: ReadFromMqttDefinition result = new ReadFromMqttDefinition(); diff --git a/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java b/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java index ec23141f3adfe2d166c465e7532155c1dad79ef6..89931a146cbae37b300e756842838e788de93c34 100644 --- a/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java +++ b/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java @@ -216,8 +216,8 @@ public class Compiler extends AbstractCompiler { } private void mergeRagConnectDefinitions(RagConnect ragConnect, RagConnect ragConnectToIntegrate) { - for (UpdateDefinition updateDefinition : ragConnectToIntegrate.getUpdateDefinitionList()) { - ragConnect.addUpdateDefinition(updateDefinition); + for (EndpointDefinition endpointDefinition : ragConnectToIntegrate.getEndpointDefinitionList()) { + ragConnect.addEndpointDefinition(endpointDefinition); } for (MappingDefinition mappingDefinition : ragConnectToIntegrate.getMappingDefinitionList()) { ragConnect.addMappingDefinition(mappingDefinition); diff --git a/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java b/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java index 2e7d5c9cc72b5f1915ef0c73090e30dd21fb2ae6..7f2a45d9010bbe2da298d596e7a6725fc3f494f1 100644 --- a/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java +++ b/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java @@ -127,7 +127,7 @@ public class SimpleMain { readFromMqttDefinition.setAlwaysApply(false); readFromMqttDefinition.setToken(TokenComponent.createRef("Link.CurrentPosition")); readFromMqttDefinition.addMapping(mappingDefinition); - model.addUpdateDefinition(readFromMqttDefinition); + model.addEndpointDefinition(readFromMqttDefinition); model.treeResolveAll(); for (ErrorMessage error : model.errors()) { diff --git a/src/main/resources/tokenComponent.mustache b/src/main/resources/tokenComponent.mustache index a3615c4526e5725bdd49121b16a87a011562f0cd..e6a136d1c8de08b6dce9104fd46fafa5d91b67b6 100644 --- a/src/main/resources/tokenComponent.mustache +++ b/src/main/resources/tokenComponent.mustache @@ -2,11 +2,11 @@ set{{internalName}}(value); {{#DependencyDefinitions}} for ({{targetParentTypeName}} target : get{{internalRelationPrefix}}TargetList()) { - {{#targetUpdateDefinition}} + {{#targetEndpointDefinition}} if (target.{{updateMethod}}()) { target.{{writeMethod}}(); } - {{/targetUpdateDefinition}} + {{/targetEndpointDefinition}} } {{/DependencyDefinitions}} return this;