diff --git a/AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromDataFlowGraph.java b/AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromDataFlowGraph.java index 63a705e..17edb0c 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromDataFlowGraph.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromDataFlowGraph.java @@ -864,25 +864,26 @@ ArrayList resInputParams = new ArrayList<>(); ArrayList mainInputParams = new ArrayList<>(); int v = 1; - for (Selector selector: resourceNode.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (out.getResource().getLastParam() != null) { + Expression param = out.getResource().getLastParam(); + if (param instanceof Variable) { + Variable var = (Variable) param; resInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; resInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); } v++; } - if (resourceNode.getParent() != null) { - for (Selector selector: resourceNode.getParent().getAllSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (out.getResource().getParent() != null) { + for (Expression param: out.getResource().getParent().getPathParams()) { + if (param instanceof Variable) { + Variable var = (Variable) param; mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); } v++; @@ -926,25 +927,26 @@ ArrayList resInputParams = new ArrayList<>(); ArrayList mainInputParams = new ArrayList<>(); int v = 1; - for (Selector selector: resourceNode.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (out.getResource().getLastParam() != null) { + Expression param = out.getResource().getLastParam(); + if (param instanceof Variable) { + Variable var = (Variable) param; resInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; resInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); } v++; } - if (resourceNode.getResourceHierarchy().getParent() != null) { - for (Selector selector: resourceNode.getParent().getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (out.getResource().getParent() != null) { + for (Expression param: out.getResource().getParent().getPathParams()) { + if (param instanceof Variable) { + Variable var = (Variable) param; mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; mainInputParams.add(langSpec.newVariableDeclaration(var.getType(), "v" + v)); } v++; diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java index 7cd71bf..93e3e7b 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java @@ -583,25 +583,26 @@ ArrayList resInputParams = new ArrayList<>(); ArrayList mainInputParams = new ArrayList<>(); v = 1; - for (Selector selector: rn.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (cm.getResource().getLastParam() != null) { + Expression param = cm.getResource().getLastParam(); + if (param instanceof Variable) { + Variable var = (Variable) param; resInputParams.add(new VariableDeclaration(var.getType(), var.getName())); mainInputParams.add(new VariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; resInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); mainInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); } v++; } - if (rn.getParent() != null) { - for (Selector selector: rn.getParent().getAllSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (cm.getResource().getParent() != null) { + for (Expression param: cm.getResource().getParent().getPathParams()) { + if (param instanceof Variable) { + Variable var = (Variable) param; mainInputParams.add(new VariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; mainInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); } v++; @@ -645,25 +646,26 @@ ArrayList resInputParams = new ArrayList<>(); ArrayList mainInputParams = new ArrayList<>(); v = 1; - for (Selector selector: rn.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (cm.getResource().getLastParam() != null) { + Expression param = cm.getResource().getLastParam(); + if (param instanceof Variable) { + Variable var = (Variable) param; resInputParams.add(new VariableDeclaration(var.getType(), var.getName())); mainInputParams.add(new VariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; resInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); mainInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); } v++; } - if (rn.getResourceHierarchy().getParent() != null) { - for (Selector selector: rn.getParent().getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (cm.getResource().getParent() != null) { + for (Expression param: cm.getResource().getParent().getPathParams()) { + if (param instanceof Variable) { + Variable var = (Variable) param; mainInputParams.add(new VariableDeclaration(var.getType(), var.getName())); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (param instanceof Term) { + Term var = (Term) param; mainInputParams.add(new VariableDeclaration(var.getType(), "v" + v)); } v++; diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java index a5b6a9f..9aa4b39 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java @@ -490,7 +490,7 @@ // For a non-root resource MethodDeclaration getterAccessor = null; List mainGetterParams = new ArrayList<>(); - String resourcePath = getGetterResourcePathAndPathParams(rn, mainGetterParams); + String resourcePath = getGetterResourcePathAndPathParams(rn.getOutSideResource(), mainGetterParams); if (resourcePath.indexOf('/') > 0) { resourcePath = "\"" + resourcePath.substring(resourcePath.indexOf('/')) + "\""; } else { @@ -526,7 +526,7 @@ // In each resource. ArrayList resInputParams = new ArrayList<>(); ArrayList rootInputParams = new ArrayList<>(); - String resourcePath = getInputMethodResourcePathaAndPathParams(rn, resInputParams, rootInputParams); + String resourcePath = getInputMethodResourcePathaAndPathParams(cm.getResource(), resInputParams, rootInputParams); if (resourcePath.indexOf('/') > 0) { resourcePath = "\"" + resourcePath.substring(resourcePath.indexOf('/')) + "\""; } else { @@ -569,21 +569,22 @@ // In each resource. ArrayList resInputParams = new ArrayList<>(); int v = 1; - for (Selector selector: rn.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (cm.getResource().getLastParam() != null) { + Expression pathParam = cm.getResource().getLastParam(); + if (pathParam instanceof Variable) { + Variable var = (Variable) pathParam; String paramName = var.getName(); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); resInputParams.add(param); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (pathParam instanceof Term) { + Term var = (Term) pathParam; String paramName = "v" + v; VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); resInputParams.add(param); } v++; } - if (rn.getResourceHierarchy().getParent() != null && rn.getResourceHierarchy().getParent().getParent() != null) { + if (cm.getResource().getResourceHierarchy().getParent() != null && cm.getResource().getResourceHierarchy().getParent().getParent() != null) { MethodDeclaration input = new MethodDeclaration(((Variable) cm.getStateTransition().getMessageExpression()).getName(), false, typeVoid, null); if (component != null) { @@ -591,13 +592,13 @@ component.addMethod(input); } else { // No component is created for this resource. - inputs.add(new AbstractMap.SimpleEntry<>(rn.getParent().getResourceHierarchy(), input)); + inputs.add(new AbstractMap.SimpleEntry<>(cm.getResource().getParent().getResourceHierarchy(), input)); } } // For the root resource. ArrayList rootInputParams = new ArrayList<>(); - String resourcePath = getGetterResourcePathAndPathParams(rn, rootInputParams); + String resourcePath = getGetterResourcePathAndPathParams(cm.getResource(), rootInputParams); if (resourcePath.indexOf('/') > 0) { resourcePath = "\"" + resourcePath.substring(resourcePath.indexOf('/')) + "\""; } else { @@ -741,19 +742,19 @@ return params; } - private static String getGetterResourcePathAndPathParams(ResourceNode rn, List pathParams) { + private static String getGetterResourcePathAndPathParams(ResourcePath resPath, List pathParams) { int v = 1; List params = new ArrayList<>(); - for (Selector selector: rn.getAllSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + for (Expression pathParam: resPath.getPathParams()) { + if (pathParam instanceof Variable) { + Variable var = (Variable) pathParam; String paramName = var.getName(); params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); param.addAnnotation(new Annotation("PathParam", "\"" + paramName + "\"")); pathParams.add(param); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (pathParam instanceof Term) { + Term var = (Term) pathParam; String paramName = "v" + v; params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); @@ -762,16 +763,17 @@ } v++; } - return rn.getResourceHierarchy().toResourcePath(params); + return resPath.getResourceHierarchy().toResourcePath(params); } - private static String getInputMethodResourcePathaAndPathParams(ResourceNode rn, ArrayList resInputParams, + private static String getInputMethodResourcePathaAndPathParams(ResourcePath resPath, ArrayList resInputParams, ArrayList rootInputParams) { int v = 1; List params = new ArrayList<>(); - for (Selector selector: rn.getSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (resPath.getLastParam() != null) { + Expression pathParam = resPath.getLastParam(); + if (pathParam instanceof Variable) { + Variable var = (Variable) pathParam; String paramName = var.getName(); params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); @@ -779,8 +781,8 @@ param = new VariableDeclaration(var.getType(), paramName); param.addAnnotation(new Annotation("PathParam", "\"" + paramName + "\"")); rootInputParams.add(param); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (pathParam instanceof Term) { + Term var = (Term) pathParam; String paramName = "v" + v; params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); @@ -791,17 +793,17 @@ } v++; } - if (rn.getParent() != null) { - for (Selector selector: rn.getParent().getAllSelectors()) { - if (selector.getExpression() instanceof Variable) { - Variable var = (Variable) selector.getExpression(); + if (resPath.getParent() != null) { + for (Expression pathParam: resPath.getParent().getPathParams()) { + if (pathParam instanceof Variable) { + Variable var = (Variable) pathParam; String paramName = var.getName(); params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); param.addAnnotation(new Annotation("PathParam", "\"" + paramName + "\"")); rootInputParams.add(param); - } else if (selector.getExpression() instanceof Term) { - Term var = (Term) selector.getExpression(); + } else if (pathParam instanceof Term) { + Term var = (Term) pathParam; String paramName = "v" + v; params.add("{" + paramName + "}"); VariableDeclaration param = new VariableDeclaration(var.getType(), paramName); @@ -811,7 +813,7 @@ v++; } } - return rn.getResourceHierarchy().toResourcePath(params); + return resPath.getResourceHierarchy().toResourcePath(params); } private static String getInitializer(ResourcePath resId) {