diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java b/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java index e101a48a9a86e45dcac178dbd00a3774246d41f5..14be6d3b982c1aea69f2122863bac963fdf33909 100644 --- a/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java +++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java @@ -21,20 +21,18 @@ public class JastaddTransformationRepairConnectedSegments<TJastaddDriver extends final Segment segment2 = match.getSegment2(); + java.util.List<Sensor> sensorsToRemoveSegmentFrom = new java.util.ArrayList<>(); + // delete all references to segment2 (monitoring sensors and other segments connecting to it) for (Region region : driver.getModel().getRegionList()) { for (Sensor sensor : region.getSensorList()) { - for (int i = sensor.getMonitoredElementList().getNumChild() - 1; i >= 0; i--) { - if (sensor.getMonitoredElement(i) == segment2) { - sensor.getMonitoredElement(i).removeSelf(); - } + if (sensor.getMonitoredElementList().contains(segment2)) { + sensor.removeMonitoredElement(segment2); } } for (TrackElement element : region.getTrackElementList()) { - for (int i = element.getConnectsToList().getNumChild() - 1; i >= 0; i--) { - if (element.getConnectsTo(i) == segment2) { - element.getConnectsTo(i).removeSelf(); - } + if (element.getConnectsToList().contains(segment2)) { + element.removeConnectsTo(segment2); } } }