Skip to content

Commit 5f46bea

Browse files
Also set slack in APIs
1 parent 208a6fe commit 5f46bea

File tree

10 files changed

+27
-14
lines changed

10 files changed

+27
-14
lines changed

docs/examples/entur/router-config.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
},
5353
"waitReluctance": 1.0,
5454
"otherThanPreferredRoutesPenalty": 300,
55-
"transferSlack": 120,
55+
"transferSlack": "2m",
5656
// Default slack for any mode is 0 (zero)
5757
"boardSlackForMode": {
5858
"AIRPLANE" : "2100s"

docs/examples/ibi/portland/router-config.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"maxJourneyDuration": "6h",
44
"boardSlack": "0s",
55
"alightSlack": "0s",
6-
"transferSlack": 180,
6+
"transferSlack": "3m",
77
"waitReluctance": 0.9,
88
"walk": {
99
"reluctance": 1.75,

docs/examples/skanetrafiken/router-config.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"itineraryFilters": {
44
"filterItinerariesWithSameFirstOrLastTrip": true
55
},
6-
"transferSlack": 180,
6+
"transferSlack": "3m",
77
"waitReluctance": 0.175,
88
"walk": {
99
"reluctance": 5

src/main/java/org/opentripplanner/apis/transmodel/mapping/PreferencesMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ static void mapPreferences(
2626
preferences.withBike(bike -> mapBikePreferences(bike, callWith));
2727
preferences.withCar(car -> mapCarPreferences(car, callWith));
2828
preferences.withScooter(scooter -> mapScooterPreferences(scooter, callWith));
29-
preferences.withTransfer(transfer -> mapTransferPreferences(transfer, environment, callWith));
29+
preferences.withTransfer(transfer -> mapTransferPreferences(transfer, callWith));
3030
preferences.withTransit(transit -> mapTransitPreferences(transit, environment, callWith));
3131
preferences.withItineraryFilter(itineraryFilter ->
3232
mapItineraryFilterPreferences(itineraryFilter, environment, callWith)
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
package org.opentripplanner.apis.transmodel.mapping.preferences;
22

3-
import graphql.schema.DataFetchingEnvironment;
3+
import java.time.Duration;
4+
import java.util.function.Consumer;
45
import org.opentripplanner.apis.transmodel.support.DataFetcherDecorator;
56
import org.opentripplanner.routing.api.request.preference.TransferPreferences;
67

78
public class TransferPreferencesMapper {
89

910
public static void mapTransferPreferences(
1011
TransferPreferences.Builder transfer,
11-
DataFetchingEnvironment environment,
1212
DataFetcherDecorator callWith
1313
) {
1414
callWith.argument("transferPenalty", transfer::withCost);
1515

1616
// 'minimumTransferTime' is deprecated, that's why we are mapping 'slack' twice.
17-
callWith.argument("minimumTransferTime", transfer::withSlack);
18-
callWith.argument("transferSlack", transfer::withSlack);
17+
callWith.argument("minimumTransferTime", setSlackFromSeconds(transfer));
18+
callWith.argument("transferSlack", setSlackFromSeconds(transfer));
1919

2020
callWith.argument("waitReluctance", transfer::withWaitReluctance);
2121
callWith.argument("maximumTransfers", transfer::withMaxTransfers);
2222
callWith.argument("maximumAdditionalTransfers", transfer::withMaxAdditionalTransfers);
2323
}
24+
25+
private static Consumer<Integer> setSlackFromSeconds(TransferPreferences.Builder transfer) {
26+
return (Integer secs) -> transfer.withSlack(Duration.ofSeconds(secs));
27+
}
2428
}

src/main/java/org/opentripplanner/apis/transmodel/model/DefaultRouteRequestType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ private GraphQLObjectType createGraphQLType() {
296296
"A global minimum transfer time (in seconds) that specifies the minimum amount of time that must pass between exiting one transit vehicle and boarding another."
297297
)
298298
.type(Scalars.GraphQLInt)
299-
.dataFetcher(env -> preferences.transfer().slack())
299+
.dataFetcher(env -> preferences.transfer().slack().toSeconds())
300300
.build()
301301
)
302302
.field(

src/main/java/org/opentripplanner/apis/transmodel/model/plan/TripQuery.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ Normally this is when the search is performed (now), plus a small grace period t
440440
"This time is in addition to time it might take to walk between stops."
441441
)
442442
.type(Scalars.GraphQLInt)
443-
.defaultValue(preferences.transfer().slack())
443+
.defaultValue(preferences.transfer().slack().toSeconds())
444444
.build()
445445
)
446446
.argument(

src/test/java/org/opentripplanner/apis/transmodel/mapping/TripRequestMapperTest.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,18 @@
1515
import io.micrometer.core.instrument.Metrics;
1616
import java.time.Duration;
1717
import java.time.LocalDate;
18-
import java.util.Collections;
1918
import java.util.HashMap;
2019
import java.util.List;
2120
import java.util.Locale;
2221
import java.util.Map;
23-
import java.util.Optional;
2422
import java.util.function.Function;
2523
import java.util.stream.Stream;
2624
import org.junit.jupiter.api.BeforeEach;
2725
import org.junit.jupiter.api.Test;
2826
import org.junit.jupiter.params.ParameterizedTest;
2927
import org.junit.jupiter.params.provider.Arguments;
3028
import org.junit.jupiter.params.provider.MethodSource;
29+
import org.junit.jupiter.params.provider.ValueSource;
3130
import org.opentripplanner._support.time.ZoneIds;
3231
import org.opentripplanner.apis.transmodel.TransmodelRequestContext;
3332
import org.opentripplanner.ext.emissions.DefaultEmissionsService;
@@ -403,6 +402,16 @@ public void testExplicitModes() {
403402
assertEquals(StreetMode.WALK, req.journey().transfer().mode());
404403
}
405404

405+
@ParameterizedTest
406+
@ValueSource(strings = {"transferSlack", "minimumTransferTime"})
407+
public void testTransferSlack(String name) {
408+
Map<String, Object> arguments = Map.of(
409+
name, 101
410+
);
411+
var req = TripRequestMapper.createRequest(executionContext(arguments));
412+
assertEquals(Duration.ofSeconds(101), req.preferences().transfer().slack());
413+
}
414+
406415
@Test
407416
public void testExplicitModesBikeAccess() {
408417
Map<String, Object> arguments = Map.of("modes", Map.of("accessMode", StreetMode.BIKE));

src/test/java/org/opentripplanner/routing/api/request/preference/TransferPreferencesTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void testToString() {
8383
assertEquals(
8484
"TransferPreferences{" +
8585
"cost: $200, " +
86-
"slack: 150, " +
86+
"slack: 2m30s, " +
8787
"waitReluctance: 0.95, " +
8888
"maxTransfers: 17, " +
8989
"maxAdditionalTransfers: 7, " +

test/performance/skanetrafiken/speed-test-config.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"speed": 1.38,
2020
"reluctance": 5
2121
},
22-
"transferSlack": 180,
22+
"transferSlack": "3m",
2323
"waitReluctance": 0.175,
2424
"maxDirectStreetDuration": "1h1m",
2525
"boardSlackForMode": {

0 commit comments

Comments
 (0)