diff --git a/AlgebraicDataflowArchitectureModel/src/generators/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/CodeGenerator.java index 37bdd37..75e5dce 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/CodeGenerator.java @@ -28,6 +28,7 @@ import models.dataConstraintModel.ChannelMember; import models.dataConstraintModel.DataConstraintModel; import models.dataConstraintModel.ResourcePath; +import models.dataConstraintModel.Selector; import models.dataFlowModel.ChannelNode; import models.dataFlowModel.DataFlowEdge; import models.dataFlowModel.DataFlowGraph; @@ -234,24 +235,29 @@ } } - protected void declareAccessorInMainComponent(TypeDeclaration mainComponent, ResourcePath accessRes, MethodDeclaration getter, ILanguageSpecific langSpec) { - List params = new ArrayList<>(); - if (getter.getParameters() != null) { - for (VariableDeclaration var: getter.getParameters()) { - params.add(var.getName()); + protected void declareAccessorInMainComponent(TypeDeclaration mainComponent, ResourceNode accessRes, MethodDeclaration getter, ILanguageSpecific langSpec) { + List mainParams = new ArrayList<>(); + for (Selector selector: accessRes.getAllSelectors()) { + if (selector.getExpression() instanceof Variable) { + Variable var = (Variable) selector.getExpression(); + mainParams.add(var.getName()); } } MethodDeclaration accessor = null; - if (params.size() == 0) { + if (mainParams.size() == 0) { accessor = langSpec.newMethodDeclaration("get" + langSpec.toComponentName(accessRes.getResourceName()), accessRes.getResourceStateType()); } else { accessor = langSpec.newMethodDeclaration("get" + langSpec.toComponentName(accessRes.getResourceName()), false, accessRes.getResourceStateType(), getter.getParameters()); } Block block = new Block(); - if (params.size() == 0) { + if (getter.getParameters() == null || getter.getParameters().size() == 0) { block.addStatement(langSpec.getReturnStatement(langSpec.getMethodInvocation(accessRes.getResourceName(), getter.getName())) + langSpec.getStatementDelimiter()); } else { - block.addStatement(langSpec.getReturnStatement(langSpec.getMethodInvocation(accessRes.getResourceName(), getter.getName(), params)) + langSpec.getStatementDelimiter()); + List resParams = new ArrayList<>(); + for (VariableDeclaration var: getter.getParameters()) { + resParams.add(var.getName()); + } + block.addStatement(langSpec.getReturnStatement(langSpec.getMethodInvocation(accessRes.getResourceName(), getter.getName(), resParams)) + langSpec.getStatementDelimiter()); } accessor.setBody(block); mainComponent.addMethod(accessor);