diff --git a/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar b/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar index fc22eaaf211d9e6f1e912a7f23303c2ced7c0a87..798daf04d03aa19cc356290eb7259bc51945a4e6 100644 Binary files a/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar and b/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar differ diff --git a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag index 98f2240d55a8d0ec2714149151e02ca6930a653c..6cb544888869d39635447756027d24020ba28bda 100644 --- a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag +++ b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag @@ -1,3 +1,5 @@ +import java.util.HashSet; + aspect TreeNavigation { // collections of things @@ -215,29 +217,25 @@ aspect TreeNavigation { return getTarget().getSwitch(); } - syn Collection<Sensor> TrackElement.monitoredBy() { - return getRoot().monitoredByMap().get(this.id()); - } + coll ArrayList<Sensor> TrackElement.monitoredBy() [new ArrayList()] with add; - syn Map<Integer,Set<Sensor>> RailwayContainer.monitoredByMap() { - Map<Integer,Set<Sensor>> sensorMap = new java.util.HashMap<>(); + Sensor contributes this + to TrackElement.monitoredBy() + for each monitoredElements(); - // fill the keys - for (Region region: getRegionList()) { - for (TrackElement trackElement: region.getTrackElementList()) { - sensorMap.put(trackElement.id(), new java.util.HashSet<>()); - } - } + RailwayContainer contributes { + // Explicitly traverses regions, skips routes. + getRegionList().collectContributions(); + } to TrackElement.monitoredBy(); - // update the values - for (Sensor sensor : sensors()) { - for (TrackElementRef trackElementRef : sensor.getMonitoredElementList()) { - sensorMap.get(trackElementRef.getValue()).add(sensor); - } - } + Region contributes { + // Explicitly traverses sensors, skips elements. + getSensorList().collectContributions(); + } to TrackElement.monitoredBy(); - return sensorMap; - } + Sensor contributes { + // Stop at sensor, only contains refs. + } to TrackElement.monitoredBy(); syn Collection<Route> Sensor.requiringRoutes() { return getRoot().requiringRoutesMap().get(this.id());