diff --git a/src/main/jastadd/Analysis.jrag b/src/main/jastadd/Analysis.jrag index 1fc2e2f44baccd87c861eaad699d739866a3aae0..b62399960f34a4b8c23a8d23762ec195491ce4e3 100644 --- a/src/main/jastadd/Analysis.jrag +++ b/src/main/jastadd/Analysis.jrag @@ -27,35 +27,6 @@ aspect Analysis { syn boolean TokenEndpointDefinition.isAlreadyDefined() = lookupTokenEndpointDefinitions(getToken()).size() > 1; syn boolean DependencyDefinition.isAlreadyDefined() = lookupDependencyDefinition(getSource().containingTypeDecl(), getID()) != this; -// // --- protocol --- -// syn String TokenEndpointDefinition.protocol(); -// eq ReceiveFromMqttDefinition.protocol() = "mqtt"; -// eq SendToMqttDefinition.protocol() = "mqtt"; -// eq ReceiveFromRestDefinition.protocol() = "rest"; -// eq SendToRestDefinition.protocol() = "rest"; - -// // --- usesPROTOCOL --- -// syn boolean RagConnect.usesMqtt() = !mqttEndpointDefinitions().isEmpty(); -// syn boolean RagConnect.usesRest() = !restEndpointDefinitions().isEmpty(); - -// // --- mqttEndpointDefinitions --- -// coll java.util.List<TokenEndpointDefinition> RagConnect.mqttEndpointDefinitions() [new java.util.ArrayList<>()] root RagConnect; -// ReceiveFromMqttDefinition contributes this -// to RagConnect.mqttEndpointDefinitions() -// for ragconnect(); -// SendToMqttDefinition contributes this -// to RagConnect.mqttEndpointDefinitions() -// for ragconnect(); -// -// // --- restEndpointDefinitions --- -// coll java.util.List<TokenEndpointDefinition> RagConnect.restEndpointDefinitions() [new java.util.ArrayList<>()] root RagConnect; -// ReceiveFromRestDefinition contributes this -// to RagConnect.restEndpointDefinitions() -// for ragconnect(); -// SendToRestDefinition contributes this -// to RagConnect.restEndpointDefinitions() -// for ragconnect(); - syn boolean MappingDefinitionType.assignableTo(JavaTypeUse target); eq JavaMappingDefinitionType.assignableTo(JavaTypeUse target) = getType().assignableTo(target); eq JavaArrayMappingDefinitionType.assignableTo(JavaTypeUse target) { diff --git a/src/main/jastadd/MustacheNodes.relast b/src/main/jastadd/MustacheNodes.relast index ceead524746145c07d1ea980bcd534e25979073b..62ecdb6166a783e125cefef2826d550b73ab9e1b 100644 --- a/src/main/jastadd/MustacheNodes.relast +++ b/src/main/jastadd/MustacheNodes.relast @@ -1,6 +1,3 @@ -//TypeComponentMustache ; -//rel TypeComponentMustache.TypeComponent -> TypeComponent ; - MRagConnect ::= ReceiveDefinition:MReceiveDefinition* SendDefinition:MSendDefinition* MappingDefinition:MMappingDefinition* DependencyDefinition:MDependencyDefinition* RootTypeComponent:MTypeComponent* TokenComponent:MTokenComponent*; abstract MEndpointDefinition ::= InnerMappingDefinition:MInnerMappingDefinition*; MReceiveDefinition : MEndpointDefinition; @@ -12,7 +9,6 @@ MTypeComponent; MTokenComponent; rel MRagConnect.RagConnect -> RagConnect; -// useless comment rel MInnerMappingDefinition.MMappingDefinition -> MMappingDefinition; rel MReceiveDefinition.ReceiveTokenEndpointDefinition -> ReceiveTokenEndpointDefinition; rel MSendDefinition.SendTokenEndpointDefinition -> SendTokenEndpointDefinition; diff --git a/src/main/jastadd/Printing.jrag b/src/main/jastadd/Printing.jrag index de093552e1cde9451c3032ae16dbbc80e6fee333..74607aeb7737e1e43c9565b799693889a648a9df 100644 --- a/src/main/jastadd/Printing.jrag +++ b/src/main/jastadd/Printing.jrag @@ -1,5 +1,16 @@ aspect Printing { String ASTNode.PRINT_INDENT = " "; + + syn String MappingDefinitionType.prettyPrint(); + eq JavaMappingDefinitionType.prettyPrint() = getType().getName(); + eq JavaArrayMappingDefinitionType.prettyPrint() = getType().getName() + "[]"; + + syn String JavaTypeUse.prettyPrint() { + StringBuilder sb = new StringBuilder(); + generateAbstractGrammar(sb); + return sb.toString(); + } + syn String Document.prettyPrint() { StringBuilder sb = new StringBuilder(); sb.append("# RagConnect created at ").append(java.time.Instant.now()).append("\n"); diff --git a/src/main/jastadd/backend/Generation.jadd b/src/main/jastadd/backend/Generation.jadd index 0bb7e85f7a8f3486c2dd1900e1c800d77aead1d1..f0d79b351b9a0df89514288dbb3e4e592a75483d 100644 --- a/src/main/jastadd/backend/Generation.jadd +++ b/src/main/jastadd/backend/Generation.jadd @@ -1,28 +1,4 @@ -aspect GenerationUtils { - public static final String ASTNode.aspectIndent = " "; - - public String ASTNode.ind(int n) { - StringBuilder s = new StringBuilder(); - for (int i = 0; i < n; i++) { - s.append(aspectIndent); - } - return s.toString(); - } - - // --- prettyPrint --- - syn String MappingDefinitionType.prettyPrint(); - eq JavaMappingDefinitionType.prettyPrint() = getType().getName(); - eq JavaArrayMappingDefinitionType.prettyPrint() = getType().getName() + "[]"; - - syn String JavaTypeUse.prettyPrint() { - StringBuilder sb = new StringBuilder(); - generateAbstractGrammar(sb); - return sb.toString(); - } -} - -/* Open questions -- Should all string constants be defined on the normal AST, or on the special mustache AST? +/* Design considerations - InnerMappingDefinition needed for iteration attribute (first, last) - not easily possible with list-relation */ @@ -35,45 +11,24 @@ aspect AttributesForMustache { eq MRagConnect.getRootTypeComponent(int i).isFirst() = i == 0; syn String MRagConnect.closeMethod() = "ragconnectCloseConnections"; -// syn boolean MRagConnect.usesMqtt() = getRagConnect().usesMqtt(); syn String MRagConnect.mqttHandlerAttribute() = "_mqttHandler"; syn String MRagConnect.mqttHandlerField() = "_mqttHandler"; -// syn String MRagConnect.mqttSetHostMethod() = "MqttSetHost"; syn String MRagConnect.mqttSetupWaitUntilReadyMethod() = "ragconnectSetupMqttWaitUntilReady"; -// syn boolean MRagConnect.usesRest() = getRagConnect().usesRest(); syn String MRagConnect.restHandlerAttribute() = "_restHandler"; syn String MRagConnect.restHandlerField() = "_restHandler"; -// syn String MRagConnect.restSetPortMethod() = "RestSetPort"; // --- MEndpointDefinition --- syn String MEndpointDefinition.preemptiveExpectedValue(); syn String MEndpointDefinition.preemptiveReturn(); syn TokenEndpointDefinition MEndpointDefinition.endpointDef(); syn String MEndpointDefinition.firstInputVarName(); -// syn String MEndpointDefinition.newConnectionMethod(); 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).methodName(); - inh String MEndpointDefinition.mqttHandlerAttribute(); - inh String MEndpointDefinition.restHandlerAttribute(); - syn String MEndpointDefinition.connectParameterName() = "uriString"; -// switch (endpointDef().protocol()) { -// case "mqtt": return "topic"; -// case "rest": return "path"; -// default: return null; -// } -// } -// syn String MEndpointDefinition.handlerAttribute() { -// switch (endpointDef().protocol()) { -// case "mqtt": return mqttHandlerAttribute(); -// case "rest": return restHandlerAttribute(); -// default: return null; -// } -// } syn String MEndpointDefinition.connectMethod() = "connect" + tokenName(); syn TokenComponent MEndpointDefinition.token() = endpointDef().getToken(); syn boolean MEndpointDefinition.alwaysApply() = endpointDef().getAlwaysApply(); @@ -111,23 +66,9 @@ aspect AttributesForMustache { eq MReceiveDefinition.endpointDef() = getReceiveTokenEndpointDefinition(); eq MReceiveDefinition.firstInputVarName() = "message"; -// syn String MReceiveDefinition.newConnectionMethod() { -// switch (endpointDef().protocol()) { -// case "mqtt": return "newConnection"; -// case "rest": return "newPUTConnection"; -// default: return null; -// } -// } - // --- MSendDefinition --- eq MSendDefinition.preemptiveExpectedValue() = lastValue(); eq MSendDefinition.preemptiveReturn() = "return false;"; -// switch (endpointDef().protocol()) { -// case "mqtt": return "return false;"; -// case "rest": return "throw e;"; // e is Exception variable -// default: return null; -// } -// } eq MSendDefinition.endpointDef() = getSendTokenEndpointDefinition(); eq MSendDefinition.firstInputVarName() = "get" + tokenName() + "()"; @@ -136,14 +77,6 @@ aspect AttributesForMustache { syn String MSendDefinition.updateMethod() = "_update_" + tokenName(); syn String MSendDefinition.writeMethod() = "_writeLastValue_" + tokenName(); syn String MSendDefinition.tokenResetMethod() = "get" + tokenName() + "_reset"; -// syn boolean MSendDefinition.isPush() = getSendTokenEndpointDefinition().isPush(); -// syn String MSendDefinition.newConnectionMethod() { -// switch (endpointDef().protocol()) { -// case "mqtt": return null; -// case "rest": return "newGETConnection"; -// default: return null; -// } -// } // --- MMappingDefinition --- syn String MMappingDefinition.toType() = getMappingDefinition().getToType().prettyPrint(); @@ -252,10 +185,6 @@ aspect AttributesForMustache { aspect AspectGeneration { -// syn boolean SendTokenEndpointDefinition.isPush(); -// eq SendToMqttDefinition.isPush() = true; -// eq SendToRestDefinition.isPush() = false; - // --- rootNodeName --- syn String ASTNode.rootNodeName() = rootNode.getName(); diff --git a/src/main/jastadd/backend/Mappings.jrag b/src/main/jastadd/backend/Mappings.jrag index fb1239bfdd8e7ca0af60ea2382eff8dcfb22ed60..7aa82d304079592d605997484d1348a3d3681875 100644 --- a/src/main/jastadd/backend/Mappings.jrag +++ b/src/main/jastadd/backend/Mappings.jrag @@ -100,8 +100,7 @@ aspect Mappings { // then append the suitable default mapping java.util.List<MappingDefinition> result; if (getMappingList().isEmpty() || !hasSuitableEdgeMapping()) { - result = new java.util.ArrayList(); - result.addAll(getMappingList()); + result = new java.util.ArrayList(getMappingList()); result.add(suitableDefaultMapping()); } else { result = getMappingList();