diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java index 55028efdc1288acee37263f7d7854a428054c862..c0d08649edd312205bab4ad78fa7eaf07f468103 100644 --- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java +++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java @@ -1128,8 +1128,22 @@ public class TML2Avatar { } else { //Translate state without security if (ae instanceof TMLActionState) { - String val = ((TMLActionState) ae).getAction(); - tran.addAction(reworkStringName(val)); + TMLActionState actionsState = (TMLActionState) ae; + String[] actions = actionsState.getAction().split("\\$"); + boolean isReqAction = false; + for (String action : actions) { + action = action.replaceAll(" ", ""); + String[] terms = action.split("="); + if (terms.length == 2) { + if (terms[1].matches("arg" + "\\d+" + "__req")) { + isReqAction = true; + } + } + } + if (!isReqAction) { + String val = actionsState.getAction(); + tran.addAction(reworkStringName(val)); + } } else if (ae instanceof TMLExecI) { tran.setDelays(reworkStringName(((TMLExecI) (ae)).getAction()), reworkStringName(((TMLExecI) (ae)).getAction())); } else if (ae instanceof TMLExecC) { @@ -1873,10 +1887,31 @@ public class TML2Avatar { //Create iteration attribute AvatarAttribute req_loop_index = new AvatarAttribute("req_loop_index", AvatarType.INTEGER, block, null); block.addAttribute(req_loop_index); + List<String> reqParams = new ArrayList<String>(); for (Object obj : tmlmodel.getRequestsToMe(task)) { TMLRequest req = (TMLRequest) obj; + for (TMLActivityElement elements : task.getActivityDiagram().getElements()) { + if (elements instanceof TMLActionState) { + TMLActionState actionsState = (TMLActionState) elements; + String[] actions = actionsState.getAction().split("\\$"); + boolean isReqAction = false; + for (String action : actions) { + action = action.replaceAll(" ", ""); + String[] terms = action.split("="); + if (terms.length == 2) { + if (terms[1].matches("arg" + "\\d+" + "__req")) { + reqParams.add(terms[0]); + isReqAction = true; + } + } + } + if (isReqAction) { + break; + } + } + } for (int i = 0; i < req.getNbOfParams(); i++) { - if (block.getAvatarAttributeWithName(req.getParam(i)) == null) { + if (block.getAvatarAttributeWithName(reqParams.get(i)) == null) { AvatarType type; if (req.getParam(i).matches("-?\\d+")) { type = AvatarType.INTEGER; @@ -1974,12 +2009,12 @@ public class TML2Avatar { AvatarAttribute requestData= new AvatarAttribute(req.getName()+"__reqData", AvatarType.INTEGER, block, null); block.addAttribute(requestData);*/ for (int i = 0; i < req.getNbOfParams(); i++) { - if (block.getAvatarAttributeWithName(req.getParam(i)) == null) { + if (block.getAvatarAttributeWithName(reqParams.get(i)) == null) { String nameNewAtt = "arg"+ (i+1) +"_req"; as.addValue(block.getAvatarAttributeWithName(nameNewAtt).getName()); } else { // Add parameter to signal and actiononsignal - as.addValue(req.getParam(i)); + as.addValue(reqParams.get(i)); } } AvatarTransition tran = new AvatarTransition(block, "__after_" + req.getName(), task.getActivityDiagram().get(0).getReferenceObject());