Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
8fdd093
process more station entrances
miklcct Jan 6, 2026
e92515d
way should be split into segments at station entrance
miklcct Jan 13, 2026
fa87870
Merge branch 'dev-2.x' into entrance
miklcct Jan 15, 2026
261a7df
add support for transit group priority in gtfs api
hjvuor Mar 23, 2026
af171e4
add documentation for relaxTransitGroupPriority
hjvuor Mar 23, 2026
4852c1e
add a test for relaxTransitGroupPriority
hjvuor Mar 24, 2026
1adca2f
refactor mapping to allow partial values and add a test case
hjvuor Mar 24, 2026
af3cb37
Refactor so NearbyStop has a stopId rather than a stop
optionsome Mar 24, 2026
04dce7f
Merge remote-tracking branch 'upstream/dev-2.x' into nearby-stop-refa…
optionsome Mar 27, 2026
833a385
Apply review feedback
optionsome Mar 30, 2026
e4fd80c
Defer State.reverse() from AccessEgressMapper to GraphPath construction
vpaturet Mar 25, 2026
cace7b6
Document unreversed egress State contract and add direction-independe…
vpaturet Mar 27, 2026
dcdea17
Rename last state to final state for clarity
vpaturet Mar 30, 2026
d64b5b6
Update application/src/main/java/org/opentripplanner/routing/algorith…
vpaturet Mar 31, 2026
9b7a879
Update application/src/main/resources/org/opentripplanner/apis/gtfs/s…
hjvuor Mar 31, 2026
26444fc
Add TODOs
optionsome Mar 31, 2026
a8bd24c
Merge remote-tracking branch 'upstream/dev-2.x' into nearby-stop-refa…
optionsome Mar 31, 2026
f87fe6f
generalize relaxCostFunctionInput graphql type
hjvuor Apr 1, 2026
271724e
inject default values for transit group relax
hjvuor Apr 1, 2026
5670528
Merge tag 'v2.9.0' into entrance
miklcct Apr 1, 2026
f73ba00
Apply review suggestions
vpaturet Apr 7, 2026
c23e7c5
Add NO_DIRECT_MODE_CONNECTION routing error code for direct-only sear…
vpaturet Apr 1, 2026
25ce467
Add deduplication of `OsmBoardingLocationVertex` for shared platform …
Apr 7, 2026
bd2ed16
Refactor `OsmBoardingLocationsModule` for simplicity
Apr 7, 2026
578e686
Add dedicated error message for no direct mode connection
vpaturet Apr 8, 2026
3d8234e
add test for OsmNode::isEntrance
miklcct Apr 8, 2026
29b6550
add test for marking entrances in stop area relations as public trans…
miklcct Apr 8, 2026
ef396ed
refactor: Introduce AbstractFetchAccessEgress and use in TransitRouter
sigtot Apr 8, 2026
31ef07b
refactor: Move unused TransitRouter deps into AbstractFetchAccessEgress
sigtot Apr 9, 2026
514f5f9
Extend deduplication of `OsmBoardingLocationVertex` to all platform t…
Apr 13, 2026
97d0b57
Merge remote-tracking branch 'upstream/dev-2.x' into nearby-stop-refa…
optionsome Apr 13, 2026
e1f9f6b
Change stop comparison
optionsome Apr 13, 2026
668ddba
add test for marking entrances in stop area relations as public trans…
miklcct Apr 13, 2026
e1db712
Fix cost mismatch by anchoring pattern-ride pareto cost to last stop
t2gran Apr 9, 2026
235ec92
Merge remote-tracking branch 'otp/dev-2.x' into cost-missmatch-2
t2gran Apr 14, 2026
3b65bee
review: Update visibility and improve documentation in cost calculati…
t2gran Apr 14, 2026
581d756
Make state immutable
leonardehrenfried Apr 1, 2026
e2ecb51
Make tests pass
leonardehrenfried Apr 1, 2026
69d5940
Remove unnecessary checks for defective traversal
leonardehrenfried Apr 1, 2026
e37b738
Reduce cloning
leonardehrenfried Apr 1, 2026
bcfa89a
Remove original
leonardehrenfried Apr 1, 2026
a4171ed
Reduce builder churn
leonardehrenfried Apr 2, 2026
a008f62
Optimize comparison of street vertex
leonardehrenfried Apr 2, 2026
decb39f
Throw exceptions for obviously incorrect data
leonardehrenfried Apr 13, 2026
6ffa0ae
Make class final
leonardehrenfried Apr 14, 2026
bf4a2ca
Update visibility modifier
leonardehrenfried Apr 14, 2026
9bca75f
review: Use transit-duration over transit-time to improve readability
t2gran Apr 14, 2026
96ddd93
Use equals for all stop comparisons in DirectTransferGenerator
optionsome Apr 14, 2026
f292fe9
Merge remote-tracking branch 'opentripplanner/dev-2.x' into defer-sta…
vpaturet Apr 15, 2026
d1b3a59
Remove GraphVisualizer
leonardehrenfried Apr 14, 2026
48bec5e
Remove inefficient methods from ShortestPathTree
leonardehrenfried Apr 14, 2026
b37c4e3
Remove empty files
leonardehrenfried Apr 14, 2026
249b641
Remove imports
leonardehrenfried Apr 14, 2026
16e3bff
Remove unused method
leonardehrenfried Apr 15, 2026
ef78767
Add startupRetryPeriod to VehicleRentalUpdaterConfig.
VillePihlava Apr 10, 2026
0ec5beb
Remove skip condition for already-linked transit stops in `OsmBoardin…
Apr 15, 2026
f630a9a
Add application warmup feature to run routing queries during startup
vpaturet Apr 16, 2026
d8ad9ac
Use a set in OsmDatabase to mark entrances in stop areas instead of m…
miklcct Apr 16, 2026
3013b01
extract railway station entrance tags constant
miklcct Apr 16, 2026
18016c3
make OsmNodeTest.isEntrance a parameterized test
miklcct Apr 16, 2026
9838893
Add API GraphQL convention for small input Value Objects
t2gran Apr 16, 2026
5bce55b
Fix typos and enhance clarity in API GraphQL design doc
t2gran Apr 16, 2026
76a6f72
Improve SpeedTest warm-up
t2gran Apr 16, 2026
8cae063
Merge pull request #7465 from entur/defer-state-reverse-in-access-egress
vpaturet Apr 17, 2026
10f789b
Remove TimetableRepositoryForTest.id
leonardehrenfried Apr 17, 2026
1482ca9
Move factory to test fixtures
leonardehrenfried Apr 17, 2026
11e69a8
Change VehicleRentalUpdater error handling.
VillePihlava Apr 17, 2026
e244ef9
Set all default values to zero.
VillePihlava Apr 17, 2026
4da9ab4
Change Duration.ofSeconds(0) to Duration.ZERO.
VillePihlava Apr 17, 2026
616a08c
Remove CapacityFilter, capacity is checked per-position during insertion
hakoncarlsen Mar 27, 2026
fee5f59
Changed passengerDelta to onboardCount and availableSeats to totalCap…
hakoncarlsen Mar 27, 2026
94041bb
Extract capacity and occupancy in carpooling trip in carpooling trips…
hakoncarlsen Mar 27, 2026
fb4dc0a
set default total capacity of test carpooling trips to 5
hakoncarlsen Mar 30, 2026
0f02b61
simplify carpoolTripTestData, fixed bug with arrivalTime getting valu…
hakoncarlsen Mar 30, 2026
bd1e6c9
deletes type CarpoolStopType, as it is no longer in use
hakoncarlsen Apr 10, 2026
2425240
Move DEFAULT_TOTAL_CAPACITY and DEFAULT_ONBOARD_COUNT to CarpoolTrip …
hakoncarlsen Apr 16, 2026
a0ae19e
move the entrances in stop area field to osm database so we don't nee…
miklcct Apr 17, 2026
22338e9
Doc review: Update pagination and input type descriptions
t2gran Apr 17, 2026
92800f0
Merge pull request #7535 from leonardehrenfried/test-id
leonardehrenfried Apr 17, 2026
b880aba
Merge pull request #7531 from opentripplanner/doc-input-vo
sigtot Apr 17, 2026
697faf2
change station entrance test to be a module test
miklcct Apr 17, 2026
5c30223
refactor: Rename to AccessEgressFetcher and add simple javadoc
sigtot Apr 17, 2026
d2cda8b
docs: Add more extensive javadoc to AccessEgressFetcher constructor
sigtot Apr 17, 2026
197f992
Move warmup feature into its own top-level package
vpaturet Apr 17, 2026
8f24b93
Make WarmupParameters a record produced by WarmupConfig
vpaturet Apr 17, 2026
901db29
Merge remote-tracking branch 'otp/dev-2.x' into extract-access-egress
sigtot Apr 19, 2026
20709a0
docs: Apply PR feedback for AccessEgressFetcher
sigtot Apr 19, 2026
fffc88f
Merge pull request #7534 from entur/improve-speedtest-warmup
t2gran Apr 20, 2026
49e315b
Add changelog entry for #7534 [ci skip]
Apr 20, 2026
32a7c03
Merge pull request #7514 from entur/carpool-capacity-changes
hakoncarlsen Apr 20, 2026
53b6236
Remove unused method
leonardehrenfried Apr 20, 2026
2c6314a
review: Improve documentation and clarity in TripScheduleWithOffset a…
t2gran Apr 20, 2026
80faa14
Merge pull request #7526 from leonardehrenfried/remove-visualizer
leonardehrenfried Apr 20, 2026
3697c1c
Add changelog entry for #7526 [ci skip]
Apr 20, 2026
9b6c672
Speed up tag lookup
leonardehrenfried Apr 18, 2026
6d26463
Merge remote-tracking branch 'opentripplanner/dev-2.x' into jvm-warmu…
vpaturet Apr 20, 2026
db98524
Merge pull request #7504 from entur/cost-missmatch-2
t2gran Apr 20, 2026
4af3536
Apply review feedback: DRY coordinate parsing and shorten WarmupParam…
vpaturet Apr 20, 2026
8daef5d
Add changelog entry for #7504 [ci skip]
Apr 20, 2026
160d618
removed StopLocation implementation from CarpoolStop
hakoncarlsen Apr 13, 2026
d427eec
removed sequenceNumber from CarpoolStop
hakoncarlsen Apr 13, 2026
7bec949
deviation budget of carpoolingTrip is now per stop instead of per trip
hakoncarlsen Apr 9, 2026
0c92301
extracting deviation budget of carpooling trips from siri
hakoncarlsen Apr 13, 2026
a393571
using pickupTime from car preferences to calculate intermediate stop …
hakoncarlsen Apr 14, 2026
a330e59
changed CarpoolGraphPathBuilder in tests to avoid rounding errors
hakoncarlsen Apr 15, 2026
25e2e63
removed parameters durationBetweenOriginAndDestination and totalDuration
hakoncarlsen Apr 15, 2026
a042f8f
reusing satisfiesConstraints in PassengerDelayConstraints in passesBe…
hakoncarlsen Apr 16, 2026
ee9d8f4
DefaultCarpoolingServiceDirectTest: fix of problem with resultItinera…
hakoncarlsen Apr 17, 2026
d334ed2
fixed duplicate call to GeometryUtils in CarpoolItineraryMapper
hakoncarlsen Apr 20, 2026
613eff8
CarpoolItineraryMapper uses driver's real pickup time, dropping max()…
hakoncarlsen Apr 20, 2026
5b17b00
Merge remote-tracking branch 'upstream/dev-2.x' into nearby-stop-refa…
optionsome Apr 20, 2026
0506f8f
Remove route names propagation
leonardehrenfried Apr 21, 2026
f858f7f
Simplify code
leonardehrenfried Apr 21, 2026
7a7b108
docs: Apply PR review rewording AccessEgressFetcher javadoc
sigtot Apr 21, 2026
bfe7115
Apply review feedback: package layout, strategy naming, and log forma…
vpaturet Apr 21, 2026
a7611e7
Merge pull request #7494 from entur/add-no-direct-mode-connection-err…
vpaturet Apr 21, 2026
ae0b58e
Upgrade debug client to version 2026/04/2026-04-21T10:34
Apr 21, 2026
63156bb
Add changelog entry for #7494 [ci skip]
Apr 21, 2026
9f46b33
Merge pull request #7508 from HBTGmbH/deduplicate-boardinglocations-f…
MaxGosau Apr 21, 2026
5821994
Add changelog entry for #7508 [ci skip]
Apr 21, 2026
5d5ca84
simplify tests
miklcct Apr 21, 2026
ba68305
add GraphFetcher in application test fixture
miklcct Apr 21, 2026
37e4105
Apply review feedback
leonardehrenfried Apr 21, 2026
a918793
Update application/src/main/java/org/opentripplanner/osm/model/OsmEnt…
leonardehrenfried Apr 21, 2026
decc648
apply review suggestions
miklcct Apr 21, 2026
80aeb2d
Fix format
leonardehrenfried Apr 21, 2026
c7969c9
Merge pull request #7505 from entur/extract-access-egress
sigtot Apr 22, 2026
e486801
Add flex routes to FlexIndex
leonardehrenfried Apr 20, 2026
cdc57f4
Add tests for flex index for routes
leonardehrenfried Apr 21, 2026
4955fce
Move code into transit service
leonardehrenfried Apr 22, 2026
e1b1b14
config: Change default fare type to 'off'
t2gran Apr 22, 2026
14627cb
Add Javadoc
leonardehrenfried Apr 22, 2026
6ebe87b
make LinearCostFunctionInput fields required
hjvuor Apr 22, 2026
b7bd62e
Improve javadoc
leonardehrenfried Apr 22, 2026
f09ef3e
Merge branch 'dev-2.x' into gtfs-group-priority
hjvuor Apr 22, 2026
5ee0710
Fix computation of time delta
leonardehrenfried Apr 22, 2026
5d78efd
Use edge instead of state
leonardehrenfried Apr 22, 2026
613a1e9
Fix formatting
leonardehrenfried Apr 22, 2026
dff7635
Merge remote-tracking branch 'upstream/dev-2.x' into immutable-state
leonardehrenfried Apr 22, 2026
4b58e11
Remove Hamburg speed test config [ci skip]
leonardehrenfried Apr 22, 2026
1f43aab
no longer sorting or limiting the number of itineraries in routeDirec…
hakoncarlsen Apr 22, 2026
a5da3e1
boarding time at pickup stop of carpooling trips is now part of getPa…
hakoncarlsen Apr 22, 2026
87dc018
Refactor: Better encapsulation in GenericLocation
habrahamsson-skanetrafiken Apr 22, 2026
3c0759a
Merge pull request #7532 from entur/carpooltrip-deviation-budget-changes
hakoncarlsen Apr 22, 2026
0da83fa
removed directional filtering from carpooling
hakoncarlsen Apr 20, 2026
b781b37
Use coordinate internally in GenericLocation
habrahamsson-skanetrafiken Apr 22, 2026
5335537
Merge pull request #7536 from leonardehrenfried/barrier-vertex
leonardehrenfried Apr 22, 2026
113e5c4
Add changelog entry for #7536 [ci skip]
Apr 22, 2026
4a3010b
Update dependency org.apache.httpcomponents.client5:httpclient5 to v5…
renovate[bot] Apr 22, 2026
7b75567
Merge branch 'dev-2.x' into entrance
miklcct Apr 22, 2026
aa6b644
update version of includeOsmStationEntrances to V2_10
miklcct Apr 22, 2026
a3a104f
Update Maven plugins
renovate[bot] Apr 23, 2026
5d5dd75
Update dependency com.graphql-java:graphql-java to v26
renovate[bot] Apr 23, 2026
6f9c242
Fix Javadoc
leonardehrenfried Apr 23, 2026
38b3558
Fix Javadoc
leonardehrenfried Apr 23, 2026
4b5beed
Merge pull request #7170 from Aubin-MaaS/entrance
VillePihlava Apr 23, 2026
6c5c74d
Add changelog entry for #7170 [ci skip]
Apr 23, 2026
3680b4c
Disallow empty GenericLocation
habrahamsson-skanetrafiken Apr 23, 2026
71aeca1
refactor: Remove a factory method
habrahamsson-skanetrafiken Apr 23, 2026
0ba5a00
Remove isSpecified method
habrahamsson-skanetrafiken Apr 23, 2026
02e347a
Move comment
habrahamsson-skanetrafiken Apr 23, 2026
dde1fbd
Fix Javadoc
leonardehrenfried Apr 23, 2026
e3e8e9a
Merge pull request #7550 from opentripplanner/renovate/maven-plugins
leonardehrenfried Apr 23, 2026
2bb4223
Update dependency io.github.git-commit-id:git-commit-id-maven-plugin …
renovate[bot] Apr 23, 2026
f9b7776
Update to latest changes
leonardehrenfried Apr 23, 2026
c4dc4ce
Merge pull request #7552 from opentripplanner/renovate/major-maven-pl…
renovate[bot] Apr 23, 2026
399bf1d
Merge remote-tracking branch 'upstream/dev-2.x' into nearby-stop-refa…
optionsome Apr 23, 2026
c2588a3
refactor: Extract RequestPreProcessor from RoutingWorker
sigtot Apr 23, 2026
98093b0
fix: map defaults into relaxTransitGroupPriority instead of the input…
hjvuor Apr 23, 2026
f19bf15
chore: add one paragraph of documentation
hjvuor Apr 23, 2026
a4269db
Fix formatting
habrahamsson-skanetrafiken Apr 23, 2026
7960c8e
Skip transit search when no access or egress mode is set
vpaturet Apr 22, 2026
b4235e3
Move cannotReachTransit predicate to RouteRequest
vpaturet Apr 23, 2026
7ecc0e6
Fold transit().enabled() check into RouteRequest.cannotReachTransit
vpaturet Apr 23, 2026
9b9a5dd
Update Javadoc
vpaturet Apr 23, 2026
38b5d31
Merge pull request #7509 from entur/jvm-warmup-during-startup
vpaturet Apr 23, 2026
5fd572e
config: Rename fare service config from "default" to "gtfs"
t2gran Apr 23, 2026
4f3d8a8
refactor: Rename DefaultFareServiceFactory --> GtfsFareServiceFactory
t2gran Apr 23, 2026
36a67bf
Update dependency org.openrewrite.recipe:rewrite-static-analysis to v…
renovate[bot] Apr 23, 2026
ec00302
Add changelog entry for #7509 [ci skip]
Apr 23, 2026
2e7c4aa
Merge pull request #7556 from opentripplanner/renovate/maven-plugins
renovate[bot] Apr 23, 2026
dac2088
refactor: Simplify dominance in ParetoSet#add
t2gran Apr 23, 2026
9ae7ab6
refactor: Simplify dominance in ParetoSet#qualify
t2gran Apr 23, 2026
f93dee4
refactor: Enhance Pareto dominance comparison logic and add tests
t2gran Apr 23, 2026
affc79f
refactor: Use enum switch in ParetoSet
t2gran Apr 23, 2026
f99952b
doc: Improve JavaDoc for ParetoComparator and ParetoDominance
t2gran Apr 23, 2026
cec3a7d
chore: remove unnecessary test and modify docstring
hjvuor Apr 24, 2026
805b646
Merge pull request #7538 from entur/remove-directional-filtering-from…
hakoncarlsen Apr 24, 2026
e4b3259
Merge pull request #7463 from HSLdevcom/nearby-stop-refactor
optionsome Apr 24, 2026
e828da9
Merge pull request #7549 from opentripplanner/renovate/org.apache.htt…
leonardehrenfried Apr 24, 2026
bf36d05
Don't cast to an int
leonardehrenfried Apr 24, 2026
9224b03
Update dependency com.hivemq:hivemq-mqtt-client to v1.3.13
renovate[bot] Apr 25, 2026
5f600be
Merge remote-tracking branch 'upstream/dev-2.x' into flex-vector-stops
leonardehrenfried Apr 27, 2026
6f40e70
Merge pull request #7525 from HSLdevcom/add-connection-startup-timeout
VillePihlava Apr 27, 2026
3016092
Add changelog entry for #7525 [ci skip]
Apr 27, 2026
2fcf73c
Upgrade netex-java-model to 2.0.15.3
leonardehrenfried Apr 27, 2026
3c546f8
Update Gitter URL
leonardehrenfried Apr 27, 2026
539e3b7
Merge pull request #7562 from opentripplanner/renovate/hive-mqtt-client
leonardehrenfried Apr 27, 2026
651d010
Merge pull request #7451 from HSLdevcom/gtfs-group-priority
optionsome Apr 27, 2026
a287dba
Add changelog entry for #7451 [ci skip]
Apr 27, 2026
e8050c8
Address review comments
habrahamsson-skanetrafiken Apr 27, 2026
115ba9d
Merge pull request #7545 from entur/turn-fares-off
t2gran Apr 27, 2026
9d2dc12
Add changelog entry for #7545 [ci skip]
Apr 27, 2026
b2a46b4
Merge pull request #7563 from leonardehrenfried/netex-java
leonardehrenfried Apr 27, 2026
8f79184
Add changelog entry for #7563 [ci skip]
Apr 27, 2026
7d4cc7c
Merge pull request #7564 from leonardehrenfried/gitter
leonardehrenfried Apr 27, 2026
614d6fd
refactor: Move RequestPreProcessor new() into DefaultRoutingService ctor
sigtot Apr 27, 2026
8510c2b
Revert "Update Gitter URL" [ci skip]
leonardehrenfried Apr 28, 2026
d725aef
Merge pull request #7539 from ibi-group/remove-route-names
leonardehrenfried Apr 28, 2026
bf9515b
Add changelog entry for #7539 [ci skip]
Apr 28, 2026
5409ddc
Merge pull request #7519 from opentripplanner/immutable-state
leonardehrenfried Apr 28, 2026
93a96a4
Fix formatting [ci skip]
leonardehrenfried Apr 28, 2026
23c2af3
Merge pull request #7551 from opentripplanner/renovate/com.graphql-ja…
leonardehrenfried Apr 28, 2026
356a026
Apply suggestions from code review
t2gran Apr 28, 2026
74cc828
Split transit-enabled check back out of cannotReachTransit
vpaturet Apr 28, 2026
8fca289
Merge pull request #7553 from entur/extract-request-preprocessor
sigtot Apr 28, 2026
944ef38
review: Apply suggestions from code review
t2gran Apr 28, 2026
caa7ab7
doc: Update JavaDoc for ParetoDominance to clarify parameters
t2gran Apr 28, 2026
b878204
Merge pull request #7558 from entur/review_pareto_set
t2gran Apr 28, 2026
a609c23
Merge pull request #7555 from Skanetrafiken/h-generic-location-refactor
habrahamsson-skanetrafiken Apr 29, 2026
1250775
Merge remote-tracking branch 'opentripplanner/dev-2.x' into merge-dev…
vpaturet Apr 29, 2026
3970345
Merge pull request #7547 from entur/transit-router-skip-when-no-acces…
vpaturet Apr 29, 2026
6e26c46
Add changelog entry for #7547 [ci skip]
Apr 29, 2026
69adae6
Fix spelling of some config parameters in changelog
optionsome Apr 29, 2026
69990d8
Merge pull request #7542 from ibi-group/flex-vector-stops
leonardehrenfried Apr 29, 2026
3d12274
Merge remote-tracking branch 'upstream/dev-2.x' into upstream-merge-2…
leonardehrenfried Apr 29, 2026
3a32a37
Disable Atlanta smoke tests
leonardehrenfried Apr 29, 2026
63c3497
Configure fares in Denver and Portland
leonardehrenfried Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 0 additions & 6 deletions .github/workflows/performance-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,6 @@ jobs:

# extended locations that are run only after merging to dev-2.x

# Hamburg is disabled because of https://github.com/opentripplanner/OpenTripPlanner/issues/6430
# - location: hamburg # German city
# iterations: 1
# jfr-delay: "50s"
# profile: extended

- location: baden-wuerttemberg # German state of Baden-Württemberg: https://en.wikipedia.org/wiki/Baden-W%C3%BCrttemberg
iterations: 1
jfr-delay: "50s"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/smoke-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ jobs:
locations:
- name: seattle
sleep: 30
- name: atlanta
sleep: 15
#- name: atlanta
# sleep: 15
- name: houston
sleep: 30
- name: denver
Expand Down
12 changes: 3 additions & 9 deletions application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -296,12 +296,6 @@
<artifactId>onebusaway-gtfs</artifactId>
<version>11.2.2</version>
</dependency>
<!-- Processing is used for the debug GUI (though we could probably use just Java2D) -->
<dependency>
<groupId>org.processing</groupId>
<artifactId>core</artifactId>
<version>2.2.1</version>
</dependency>
<!-- Used in DegreeGridNEDTileSource to fetch tiles from Amazon S3 -->
<dependency>
<groupId>net.java.dev.jets3t</groupId>
Expand All @@ -323,7 +317,7 @@
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>25.0</version>
<version>26.0</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
Expand All @@ -333,7 +327,7 @@
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.6</version>
<version>5.6.1</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
Expand All @@ -349,7 +343,7 @@
<dependency>
<groupId>com.hivemq</groupId>
<artifactId>hivemq-mqtt-client</artifactId>
<version>1.3.12</version>
<version>1.3.13</version>
</dependency>
<dependency>
<groupId>io.github.ci-cmg</groupId>
Expand Down
4 changes: 2 additions & 2 deletions application/src/client/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<link rel="icon" type="image/svg+xml" href="/img/otp-logo.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OTP Debug</title>
<script type="module" crossorigin src="https://www.opentripplanner.org/debug-client-assets/2026/04/2026-04-13T19:04/assets/index-D2GqM7fO.js"></script>
<link rel="stylesheet" crossorigin href="https://www.opentripplanner.org/debug-client-assets/2026/04/2026-04-13T19:04/assets/index-BarhKzG9.css">
<script type="module" crossorigin src="https://www.opentripplanner.org/debug-client-assets/2026/04/2026-04-21T10:34/assets/index-DONfXEWF.js"></script>
<link rel="stylesheet" crossorigin href="https://www.opentripplanner.org/debug-client-assets/2026/04/2026-04-21T10:34/assets/index-BarhKzG9.css">
</head>
<body>
<div id="root"></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
import uk.org.siri.siri21.EstimatedVehicleJourney;
import uk.org.siri.siri21.NaturalLanguageStringStructure;
import uk.org.siri.siri21.OperatorRefStructure;
import uk.org.siri.siri21.PassengerCapacityStructure;
import uk.org.siri.siri21.StopAssignmentStructure;
import uk.org.siri.siri21.VehicleOccupancyStructure;

public class CarpoolEstimatedVehicleJourneyData {

Expand Down Expand Up @@ -174,6 +176,139 @@ static EstimatedCall forPolygon(String posList) {
return call;
}

public static EstimatedVehicleJourney journeyWithTotalCapacity(int capacity) {
var journey = minimalCompleteJourney();
for (var call : journey.getEstimatedCalls().getEstimatedCalls()) {
addTotalCapacity(call, capacity);
}
return journey;
}

public static EstimatedVehicleJourney journeyWithDifferentCapacitiesPerCall(
int firstCapacity,
int lastCapacity
) {
var journey = minimalCompleteJourney();
var calls = journey.getEstimatedCalls().getEstimatedCalls();
addTotalCapacity(calls.getFirst(), firstCapacity);
addTotalCapacity(calls.getLast(), lastCapacity);
return journey;
}

public static EstimatedVehicleJourney journeyWithOnboardCounts(int... onboardCounts) {
var journey = minimalCompleteJourney();
var calls = journey.getEstimatedCalls().getEstimatedCalls();
for (int i = 0; i < Math.min(onboardCounts.length, calls.size()); i++) {
addOnboardCount(calls.get(i), onboardCounts[i]);
}
return journey;
}

private static void addTotalCapacity(EstimatedCall call, int totalCapacity) {
var capacity = new PassengerCapacityStructure();
capacity.setTotalCapacity(BigInteger.valueOf(totalCapacity));
call.getExpectedDepartureCapacities().add(capacity);
}

public static EstimatedVehicleJourney journeyWithLatestExpectedArrivalTime(
int expectedArrivalMinutes,
int latestExpectedArrivalMinutes
) {
var journey = minimalCompleteJourney();
var lastStop = journey.getEstimatedCalls().getEstimatedCalls().getLast();
var base = lastStop.getAimedArrivalTime();
lastStop.setExpectedArrivalTime(base.plusMinutes(expectedArrivalMinutes));
lastStop.setLatestExpectedArrivalTime(base.plusMinutes(latestExpectedArrivalMinutes));
return journey;
}

public static EstimatedVehicleJourney journeyWithLatestExpectedArrivalTimeAimedOnly(
int latestExpectedArrivalMinutes
) {
var journey = minimalCompleteJourney();
var lastStop = journey.getEstimatedCalls().getEstimatedCalls().getLast();
var base = lastStop.getAimedArrivalTime();
lastStop.setExpectedArrivalTime(null);
lastStop.setLatestExpectedArrivalTime(base.plusMinutes(latestExpectedArrivalMinutes));
return journey;
}

/**
* Builds a 3-stop journey (origin, intermediate, destination) where the intermediate and
* destination stops each get their own {@code expectedArrivalTime} and
* {@code latestExpectedArrivalTime}, enabling assertions on per-stop deviation budgets.
* Arrival times are offset from {@code now} in minutes.
*/
public static EstimatedVehicleJourney journeyWithPerStopLatestExpectedArrivalTimes(
int intermediateExpectedArrivalMinutes,
int intermediateLatestExpectedArrivalMinutes,
int lastExpectedArrivalMinutes,
int lastLatestExpectedArrivalMinutes
) {
var base = ZonedDateTime.now();

var origin = forPoint(OSLO_EAST);
origin.setAimedDepartureTime(base);
addStopName(origin, "Origin");

var intermediate = createArrivalStop(
OSLO_NORTH,
"Intermediate",
base,
intermediateExpectedArrivalMinutes,
intermediateLatestExpectedArrivalMinutes
);
intermediate.setAimedDepartureTime(base.plusMinutes(intermediateExpectedArrivalMinutes));

var last = createArrivalStop(
OSLO_NORTH,
"Last",
base,
lastExpectedArrivalMinutes,
lastLatestExpectedArrivalMinutes
);

var journey = new EstimatedVehicleJourney();
var operator = new OperatorRefStructure();
operator.setValue("TESTOPERATOR");
journey.setEstimatedVehicleJourneyCode("unittest");
journey.setOperatorRef(operator);
journey.setEstimatedCalls(new EstimatedVehicleJourney.EstimatedCalls());
journey.getEstimatedCalls().getEstimatedCalls().add(origin);
journey.getEstimatedCalls().getEstimatedCalls().add(intermediate);
journey.getEstimatedCalls().getEstimatedCalls().add(last);

return journey;
}

private static EstimatedCall createArrivalStop(
WgsCoordinate coordinate,
String name,
ZonedDateTime base,
int expectedArrivalMinutes,
int latestExpectedArrivalMinutes
) {
var arrivalTime = base.plusMinutes(expectedArrivalMinutes);
var call = forPoint(coordinate);
call.setAimedArrivalTime(arrivalTime);
call.setExpectedArrivalTime(arrivalTime);
call.setLatestExpectedArrivalTime(base.plusMinutes(latestExpectedArrivalMinutes));
addStopName(call, name);
return call;
}

private static void addStopName(EstimatedCall call, String name) {
var nameStruct = new NaturalLanguageStringStructure();
nameStruct.setValue(name);
call.getStopPointNames().add(nameStruct);
}

private static void addOnboardCount(EstimatedCall call, int onboardCount) {
var occupancy = new VehicleOccupancyStructure();
occupancy.setOnboardCount(BigInteger.valueOf(onboardCount));
call.getExpectedDepartureOccupancies().add(occupancy);
}

static AimedFlexibleArea poslistToAimedFlexibleArea(String coordinates) {
var gmlFactory = new ObjectFactory();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ public class CarpoolGraphPathBuilder {
// Walking speed in m/s (OTP default from WalkPreferences)
private static final double WALKING_SPEED_MPS = 1.33;

// Default number of edges to distribute duration across
private static final int DEFAULT_NUM_EDGES = 3;

/**
* Creates a GraphPath with default 5-minute duration.
*/
Expand All @@ -30,24 +27,20 @@ public static GraphPath<State, Edge, Vertex> createGraphPath() {

/**
* Creates a GraphPath with specified duration using State chain.
* Uses a single edge with floor distance to avoid rounding errors: the edge traversal
* applies ceiling when converting to milliseconds, and State.getTime() applies ceiling
* when converting to seconds, so floor distance ensures the final second-precision
* duration matches the requested value.
*
* @param duration Total duration for the path
* @return GraphPath with real State objects and accurate timing
*/
public static GraphPath<State, Edge, Vertex> createGraphPath(Duration duration) {
var builder = TestStateBuilder.ofWalking();

// Calculate distance needed for target duration
double totalDistanceMeters = duration.toSeconds() * WALKING_SPEED_MPS;

// Distribute across multiple edges for realistic path
int numEdges = DEFAULT_NUM_EDGES;
int distancePerEdge = (int) Math.ceil(totalDistanceMeters / numEdges);
int distanceMeters = (int) (duration.toSeconds() * WALKING_SPEED_MPS);

// Build state chain with calculated distances
for (int i = 0; i < numEdges; i++) {
builder.streetEdge("segment-" + i, distancePerEdge);
}
builder.streetEdge("segment-0", distanceMeters);

return new GraphPath<>(builder.build());
}
Expand Down
Loading
Loading