diff --git a/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar b/trainbenchmark-tool-jastadd-base/libs/jastadd2.jar index fc22eaaf211d9e6f1e912a7f23303c2ced7c0a87..586cb20c7d1d5a80ca2b62878a93e7db31bffee5 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 d7056b768b2deea400f5fab201c5b84a4f58b2e5..8843e2009fdb754a8847529e0c732db3d4343943 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 @@ -214,29 +216,25 @@ aspect TreeNavigation { return getTarget().asSwitch(); } - syn Collection<Sensor> TrackElement.monitoringSensors() { - return getRoot().monitoringSensorsMap().get(this.id()); - } + coll ArrayList<Sensor> TrackElement.monitoringSensors() [new ArrayList()] with add; - syn Map<Integer,Set<Sensor>> RailwayContainer.monitoringSensorsMap() { - Map<Integer,Set<Sensor>> sensorMap = new java.util.HashMap<Integer,Set<Sensor>>(); + Sensor contributes this + to TrackElement.monitoringSensors() + 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.monitoringSensors(); - // update the values - for (Sensor sensor : sensors()) { - for (Ref teRef : sensor.getMonitoredElementList()) { - sensorMap.get(teRef.getValue()).add(sensor); - } - } + Region contributes { + // Explicitly traverses sensors, skips elements. + getSensorList().collectContributions(); + } to TrackElement.monitoringSensors(); - return sensorMap; - } + Sensor contributes { + // Stop at sensor, only contains refs. + } to TrackElement.monitoringSensors(); syn Collection<Route> Sensor.requiringRoutes() { return getRoot().requiringRoutesMap().get(this.id());