diff --git a/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java b/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java index 3865b9851d0..9e111e1784c 100644 --- a/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java +++ b/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java @@ -606,12 +606,12 @@ private boolean clearEntriesForRealtimeAddedTrips(String feedId) { } /** - * Add the patterns to the stop index, only if they come from a modified pattern + * Add patterns to the stop index for patterns created by realtime updaters. + * This ensures that realtime-added trips (like SIRI ET ExtraJourneys) appear in + * departure board queries at stops. */ private void addPatternToIndex(TripPattern tripPattern) { if (tripPattern.isCreatedByRealtimeUpdater()) { - //TODO - SIRI: Add pattern to index? - for (var stop : tripPattern.getStops()) { patternsForStop.put(stop, tripPattern); } diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/AddedTripBuilder.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/AddedTripBuilder.java index bb775dd2e7d..b1a33965e54 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/AddedTripBuilder.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/AddedTripBuilder.java @@ -233,6 +233,7 @@ Result build() { .withNetexSubmode(trip.getNetexSubMode()) .withStopPattern(stopPattern) .withScheduledTimeTableBuilder(builder -> builder.addTripTimes(tripTimes)) + .withCreatedByRealtimeUpdater(true) .build(); RealTimeTripTimesBuilder builder = tripTimes.createRealTimeFromScheduledTimes(); diff --git a/application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraJourneyTest.java b/application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraJourneyTest.java index 6aebbb4e26d..805f324e6dc 100644 --- a/application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraJourneyTest.java +++ b/application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraJourneyTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.opentripplanner.transit.model._data.FeedScopedIdForTestFactory.id; import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertFailure; @@ -79,6 +80,20 @@ void testAddJourneyWithExistingRoute() { transitService.findPatterns(route).size(), "The added trip should use a new pattern for this route" ); + + // Verify ExtraJourney appears in departure board (#7008) + var expectedPattern = transitService.findPattern(trip); + var patternsAtStopC = transitService.findPatterns(STOP_C, true); + assertTrue( + patternsAtStopC.contains(expectedPattern), + "ExtraJourney pattern should appear in patterns for stop C (departure board)" + ); + + var patternsAtStopD = transitService.findPatterns(STOP_D, true); + assertTrue( + patternsAtStopD.contains(expectedPattern), + "ExtraJourney pattern should appear in patterns for stop D (arrival board)" + ); } @Test