Skip to content

Commit d2b259a

Browse files
committed
Merge branch 'remove-safety-normalizer' into safest-street
# Conflicts: # application/src/main/java/org/opentripplanner/street/search/strategy/EuclideanRemainingWeightHeuristic.java
2 parents f68d4f1 + 6f57ae8 commit d2b259a

File tree

420 files changed

+11050
-6575
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

420 files changed

+11050
-6575
lines changed

application/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@
324324
<dependency>
325325
<groupId>com.graphql-java</groupId>
326326
<artifactId>graphql-java</artifactId>
327-
<version>24.1</version>
327+
<version>24.2</version>
328328
</dependency>
329329
<dependency>
330330
<groupId>com.graphql-java</groupId>
@@ -365,7 +365,7 @@
365365
<dependency>
366366
<groupId>com.azure</groupId>
367367
<artifactId>azure-core</artifactId>
368-
<version>1.55.5</version>
368+
<version>1.56.0</version>
369369
</dependency>
370370
<dependency>
371371
<groupId>com.azure</groupId>
@@ -375,7 +375,7 @@
375375
<dependency>
376376
<groupId>com.azure</groupId>
377377
<artifactId>azure-identity</artifactId>
378-
<version>1.16.3</version>
378+
<version>1.17.0</version>
379379
<scope>compile</scope>
380380
</dependency>
381381
<dependency>

application/src/client/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<link rel="icon" type="image/svg+xml" href="/img/otp-logo.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>OTP Debug</title>
8-
<script type="module" crossorigin src="https://www.opentripplanner.org/debug-client-assets/2025/07/2025-07-19T21:51/assets/index-D2NRiINq.js"></script>
9-
<link rel="stylesheet" crossorigin href="https://www.opentripplanner.org/debug-client-assets/2025/07/2025-07-19T21:51/assets/index-BiYV0evg.css">
8+
<script type="module" crossorigin src="https://www.opentripplanner.org/debug-client-assets/2025/08/2025-08-11T11:28/assets/index-DZVYhvnG.js"></script>
9+
<link rel="stylesheet" crossorigin href="https://www.opentripplanner.org/debug-client-assets/2025/08/2025-08-11T11:28/assets/index-BiYV0evg.css">
1010
</head>
1111
<body>
1212
<div id="root"></div>

application/src/ext-test/java/org/opentripplanner/ext/fares/FaresConfigurationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
55
import static org.junit.jupiter.api.Assertions.assertTrue;
6-
import static org.opentripplanner.ext.fares.impl.CombinedInterlinedLegsFareService.CombinationMode.SAME_ROUTE;
6+
import static org.opentripplanner.ext.fares.impl.gtfs.CombinedInterlinedLegsFareService.CombinationMode.SAME_ROUTE;
77

88
import java.time.Duration;
99
import org.junit.jupiter.api.Test;
10-
import org.opentripplanner.ext.fares.impl.CombinedInterlinedLegsFareService;
1110
import org.opentripplanner.ext.fares.impl.HighestFareInFreeTransferWindowFareService;
11+
import org.opentripplanner.ext.fares.impl.gtfs.CombinedInterlinedLegsFareService;
1212
import org.opentripplanner.standalone.config.framework.json.JsonSupport;
1313

1414
class FaresConfigurationTest extends JsonSupport {

application/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
import java.util.List;
88
import org.junit.jupiter.api.Test;
9+
import org.opentripplanner.model.fare.FareOffer;
910
import org.opentripplanner.model.fare.FareProduct;
10-
import org.opentripplanner.model.fare.FareProductUse;
1111
import org.opentripplanner.model.fare.ItineraryFare;
1212
import org.opentripplanner.model.plan.Itinerary;
1313
import org.opentripplanner.model.plan.Place;
@@ -36,7 +36,7 @@ void shouldAddFare() {
3636

3737
var leg = i1.legs().get(1);
3838
var fp = FareProduct.of(id("fp"), "fare product", Money.euros(10.00f)).build();
39-
fares.addFareProduct(leg, fp);
39+
fares.addFareProduct(leg, FareOffer.of(leg.startTime(), fp));
4040

4141
var filter = new DecorateWithFare((FareService) itinerary -> fares);
4242

@@ -46,9 +46,6 @@ void shouldAddFare() {
4646

4747
var busLeg = i1.transitLeg(1);
4848

49-
assertEquals(
50-
List.of(new FareProductUse("c1a04702-1fb6-32d4-ba02-483bf68111ed", fp)),
51-
busLeg.fareProducts()
52-
);
49+
assertEquals(List.of(FareOffer.of(busLeg.startTime(), fp)), busLeg.fareOffers());
5350
}
5451
}

application/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.junit.jupiter.api.BeforeAll;
1919
import org.junit.jupiter.api.Test;
2020
import org.opentripplanner._support.time.ZoneIds;
21+
import org.opentripplanner.ext.fares.impl._support.FareModelForTest;
2122
import org.opentripplanner.ext.fares.model.FareRuleSet;
2223
import org.opentripplanner.framework.geometry.WgsCoordinate;
2324
import org.opentripplanner.framework.i18n.NonLocalizedString;
Lines changed: 0 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -1,151 +0,0 @@
1-
package org.opentripplanner.ext.fares.impl;
2-
3-
import static org.junit.jupiter.api.Assertions.assertEquals;
4-
5-
import java.time.Instant;
6-
import java.time.LocalDateTime;
7-
import java.time.Month;
8-
import java.time.ZoneId;
9-
import java.util.Comparator;
10-
import java.util.List;
11-
import org.junit.jupiter.api.Test;
12-
import org.opentripplanner.ConstantsForTests;
13-
import org.opentripplanner.TestOtpModel;
14-
import org.opentripplanner.TestServerContext;
15-
import org.opentripplanner._support.time.ZoneIds;
16-
import org.opentripplanner.model.GenericLocation;
17-
import org.opentripplanner.model.fare.ItineraryFare;
18-
import org.opentripplanner.model.plan.Itinerary;
19-
import org.opentripplanner.routing.api.request.RouteRequest;
20-
import org.opentripplanner.routing.api.request.preference.ItineraryFilterDebugProfile;
21-
import org.opentripplanner.routing.graph.Graph;
22-
import org.opentripplanner.standalone.api.OtpServerRequestContext;
23-
import org.opentripplanner.transit.model.basic.Money;
24-
import org.opentripplanner.transit.service.TimetableRepository;
25-
26-
public class FaresIntegrationTest {
27-
28-
@Test
29-
public void testBasic() {
30-
TestOtpModel model = ConstantsForTests.buildGtfsGraph(ConstantsForTests.CALTRAIN_GTFS);
31-
var graph = model.graph();
32-
var timetableRepository = model.timetableRepository();
33-
34-
var feedId = timetableRepository.getFeedIds().iterator().next();
35-
36-
var serverContext = TestServerContext.createServerContext(
37-
graph,
38-
timetableRepository,
39-
model.fareServiceFactory().makeFareService()
40-
);
41-
42-
var start = LocalDateTime.of(2009, Month.AUGUST, 7, 12, 0, 0)
43-
.atZone(ZoneIds.LOS_ANGELES)
44-
.toInstant();
45-
var from = GenericLocation.fromStopId("Origin", feedId, "Millbrae Caltrain");
46-
var to = GenericLocation.fromStopId("Destination", feedId, "Mountain View Caltrain");
47-
48-
ItineraryFare fare = getFare(from, to, start, serverContext);
49-
var product = fare.getLegProducts().values().iterator().next().product();
50-
assertEquals(Money.usDollars(4.25f), product.price());
51-
assertEquals("OW_2", product.id().getId().toString());
52-
}
53-
54-
@Test
55-
public void testPortland() {
56-
TestOtpModel model = ConstantsForTests.getInstance().getCachedPortlandGraph();
57-
Graph graph = model.graph();
58-
TimetableRepository timetableRepository = model.timetableRepository();
59-
var portlandId = timetableRepository.getFeedIds().iterator().next();
60-
61-
var serverContext = TestServerContext.createServerContext(
62-
graph,
63-
timetableRepository,
64-
model.fareServiceFactory().makeFareService()
65-
);
66-
67-
// from zone 3 to zone 2
68-
var from = GenericLocation.fromStopId(
69-
"Portland Int'l Airport MAX Station,Eastbound stop in Portland",
70-
portlandId,
71-
"10579"
72-
);
73-
var to = GenericLocation.fromStopId(
74-
"NE 82nd Ave MAX Station,Westbound stop in Portland",
75-
portlandId,
76-
"8371"
77-
);
78-
79-
Instant startTime = LocalDateTime.of(2009, 11, 1, 12, 0, 0)
80-
.atZone(ZoneId.of("America/Los_Angeles"))
81-
.toInstant();
82-
83-
ItineraryFare fare = getFare(from, to, startTime, serverContext);
84-
var fpu = List.copyOf(fare.getLegProducts().values());
85-
assertEquals(1, fpu.size());
86-
87-
var fp = fpu.getFirst();
88-
assertEquals(Money.usDollars(2f), fp.product().price());
89-
assertEquals("prt:19", fp.product().id().toString());
90-
91-
// long trip
92-
93-
startTime = LocalDateTime.of(2009, 11, 2, 14, 0, 0)
94-
.atZone(ZoneId.of("America/Los_Angeles"))
95-
.toInstant();
96-
97-
from = GenericLocation.fromStopId("Origin", portlandId, "8389");
98-
to = GenericLocation.fromStopId("Destination", portlandId, "1252");
99-
100-
fare = getFare(from, to, startTime, serverContext);
101-
// this assertion was already commented out when I reactivated the test for OTP2 on 2021-11-11
102-
// not sure what the correct fare should be
103-
// assertEquals(new Money(new WrappedCurrency("USD"), 460), fare.getFare(FareType.regular));
104-
105-
// complex trip
106-
// request.maxTransfers = 5;
107-
// startTime = TestUtils.dateInSeconds("America/Los_Angeles", 2009, 11, 1, 14, 0, 0);
108-
// request.dateTime = startTime;
109-
// request.from = GenericLocation.fromStopId("", portlandId, "10428");
110-
// request.setRoutingContext(graph, portlandId + ":10428", portlandId + ":4231");
111-
112-
//
113-
// this is commented out because portland's fares are, I think, broken in the gtfs. see
114-
// thread on gtfs-changes.
115-
// assertEquals(cost.getFare(FareType.regular), new Money(new WrappedCurrency("USD"), 430));
116-
}
117-
118-
private static ItineraryFare getFare(
119-
GenericLocation from,
120-
GenericLocation to,
121-
Instant time,
122-
OtpServerRequestContext serverContext
123-
) {
124-
Itinerary itinerary = getItineraries(from, to, time, serverContext).get(0);
125-
return itinerary.fare();
126-
}
127-
128-
private static List<Itinerary> getItineraries(
129-
GenericLocation from,
130-
GenericLocation to,
131-
Instant time,
132-
OtpServerRequestContext serverContext
133-
) {
134-
RouteRequest request = RouteRequest.of()
135-
.withDateTime(time)
136-
.withFrom(from)
137-
.withTo(to)
138-
.withPreferences(p ->
139-
p.withItineraryFilter(it -> it.withDebug(ItineraryFilterDebugProfile.LIST_ALL))
140-
)
141-
.buildRequest();
142-
143-
var result = serverContext.routingService().route(request);
144-
145-
return result
146-
.getTripPlan()
147-
.itineraries.stream()
148-
.sorted(Comparator.comparingInt(Itinerary::generalizedCost))
149-
.toList();
150-
}
151-
}

0 commit comments

Comments
 (0)