diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java index 7f0c144e2ae47afb02a07d9ea6f4478d5b16a053..b5f6ed9f6127342093deaffa796c5e3a04de819f 100644 --- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java +++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java @@ -58,56 +58,54 @@ public class TML2Avatar { private final static Integer channelPrivate = 1; private final static Integer channelUnreachable = 2; //private AvatarAttribute pKey; - private Map<TMLTask, AvatarBlock> taskBlockMap = new HashMap<TMLTask, AvatarBlock>(); - private Map<String, Integer> originDestMap = new HashMap<String, Integer>(); - private Map<String, Object> stateObjectMap = new HashMap<String, Object>(); - private Map<TMLTask, List<SecurityPattern>> accessKeys = new HashMap<TMLTask, List<SecurityPattern>>(); - private ArrayList<SecurityPattern> secPatterns = new ArrayList<SecurityPattern>(); + private final Map<TMLTask, AvatarBlock> taskBlockMap = new HashMap<>(); + private final Map<String, Integer> originDestMap = new HashMap<>(); + private final Map<String, Object> stateObjectMap = new HashMap<>(); + private final Map<TMLTask, List<SecurityPattern>> accessKeys = new HashMap<>(); + private final List<SecurityPattern> secPatterns = new ArrayList<>(); private int loopLimit = 1; - private HashMap<TMLActivityElement, Set<String>> channelsSecAttributes = new HashMap<TMLActivityElement, Set<String>>(); - private HashMap<TMLChannel, Set<AvatarPragma>> secChannelMap = new HashMap<TMLChannel, Set<AvatarPragma>>(); - private Map<TMLWriteChannel, Set<AvatarPragma>> confPragmaMap = new HashMap<TMLWriteChannel, Set<AvatarPragma>>();; - private Map<TMLActivityElement, Set<AvatarPragma>> authPragmaMap = new HashMap<TMLActivityElement, Set<AvatarPragma>>();; - private HashMap<String, List<AvatarAttributeState>> signalAuthOriginMap = new HashMap<String, List<AvatarAttributeState>>(); - private HashMap<String, List<AvatarAttributeState>> signalAuthDestMap = new HashMap<String, List<AvatarAttributeState>>(); - private List<AvatarSignal> signals = new ArrayList<AvatarSignal>(); + private final HashMap<TMLActivityElement, Set<String>> channelsSecAttributes = new HashMap<>(); + private final HashMap<TMLChannel, Set<AvatarPragma>> secChannelMap = new HashMap<>(); + private final Map<TMLWriteChannel, Set<AvatarPragma>> confPragmaMap = new HashMap<>(); + private final Map<TMLActivityElement, Set<AvatarPragma>> authPragmaMap = new HashMap<>(); + private final HashMap<String, List<AvatarAttributeState>> signalAuthOriginMap = new HashMap<>(); + private final HashMap<String, List<AvatarAttributeState>> signalAuthDestMap = new HashMap<>(); + private final List<AvatarSignal> signals = new ArrayList<>(); private AvatarSpecification avspec; - private ArrayList<String> attrsToCheck; - private List<String> allStates; - private boolean mc = false; - private boolean security = false; - private TMLMapping<?> tmlmap; - private TMLModeling<?> tmlmodel; - private Set<SecurityPattern> keysPublicBus = new HashSet<SecurityPattern>(); - private Map<SecurityPattern, List<AvatarAttribute>> symKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>(); - private Map<SecurityPattern, List<AvatarAttribute>> pubKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>(); - - private Map<SecurityPattern, AvatarAttribute> secPatternEncAttribute = new HashMap<SecurityPattern, AvatarAttribute>(); - private Map<SecurityPattern, AvatarAttribute> secPatternDecAttribute = new HashMap<SecurityPattern, AvatarAttribute>(); - private Map<SecurityPattern, AvatarPragmaSecret> secPatternPragmaMap = new HashMap<SecurityPattern, AvatarPragmaSecret>(); - private Map<String, String> nameMap = new HashMap<String, String>(); - private Map<String, AvatarSignal> signalInMap = new HashMap<String, AvatarSignal>(); - private Map<String, AvatarSignal> signalOutMap = new HashMap<String, AvatarSignal>(); - - private Object referenceObject; + private final List<String> allStates; + private final boolean mc; + private final boolean security; + private final TMLMapping<?> tmlmap; + private final TMLModeling<?> tmlmodel; + private final Set<SecurityPattern> keysPublicBus = new HashSet<>(); + private final Map<SecurityPattern, List<AvatarAttribute>> symKeys = new HashMap<>(); + private final Map<SecurityPattern, List<AvatarAttribute>> pubKeys = new HashMap<>(); + + private final Map<SecurityPattern, AvatarAttribute> secPatternEncAttribute = new HashMap<>(); + private final Map<SecurityPattern, AvatarAttribute> secPatternDecAttribute = new HashMap<>(); + private final Map<SecurityPattern, AvatarPragmaSecret> secPatternPragmaMap = new HashMap<>(); + private final Map<String, String> nameMap = new HashMap<>(); + private final Map<String, AvatarSignal> signalInMap = new HashMap<>(); + private final Map<String, AvatarSignal> signalOutMap = new HashMap<>(); + + private final Object referenceObject; public TML2Avatar(TMLMapping<?> tmlmap, boolean modelcheck, boolean sec, Object _referenceObject) { this.tmlmap = tmlmap; this.tmlmodel = tmlmap.getTMLModeling(); - allStates = new ArrayList<String>(); - attrsToCheck = new ArrayList<String>(); + allStates = new ArrayList<>(); mc = modelcheck; security = sec; referenceObject = _referenceObject; } - public void checkConnections() { + private void checkConnections() { List<HwLink> links = tmlmap.getTMLArchitecture().getHwLinks(); for (TMLTask t1 : tmlmodel.getTasks()) { - List<SecurityPattern> keys = new ArrayList<SecurityPattern>(); + List<SecurityPattern> keys = new ArrayList<>(); accessKeys.put(t1, keys); for (HwLink link : links) { if (link.bus.privacy == HwBus.BUS_PUBLIC && link.hwnode instanceof HwMemory) { @@ -118,9 +116,9 @@ public class TML2Avatar { HwExecutionNode node1 = tmlmap.getHwNodeOf(t1); //Try to find memory using only private buses from origin - List<HwNode> toVisit = new ArrayList<HwNode>(); + List<HwNode> toVisit = new ArrayList<>(); //List<HwNode> toMemory = new ArrayList<HwNode>(); - List<HwNode> complete = new ArrayList<HwNode>(); + List<HwNode> complete = new ArrayList<>(); for (HwLink link : links) { if (link.hwnode == node1) { if (link.bus.privacy == 1) { @@ -130,7 +128,7 @@ public class TML2Avatar { } boolean memory = false; //memloop: - while (toVisit.size() > 0) { + while (!toVisit.isEmpty()) { HwNode curr = toVisit.remove(0); for (HwLink link : links) { if (curr == link.bus) { @@ -167,20 +165,20 @@ public class TML2Avatar { //Navigate architecture for node //HwNode last = node1; - List<HwNode> found = new ArrayList<HwNode>(); - List<HwNode> done = new ArrayList<HwNode>(); - List<HwNode> path = new ArrayList<HwNode>(); - Map<HwNode, List<HwNode>> pathMap = new HashMap<HwNode, List<HwNode>>(); + List<HwNode> found = new ArrayList<>(); + List<HwNode> done = new ArrayList<>(); + List<HwNode> path = new ArrayList<>(); + Map<HwNode, List<HwNode>> pathMap = new HashMap<>(); for (HwLink link : links) { if (link.hwnode == node1) { found.add(link.bus); - List<HwNode> tmp = new ArrayList<HwNode>(); + List<HwNode> tmp = new ArrayList<>(); tmp.add(link.bus); pathMap.put(link.bus, tmp); } } outerloop: - while (found.size() > 0) { + while (!found.isEmpty()) { HwNode curr = found.remove(0); for (HwLink link : links) { if (curr == link.bus) { @@ -190,14 +188,14 @@ public class TML2Avatar { } if (!done.contains(link.hwnode) && !found.contains(link.hwnode) && link.hwnode instanceof HwBridge) { found.add(link.hwnode); - List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr)); + List<HwNode> tmp = new ArrayList<>(pathMap.get(curr)); tmp.add(link.hwnode); pathMap.put(link.hwnode, tmp); } } else if (curr == link.hwnode) { if (!done.contains(link.bus) && !found.contains(link.bus)) { found.add(link.bus); - List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr)); + List<HwNode> tmp = new ArrayList<>(pathMap.get(curr)); tmp.add(link.bus); pathMap.put(link.bus, tmp); } @@ -205,7 +203,7 @@ public class TML2Avatar { } done.add(curr); } - if (path.size() == 0) { + if (path.isEmpty()) { originDestMap.put(t1.getName() + "__" + t2.getName(), channelUnreachable); } else { int priv = 1; @@ -329,7 +327,7 @@ public class TML2Avatar { TraceManager.addDev(channelMap); }*/ - public List<AvatarStateMachineElement> translateState(TMLActivityElement ae, AvatarBlock block) { + private List<AvatarStateMachineElement> translateState(TMLActivityElement ae, AvatarBlock block) { // TMLActionState tmlaction; // TMLChoice tmlchoice; @@ -351,7 +349,7 @@ public class TML2Avatar { // TMLDelay tmldelay; AvatarTransition tran = new AvatarTransition(block, "", null); - List<AvatarStateMachineElement> elementList = new ArrayList<AvatarStateMachineElement>(); + List<AvatarStateMachineElement> elementList = new ArrayList<>(); if (ae == null) { return elementList; @@ -393,7 +391,7 @@ public class TML2Avatar { for (AvatarStateMachineElement e : seq) { if (e instanceof AvatarStopState) { //ignore - } else if (e.getNexts().size() == 0) { + } else if (e.getNexts().isEmpty()) { e.addNext(tmp.get(0)); elementList.add(e); } else if (e.getNext(0) instanceof AvatarStopState) { @@ -411,7 +409,7 @@ public class TML2Avatar { //Put stop states on the end of the last in sequence for (AvatarStateMachineElement e : seq) { - if (e.getNexts().size() == 0 && !(e instanceof AvatarStopState)) { + if (e.getNexts().isEmpty() && !(e instanceof AvatarStopState)) { AvatarStopState stop = new AvatarStopState("stop", null, block); e.addNext(stop); elementList.add(stop); @@ -531,7 +529,7 @@ public class TML2Avatar { for (AvatarStateMachineElement e : tmp) { if (e instanceof AvatarStopState) { //ignore - } else if (e.getNexts().size() == 0) { + } else if (e.getNexts().isEmpty()) { e.addNext(choiceStateEnd); tranChoiceStateEnd.addNext(choiceState); elementList.add(e); @@ -936,7 +934,7 @@ public class TML2Avatar { if (signalAuthOriginMap.containsKey(ae.getSecurityPattern().getName())) { signalAuthOriginMap.get(ae.getSecurityPattern().getName()).add(authOrigin); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authOrigin); signalAuthOriginMap.put(ae.getSecurityPattern().getName(), tmp); } @@ -998,7 +996,7 @@ public class TML2Avatar { if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) { signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authDest); signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp); } @@ -1054,7 +1052,7 @@ public class TML2Avatar { if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) { signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authDest); signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp); } @@ -1118,7 +1116,7 @@ public class TML2Avatar { if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) { signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authDest); signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp); } @@ -1193,7 +1191,7 @@ public class TML2Avatar { } TraceManager.addDev("InMap sig= " + sig.getSignalName()); AvatarActionOnSignal as = new AvatarActionOnSignal(ae.getName(), sig, ae.getReferenceObject(), block); - AvatarAttribute channelData = null; + AvatarAttribute channelData; String action = ""; if (ae.getSecurityPattern() != null) { //If nonce @@ -1213,6 +1211,10 @@ public class TML2Avatar { block.addAttribute(encryptedKey); } action = secPatternDecAttribute.get(ae.getSecurityPattern()).getName() + " = " + channelData.getName(); + } else { + String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block); + channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null); + block.addAttribute(channelData); } } else { //Send the encrypted data @@ -1225,6 +1227,10 @@ public class TML2Avatar { block.addAttribute(encrypted); } action = secPatternDecAttribute.get(ae.getSecurityPattern()).getName() + " = " + channelData.getName(); + } else { + String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block); + channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null); + block.addAttribute(channelData); } } } else { @@ -1232,9 +1238,8 @@ public class TML2Avatar { channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null); block.addAttribute(channelData); } - if (channelData != null) { - as.addValue(channelData.getName()); - } + as.addValue(channelData.getName()); + tran = new AvatarTransition(block, "__after_" + ae.getName(), ae.getReferenceObject()); if (!action.isEmpty()) { tran.addAction(action); @@ -1256,7 +1261,7 @@ public class TML2Avatar { elementList.add(afterSignalState); elementList.add(tran); boolean foundDecrytionOp = false; - List<TMLActivityElement> allNextForAe = new ArrayList<TMLActivityElement>(ae.getNexts()); + List<TMLActivityElement> allNextForAe = new ArrayList<>(ae.getNexts()); if (ae.getSecurityPattern() != null) { while (!allNextForAe.isEmpty()) { TMLActivityElement nextAe = allNextForAe.get(0); @@ -1266,7 +1271,7 @@ public class TML2Avatar { if (((TMLExecC) nextAe).isDecryptionProcess()) { if (nextAe.getSecurityPattern().equalSpec(ae.getSecurityPattern())) { if (!channelsSecAttributes.containsKey(nextAe)) { - Set<String> tmp = new HashSet<String>(); + Set<String> tmp = new HashSet<>(); channelsSecAttributes.put(nextAe, tmp); } channelsSecAttributes.get(nextAe).add(channelData.getName()); @@ -1281,7 +1286,7 @@ public class TML2Avatar { } if (!foundDecrytionOp) { if (!channelsSecAttributes.containsKey(ae)) { - Set<String> tmp = new HashSet<String>(); + Set<String> tmp = new HashSet<>(); channelsSecAttributes.put(ae, tmp); } channelsSecAttributes.get(ae).add(channelData.getName()); @@ -1297,7 +1302,7 @@ public class TML2Avatar { if (signalAuthDestMap.containsKey(ch.getName())) { signalAuthDestMap.get(ch.getName()).add(authDest); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authDest); signalAuthDestMap.put(ch.getName(), tmp); } @@ -1322,7 +1327,7 @@ public class TML2Avatar { } TraceManager.addDev("OutMap sig= " + sig.getSignalName()); - AvatarAttribute channelData = null; + AvatarAttribute channelData; AvatarActionOnSignal as = new AvatarActionOnSignal(ae.getName(), sig, ae.getReferenceObject(), block); if (ae.getSecurityPattern() != null) { @@ -1341,6 +1346,10 @@ public class TML2Avatar { AvatarAttribute encrypted = new AvatarAttribute(secPatternEncAttribute.get(ae.getSecurityPattern()).getName(), AvatarType.INTEGER, block, null); block.addAttribute(encrypted); } + } else { + String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block); + channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null); + block.addAttribute(channelData); } } } else { @@ -1350,12 +1359,10 @@ public class TML2Avatar { channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null); block.addAttribute(channelData); } - if (channelData != null) { - as.addValue(channelData.getName()); - } + as.addValue(channelData.getName()); //Add the confidentiality pragma for this channel data if (ch.checkConf) { - if (ch.originalOriginTasks.size() != 0 && ch.getOriginPort().getName().contains("PORTORIGIN")) { + if (!ch.originalOriginTasks.isEmpty() && ch.getOriginPort().getName().contains("PORTORIGIN")) { // System.out.println("Channel " + ch.getOriginPort().getName() + " block " + block.getName()); for (TMLTask origTask : ch.originalOriginTasks) { AvatarBlock bl = avspec.getBlockWithName(origTask.getName().split("__")[origTask.getName().split("__").length - 1]); @@ -1366,11 +1373,11 @@ public class TML2Avatar { new AvatarPragmaSecret("#Confidentiality " + bl.getName() + "." + channelData.getName(), ch.getReferenceObject(), attr); if (!secChannelMap.containsKey(ch)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); secChannelMap.put(ch, tmp); } if (!confPragmaMap.containsKey((TMLWriteChannel) ae)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); confPragmaMap.put((TMLWriteChannel) ae, tmp); } boolean isAvSecretInSet = false; @@ -1395,11 +1402,11 @@ public class TML2Avatar { new AvatarPragmaSecret("#Confidentiality " + block.getName() + "." + channelData.getName(), ch.getReferenceObject(), attr); if (!secChannelMap.containsKey(ch)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); secChannelMap.put(ch, tmp); } if (!confPragmaMap.containsKey((TMLWriteChannel) ae)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); confPragmaMap.put((TMLWriteChannel) ae, tmp); } boolean isAvSecretInSet = false; @@ -1422,7 +1429,7 @@ public class TML2Avatar { // To be removed in case another authenticity pragma is used on the channel // Also, to be duplicated for each send / receive boolean foundEncrytionOp = false; - List<TMLActivityElement> allPrevOfAe = new ArrayList<TMLActivityElement>(); + List<TMLActivityElement> allPrevOfAe = new ArrayList<>(); TMLActivity actDiagram = ch.getOriginTask().getActivityDiagram(); if (actDiagram.getPrevious(ae) != null) { allPrevOfAe.add(actDiagram.getPrevious(ae)); @@ -1459,7 +1466,7 @@ public class TML2Avatar { if (signalAuthOriginMap.containsKey(ch.getName())) { signalAuthOriginMap.get(ch.getName()).add(authOrigin); } else { - LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>(); + LinkedList<AvatarAttributeState> tmp = new LinkedList<>(); tmp.add(authOrigin); signalAuthOriginMap.put(ch.getName(), tmp); } @@ -1506,7 +1513,7 @@ public class TML2Avatar { //Process elements in loop to remove stop states and empty transitions, and loop back to choice for (AvatarStateMachineElement e : elements) { if (e instanceof AvatarStopState) { - } else if (e.getNexts().size() == 0) { + } else if (e.getNexts().isEmpty()) { if (e instanceof AvatarTransition) { e.addNext(as); elementList.add(e); @@ -1558,7 +1565,7 @@ public class TML2Avatar { } tran.addAction(AvatarTerm.createActionFromString(block, loop.getIncrement())); tran.addAction(AvatarTerm.createActionFromString(block, "loop_index = loop_index + 1")); - if (elements.size() > 0) { + if (!elements.isEmpty()) { tran.addNext(elements.get(0)); as.addNext(tran); elementList.add(tran); @@ -1566,7 +1573,7 @@ public class TML2Avatar { //Process elements in loop to remove stop states and empty transitions, and loop back to choice for (AvatarStateMachineElement e : elements) { if (e instanceof AvatarStopState) { - } else if (e.getNexts().size() == 0) { + } else if (e.getNexts().isEmpty()) { e.addNext(as); elementList.add(e); } else if (e.getNext(0) instanceof AvatarStopState) { @@ -1583,7 +1590,7 @@ public class TML2Avatar { tran = new AvatarTransition(block, "end_loop__" + ae.getName(), ae.getReferenceObject()); tran.setGuard(new AvatarGuardElse()); as.addNext(tran); - if (afterloop.size() == 0) { + if (afterloop.isEmpty()) { afterloop.add(new AvatarStopState("stop", null, block)); } tran.addNext(afterloop.get(0)); @@ -1601,7 +1608,7 @@ public class TML2Avatar { //tran.setGuard(c.getGuard(i)); as.addNext(tran); List<AvatarStateMachineElement> nexts = translateState(ae.getNextElement(i), block); - if (nexts.size() > 0) { + if (!nexts.isEmpty()) { tran.addNext(nexts.get(0)); elementList.add(tran); elementList.addAll(nexts); @@ -1626,7 +1633,7 @@ public class TML2Avatar { TraceManager.addDev("undefined tml element " + ae); } List<AvatarStateMachineElement> nexts = translateState(ae.getNextElement(0), block); - if (nexts.size() == 0) { + if (nexts.isEmpty()) { //in an infinite loop i hope return elementList; } @@ -1635,7 +1642,7 @@ public class TML2Avatar { return elementList; } - public String processName(String name, int id) { + private String processName(String name, int id) { name = reworkStringName(name).replaceAll("-", "_"); if (allStates.contains(name)) { return name + id; @@ -1700,7 +1707,6 @@ public class TML2Avatar { this.avspec = new AvatarSpecification("spec", null); } } - attrsToCheck.clear(); tmlmodel.removeForksAndJoins(); // System.out.println("MODIFIED model " + tmlmodel); @@ -1731,7 +1737,7 @@ public class TML2Avatar { Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(_loopLimit); if (m.find()) { - loopLimit = Integer.valueOf(_loopLimit); + loopLimit = Integer.parseInt(_loopLimit); } for (TMLChannel channel : tmlmodel.getChannels()) { TraceManager.addDev("Checking auth of channel " + channel.getName() + ": " + channel.isCheckAuthChannel()); @@ -1893,9 +1899,8 @@ 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; + List<String> reqParams = new ArrayList<>(); + for (TMLRequest req : tmlmodel.getRequestsToMe(task)) { for (TMLActivityElement elements : task.getActivityDiagram().getElements()) { if (elements instanceof TMLActionState) { TMLActionState actionsState = (TMLActionState) elements; @@ -1959,9 +1964,7 @@ public class TML2Avatar { e.setName(processName(e.getName(), e.getID())); stateObjectMap.put(task.getName().split("__")[task.getName().split("__").length-1] + "__" + e.getName(), e.getReferenceObject()); - if (e instanceof AvatarStopState) { - //ignore it - } else { + if (!(e instanceof AvatarStopState)) { for (int i = 0; i < e.getNexts().size(); i++) { if (e.getNext(i) instanceof AvatarStopState) { e.removeNext(i); @@ -1981,8 +1984,7 @@ public class TML2Avatar { //Add Requests, direct transition to start of state machine - for (Object obj : tmlmodel.getRequestsToMe(task)) { - TMLRequest req = (TMLRequest) obj; + for (TMLRequest req : tmlmodel.getRequestsToMe(task)) { AvatarTransition incrTran = new AvatarTransition(block, "__after_loopstart__" + req.getName(), task.getActivityDiagram().get(0).getReferenceObject()); incrTran.addAction(AvatarTerm.createActionFromString(block, "req_loop_index = req_loop_index + 1")); incrTran.setGuard(AvatarGuard.createFromString(block, "req_loop_index != " + loopLimit)); @@ -2065,7 +2067,7 @@ public class TML2Avatar { if (wc.hasChannel(ch) && actElem.getSecurityPattern() != null && actElem.getSecurityPattern().getName().equals(secPattern.getName())) { if (!secChannelMap.containsKey(ch)) { - Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp0 = new HashSet<>(); secChannelMap.put(ch, tmp0); } boolean isAvSecretInSet = false; @@ -2080,7 +2082,7 @@ public class TML2Avatar { } if (!confPragmaMap.containsKey(wc)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); confPragmaMap.put(wc, tmp); } confPragmaMap.get(wc).add(secPatternPragmaMap.get(secPattern)); @@ -2103,7 +2105,7 @@ public class TML2Avatar { TMLChannel ch = tmlmodel.getChannelByShortName(s); if (ch != null && ch.checkAuth) { if (!secChannelMap.containsKey(ch)) { - Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp0 = new HashSet<>(); secChannelMap.put(ch, tmp0); } boolean isAvSecretInSet = false; @@ -2124,7 +2126,7 @@ public class TML2Avatar { if (rd.hasChannel(ch) && channelsSecAttributes.containsKey(actElem) && channelsSecAttributes.get(actElem).contains(attributeStateDest.getAttribute().getName())) { if (!authPragmaMap.containsKey(rd)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); authPragmaMap.put(rd, tmp); } authPragmaMap.get(rd).add(pragma); @@ -2141,7 +2143,7 @@ public class TML2Avatar { if (actElem.getSecurityPattern() != null && channelsSecAttributes.containsKey(actElem) && channelsSecAttributes.get(actElem).contains(sec.getName())) { if (!authPragmaMap.containsKey(actElem)) { - Set<AvatarPragma> tmp = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp = new HashSet<>(); authPragmaMap.put(actElem, tmp); } authPragmaMap.get(actElem).add(pragma); @@ -2153,7 +2155,7 @@ public class TML2Avatar { TMLChannel chSec = actCh.getChannel(i); if (chSec.checkAuth) { if (!secChannelMap.containsKey(chSec)) { - Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>(); + Set<AvatarPragma> tmp0 = new HashSet<>(); secChannelMap.put(chSec, tmp0); } boolean isAvSecretInSet = false; @@ -2177,7 +2179,7 @@ public class TML2Avatar { } } } - List<AvatarPragma> avPragmas = new ArrayList<AvatarPragma>(); + List<AvatarPragma> avPragmas = new ArrayList<>(); for (TMLChannel ch : secChannelMap.keySet()) { for (AvatarPragma avPragma : secChannelMap.get(ch)) { boolean isAvSecretInSet = false; @@ -2193,9 +2195,8 @@ public class TML2Avatar { } } // Put AvatarPragmaAuthenticity pragmas at the end of the list. - List<AvatarPragma> avPragmasToMove = new ArrayList<AvatarPragma>(); - for (int indexAvPragmas=0; indexAvPragmas < avPragmas.size(); indexAvPragmas++){ - AvatarPragma avPragma = avPragmas.get(indexAvPragmas); + List<AvatarPragma> avPragmasToMove = new ArrayList<>(); + for (AvatarPragma avPragma : avPragmas) { if (avPragma instanceof AvatarPragmaAuthenticity) { avPragmasToMove.add(avPragma); } @@ -2332,7 +2333,7 @@ public class TML2Avatar { taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); LinkedList<HwCommunicationNode> path = tmlmap.findNodesForElement(channel); //TraceManager.addDev("CHAN checking basic channel " + channel.getName() + " path size: " + path.size()); - if (path.size() != 0) { + if (!path.isEmpty()) { ar.setPrivate(true); for (HwCommunicationNode node : path) { //TraceManager.addDev("CHAN\t Element of path: " + node.getName()); @@ -2345,7 +2346,7 @@ public class TML2Avatar { } } } else { - if (channel.originalOriginTasks.size() == 0) { + if (channel.originalOriginTasks.isEmpty()) { ar.setPrivate(originDestMap.get(channel.getOriginTask().getName() + "__" + channel.getDestinationTask().getName()) == 1); } else { //System.out.println("complex channel " + channel.getName()); @@ -2381,64 +2382,27 @@ public class TML2Avatar { } //Find in signal - List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>(); + List<AvatarSignal> sig1 = new ArrayList<>(); //Sig1 contains IN Signals, Sig2 contains OUT signals sig1.add(signalInMap.get(channel.getName())); - List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>(); + List<AvatarSignal> sig2 = new ArrayList<>(); sig2.add(signalOutMap.get(channel.getName())); - for (AvatarSignal sig : signals) { - if (sig.getInOut() == AvatarSignal.IN) { - String name = sig.getName(); - if (name.equals(getName(channel.getName()))) { - // sig1.add(sig); - } - } - } //Find out signal - for (AvatarSignal sig : signals) { - if (sig.getInOut() == AvatarSignal.OUT) { - String name = sig.getName(); - if (name.equals(channel.getOriginPort().getName())) { - // sig2.add(sig); - } - } - } - //System.out.println("size " + sig1.size() + " " + sig2.size()); - if (sig1.size() == 0) { - sig1.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.IN, null)); - } - if (sig2.size() == 0) { - sig2.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.OUT, null)); - } - if (sig1.size() == 1 && sig2.size() == 1) { - if (channel.getType() == TMLChannel.NBRNBW && mc) { - AvatarSignal read = fifo.getSignalByName("readSignal"); - - ar.block2 = fifo; - //Set IN signal with read - ar.addSignals(sig1.get(0), read); - AvatarRelation ar2 = new AvatarRelation(channel.getName() + "2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - AvatarSignal write = fifo.getSignalByName("writeSignal"); - //set OUT signal with write - ar2.addSignals(write, sig2.get(0)); - // System.out.println("Set " + sig2.get(0) + " and write"); - ar2.setAsynchronous(false); - avspec.addRelation(ar2); - } else { - ar.addSignals(sig2.get(0), sig1.get(0)); - } + if (channel.getType() == TMLChannel.NBRNBW && mc) { + AvatarSignal read = fifo.getSignalByName("readSignal"); + + ar.block2 = fifo; + //Set IN signal with read + ar.addSignals(sig1.get(0), read); + AvatarRelation ar2 = new AvatarRelation(channel.getName() + "2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); + AvatarSignal write = fifo.getSignalByName("writeSignal"); + //set OUT signal with write + ar2.addSignals(write, sig2.get(0)); + // System.out.println("Set " + sig2.get(0) + " and write"); + ar2.setAsynchronous(false); + avspec.addRelation(ar2); } else { - //Create relation if it does not exist - if (top.getSignalByName(getName(channel.getName()) + "in") == null) { - AvatarRelation relation = new AvatarRelation(channel.getName(), top, top, channel.getReferenceObject()); - AvatarSignal s1 = new AvatarSignal(getName(channel.getName()) + "in", AvatarSignal.IN, null); - AvatarSignal s2 = new AvatarSignal(getName(channel.getName()) + "out", AvatarSignal.OUT, null); - top.addSignal(s1); - top.addSignal(s2); - relation.addSignals(s2, s1); - avspec.addRelation(relation); - // System.out.println("Failure to match signals for TMLChannel "+ channel.getName()); - } + ar.addSignals(sig2.get(0), sig1.get(0)); } avspec.addRelation(ar); } else { @@ -2456,8 +2420,8 @@ public class TML2Avatar { AvatarRelation ar = new AvatarRelation(channel.getName(), taskBlockMap.get(t1), taskBlockMap.get(t2), channel.getReferenceObject()); ar.setPrivate(originDestMap.get(t1.getName() + "__" + t2.getName()) == 1); //Find in signal - List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>(); - List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>(); + List<AvatarSignal> sig1 = new ArrayList<>(); + List<AvatarSignal> sig2 = new ArrayList<>(); for (AvatarSignal sig : signals) { if (sig.getInOut() == AvatarSignal.IN) { String name = sig.getName(); @@ -2475,16 +2439,16 @@ public class TML2Avatar { } } } - if (sig1.size() == 0) { + if (sig1.isEmpty()) { sig1.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.IN, null)); } - if (sig2.size() == 0) { + if (sig2.isEmpty()) { sig2.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.OUT, null)); } if (sig1.size() == 1 && sig2.size() == 1) { ar.addSignals(sig2.get(0), sig1.get(0)); } else { - System.out.println("Failure to match signals for TMLChannel " + channel.getName() + " between " + t1.getName() + " and " + t2.getName()); + TraceManager.addDev("Failure to match signals for TMLChannel " + channel.getName() + " between " + t1.getName() + " and " + t2.getName()); } avspec.addRelation(ar); } @@ -2495,8 +2459,8 @@ public class TML2Avatar { for (TMLTask t1 : request.getOriginTasks()) { AvatarRelation ar = new AvatarRelation(request.getName(), taskBlockMap.get(t1), taskBlockMap.get(request.getDestinationTask()), request.getReferenceObject()); ar.setPrivate(originDestMap.get(t1.getName() + "__" + request.getDestinationTask().getName()) == 1); - List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>(); - List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>(); + List<AvatarSignal> sig1 = new ArrayList<>(); + List<AvatarSignal> sig2 = new ArrayList<>(); for (AvatarSignal sig : signals) { if (sig.getInOut() == AvatarSignal.IN) { String name = sig.getName(); @@ -2516,17 +2480,17 @@ public class TML2Avatar { } } } - if (sig1.size() == 0) { + if (sig1.isEmpty()) { sig1.add(new AvatarSignal(getName(request.getName()), AvatarSignal.IN, null)); } - if (sig2.size() == 0) { + if (sig2.isEmpty()) { sig2.add(new AvatarSignal(getName(request.getName()), AvatarSignal.OUT, null)); } if (sig1.size() == 1 && sig2.size() == 1) { ar.addSignals(sig2.get(0), sig1.get(0)); } else { //Throw error - System.out.println("Could not match for " + request.getName()); + TraceManager.addDev("Could not match for " + request.getName()); } ar.setAsynchronous(false); @@ -2565,7 +2529,7 @@ public class TML2Avatar { //check that all signals are put in relations AvatarRelation ar = avspec.getAvatarRelationWithSignal(sig); if (ar == null) { - System.out.println("missing relation for " + sig.getName()); + TraceManager.addDev("missing relation for " + sig.getName()); } } //Check if we matched up all signals @@ -2585,7 +2549,7 @@ public class TML2Avatar { AvatarBlock b = taskBlockMap.get(taskPattern); AvatarAttribute attrib = b.getAvatarAttributeWithName("key_" + sp.getName()); if (attrib != null) { - LinkedList<AvatarAttribute> arguments = new LinkedList<AvatarAttribute>(); + LinkedList<AvatarAttribute> arguments = new LinkedList<>(); arguments.add(attrib); avspec.addPragma(new AvatarPragmaPublic("#Public " + b.getName() + "." + attrib.getName(), null, arguments)); } @@ -2593,9 +2557,9 @@ public class TML2Avatar { } } for (SecurityPattern sp : pubKeys.keySet()) { - if (pubKeys.get(sp).size() != 0) { + if (!pubKeys.get(sp).isEmpty()) { String keys = ""; - List<String> pubKeyNames = new ArrayList<String>(); + List<String> pubKeyNames = new ArrayList<>(); for (AvatarAttribute key : pubKeys.get(sp)) { if (!pubKeyNames.contains(key.getBlock().getName() + "." + key.getName())) { keys = keys + " " + key.getBlock().getName() + "." + key.getName(); @@ -2639,7 +2603,7 @@ public class TML2Avatar { } } - public void distributeKeys() { + private void distributeKeys() { List<TMLTask> tasks = tmlmap.getTMLModeling().getTasks(); for (TMLTask t : accessKeys.keySet()) { AvatarBlock b = taskBlockMap.get(t); @@ -2649,7 +2613,7 @@ public class TML2Avatar { if (symKeys.containsKey(sp)) { symKeys.get(sp).add(key); } else { - LinkedList<AvatarAttribute> tmp = new LinkedList<AvatarAttribute>(); + LinkedList<AvatarAttribute> tmp = new LinkedList<>(); tmp.add(key); symKeys.put(sp, tmp); } @@ -2665,7 +2629,7 @@ public class TML2Avatar { if (pubKeys.containsKey(sp)) { pubKeys.get(sp).add(pubkey); } else { - LinkedList<AvatarAttribute> tmp = new LinkedList<AvatarAttribute>(); + LinkedList<AvatarAttribute> tmp = new LinkedList<>(); tmp.add(pubkey); pubKeys.put(sp, tmp); } @@ -2684,7 +2648,7 @@ public class TML2Avatar { } - public AvatarBlock createFifo(String name) { + private AvatarBlock createFifo(String name) { AvatarBlock fifo = new AvatarBlock("FIFO__FIFO" + name, avspec, null); AvatarState root = new AvatarState("root", null, fifo, false, false); AvatarSignal read = new AvatarSignal("readSignal", AvatarSignal.IN, null); @@ -2731,12 +2695,7 @@ public class TML2Avatar { return fifo; } - - public AvatarSpecification convertToSecurityType(AvatarSpecification spec) { - return spec; - } - - public AvatarType getAvatarType(TMLType p) { + private AvatarType getAvatarType(TMLType p) { switch (p.getType()) { case TMLType.NATURAL: return AvatarType.INTEGER; @@ -2746,7 +2705,7 @@ public class TML2Avatar { return AvatarType.UNDEFINED; } - public String getNameReworked(String name, int index) { + private String getNameReworked(String name, int index) { String[] split = name.split("__"); if (split.length > index) { return split[index];