-
Notifications
You must be signed in to change notification settings - Fork 1.1k
TRIAS StopEventRequest
#6510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
leonardehrenfried
merged 102 commits into
opentripplanner:dev-2.x
from
leonardehrenfried:trias
Jun 5, 2025
Merged
TRIAS StopEventRequest
#6510
Changes from 95 commits
Commits
Show all changes
102 commits
Select commit
Hold shift + click to select a range
eb1dc16
Initial OJP request
leonardehrenfried f5db79b
Add initial TRIAS skeleton
leonardehrenfried e371af2
Add streaming response
leonardehrenfried 85f34d2
Flesh out result
leonardehrenfried 1d41491
Move method into Transformer
leonardehrenfried e4cacb7
Flesh out response
leonardehrenfried ce30db5
Handle language
leonardehrenfried 0b57f53
Re-indent XSLT
leonardehrenfried 51a4683
Simplify
leonardehrenfried d0a9cb4
Add API explorer
leonardehrenfried c82c1ba
Also map TRIAS requests
leonardehrenfried 1a447b6
WIP
leonardehrenfried 668e85f
Handle error condition
leonardehrenfried 06f9a07
Clean up package structure
leonardehrenfried 0e5e42f
Add optional features
leonardehrenfried c134dc3
Implement previous/onward calls
leonardehrenfried b87f683
Implement onward/previous calls
leonardehrenfried d6718cb
Look up language from feed info
leonardehrenfried 5aba735
Add tests
leonardehrenfried 3133934
Regenereate docs
leonardehrenfried a40229f
Auto-write file
leonardehrenfried bd71b03
Make feed id configurable
leonardehrenfried dd56077
Change default ID
leonardehrenfried 41b986e
Remove extra dependency
leonardehrenfried 33c954a
Implement arrival time
leonardehrenfried c5697e1
Add skip node for trias API
leonardehrenfried 908365e
Small clean up
leonardehrenfried 356fe6c
Extract coordinate from request
leonardehrenfried d0161e9
Implement GeoPosition-based searches
leonardehrenfried f0dc278
Implement GeoPosition request
leonardehrenfried 0846eab
Add time window
leonardehrenfried 997a3ba
Introduce filter request
leonardehrenfried 57a7eb7
Implement numberOfDepartures
leonardehrenfried ab37b3d
Implement separate params
leonardehrenfried 9ea41f2
Implement operator filter
leonardehrenfried 3739f98
Implement line filter
leonardehrenfried eec6fd4
Improve line ref matching
leonardehrenfried 82805c6
Fix explorer
leonardehrenfried 71e531b
Remove outdated comment
leonardehrenfried 41050a3
Remove TimeAtStop
leonardehrenfried 2fd72a1
Implement inclusion/exclusion of lines/operators
leonardehrenfried bdcec74
Set version to 1.2
leonardehrenfried 65d6a10
Add inclusion/exclusion of modes
leonardehrenfried 3f1b003
Add inclusion/exclusion of modes
leonardehrenfried 04971c6
Add test
leonardehrenfried e95f651
Remove unused code in TransitService
leonardehrenfried de9a0c8
Add test
leonardehrenfried 9b7a287
Add test for TripTimeOnDate
leonardehrenfried 2af2a90
Add documentation
leonardehrenfried b31aacc
Add test for previous/next
leonardehrenfried 41bbcf0
Apply new formatting
leonardehrenfried 73eafc7
Use artifact from org.opentripplanner
leonardehrenfried c3948b4
Clean up and docs
leonardehrenfried 497bf16
Take UseRealtimeData into account
leonardehrenfried 3e11cab
Implement maxDistance
leonardehrenfried 10bfd62
Use new StopTimesHelper
leonardehrenfried f1ecbcf
Rename method and add Javadoc
leonardehrenfried 59d85be
Add cancelled stop
leonardehrenfried c196e8e
Add cancellation
leonardehrenfried 4d4811a
Allow specifying a sort order
leonardehrenfried 0117064
Implement station lookup for stop point ref
leonardehrenfried bd15e5c
Move creation of filters into builder
leonardehrenfried c35fff9
Re-order package structure
leonardehrenfried e2134b5
Update docs
leonardehrenfried 1090ade
Add direction ref
leonardehrenfried 7af5f7d
Optimise performance by instantiating context only once
leonardehrenfried 41adefc
Add XML to compressible mime types
leonardehrenfried e82862e
Use full trias namespace
leonardehrenfried 308b489
Add test
leonardehrenfried 213b218
Change language namespace
leonardehrenfried 9c8379a
Update docs, add test
leonardehrenfried c0b5775
Configure time zone in TRIAS
leonardehrenfried 52204f4
Make code slightly more readable
leonardehrenfried 8762ba7
Improve time handling
leonardehrenfried e2082c5
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried f076fb1
Harmonise naming
leonardehrenfried fc3c446
Apply review feedback
leonardehrenfried d50146b
Harmonise plural/singular
leonardehrenfried 88d0b59
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried 6aa9282
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried 722636b
Use include/exclude wording consistently
leonardehrenfried 1f1f609
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried 72f3cbd
Use constant for JSON media type
leonardehrenfried d2f9fd5
Apply review feedback
leonardehrenfried 83b8c06
Fix spelling, remove unused method
leonardehrenfried b33f806
Move test and its data into sandbox
leonardehrenfried 5166c27
Move config into sandbox
leonardehrenfried b64694e
Rename the ojp package to trias
leonardehrenfried 79bff6b
Remove text/json, use line comments
leonardehrenfried 7dc3b54
Revert name to 'compareByDeparture'
leonardehrenfried e6781fa
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried 98e1fd4
Fix mime type
leonardehrenfried e93a178
Use a more consistent handling of includes
leonardehrenfried cb1c00b
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried a683a71
Update docs
leonardehrenfried 015459f
Replace rutebanken with opentripplanner
leonardehrenfried 0edfd73
Make code more consistent
leonardehrenfried d833fe8
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried bf94f3a
Adapt code after upstream merge
leonardehrenfried 3450eae
Use new constants
leonardehrenfried 820a64d
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried f444778
Merge remote-tracking branch 'upstream/dev-2.x' into trias
leonardehrenfried File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
application/src/ext-test/java/org/opentripplanner/ext/trias/doc/TriasApiDocTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| package org.opentripplanner.ext.trias.doc; | ||
|
|
||
| import static org.opentripplanner.framework.application.OtpFileNames.ROUTER_CONFIG_FILENAME; | ||
| import static org.opentripplanner.framework.io.FileUtils.assertFileEquals; | ||
| import static org.opentripplanner.framework.io.FileUtils.readFile; | ||
| import static org.opentripplanner.framework.io.FileUtils.writeFile; | ||
| import static org.opentripplanner.generate.doc.framework.DocsTestConstants.TEMPLATE_PATH; | ||
| import static org.opentripplanner.generate.doc.framework.DocsTestConstants.USER_DOC_PATH; | ||
| import static org.opentripplanner.generate.doc.framework.TemplateUtil.replaceSection; | ||
| import static org.opentripplanner.standalone.config.framework.json.JsonSupport.jsonNodeFromPath; | ||
| import static org.opentripplanner.utils.text.MarkdownFormatter.HEADER_4; | ||
|
|
||
| import java.io.File; | ||
| import org.junit.jupiter.api.Test; | ||
| import org.opentripplanner.generate.doc.framework.DocBuilder; | ||
| import org.opentripplanner.generate.doc.framework.GeneratesDocumentation; | ||
| import org.opentripplanner.generate.doc.framework.ParameterDetailsList; | ||
| import org.opentripplanner.generate.doc.framework.ParameterSummaryTable; | ||
| import org.opentripplanner.generate.doc.framework.SkipNodes; | ||
| import org.opentripplanner.generate.doc.framework.TemplateUtil; | ||
| import org.opentripplanner.standalone.config.RouterConfig; | ||
| import org.opentripplanner.standalone.config.framework.json.NodeAdapter; | ||
| import org.opentripplanner.test.support.ResourceLoader; | ||
|
|
||
| @GeneratesDocumentation | ||
| public class TriasApiDocTest { | ||
|
|
||
| private static final File TEMPLATE = new File(TEMPLATE_PATH + "/sandbox", "TriasApi.md"); | ||
| private static final File OUT_FILE = new File(USER_DOC_PATH + "/sandbox", "TriasApi.md"); | ||
|
|
||
| private static final File ROUTER_CONFIG_FILE = ResourceLoader.of( | ||
| TriasApiDocTest.class | ||
| ).extTestResourceFile(ROUTER_CONFIG_FILENAME); | ||
| private static final SkipNodes SKIP_NODES = SkipNodes.of().build(); | ||
| public static final String CONFIG_PARAM = "triasApi"; | ||
|
|
||
| @Test | ||
| public void update() { | ||
| NodeAdapter node = readTriasConfig(); | ||
|
|
||
| // Read and close input file (same as output file) | ||
| String template = readFile(TEMPLATE); | ||
| String original = readFile(OUT_FILE); | ||
|
|
||
| template = replaceSection(template, "config", updaterDoc(node)); | ||
|
|
||
| writeFile(OUT_FILE, template); | ||
| assertFileEquals(original, OUT_FILE); | ||
| } | ||
|
|
||
| private NodeAdapter readTriasConfig() { | ||
| var json = jsonNodeFromPath(ROUTER_CONFIG_FILE.toPath()); | ||
| var conf = new RouterConfig(json, ROUTER_CONFIG_FILE.getName(), false); | ||
| return conf.asNodeAdapter().child(CONFIG_PARAM); | ||
| } | ||
|
|
||
| private String updaterDoc(NodeAdapter node) { | ||
| DocBuilder buf = new DocBuilder(); | ||
| addExample(buf, node); | ||
| addParameterSummaryTable(buf, node); | ||
| addDetailsSection(buf, node); | ||
| return buf.toString(); | ||
| } | ||
|
|
||
| private void addParameterSummaryTable(DocBuilder buf, NodeAdapter node) { | ||
| buf | ||
| .header(3, "Overview", null) | ||
| .addSection(new ParameterSummaryTable(SKIP_NODES).createTable(node).toMarkdownTable()); | ||
| } | ||
|
|
||
| private void addDetailsSection(DocBuilder buf, NodeAdapter node) { | ||
| buf | ||
| .header(3, "Details", null) | ||
| .addSection(ParameterDetailsList.listParametersWithDetails(node, SKIP_NODES, HEADER_4)); | ||
| } | ||
|
|
||
| private void addExample(DocBuilder buf, NodeAdapter node) { | ||
| var root = TemplateUtil.jsonExampleBuilder(node.rawNode()).wrapInObject(CONFIG_PARAM).build(); | ||
| buf.header(3, "Example configuration", null).addExample(ROUTER_CONFIG_FILENAME, root); | ||
| } | ||
| } |
23 changes: 23 additions & 0 deletions
23
application/src/ext-test/java/org/opentripplanner/ext/trias/id/HideFeedIdResolverTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| package org.opentripplanner.ext.trias.id; | ||
|
|
||
| import static org.junit.jupiter.api.Assertions.*; | ||
|
|
||
| import org.junit.jupiter.api.Test; | ||
| import org.opentripplanner.transit.model.framework.FeedScopedId; | ||
|
|
||
| class HideFeedIdResolverTest { | ||
|
|
||
| private static final HideFeedIdResolver RESOLVER = new HideFeedIdResolver("aaa"); | ||
|
|
||
| @Test | ||
| void parse() { | ||
| var id = RESOLVER.parse("bbb"); | ||
| assertEquals(new FeedScopedId("aaa", "bbb"), id); | ||
| } | ||
|
|
||
| @Test | ||
| void tostring() { | ||
| var id = RESOLVER.toString(new FeedScopedId("aaa", "bbb")); | ||
| assertEquals("bbb", id); | ||
| } | ||
| } |
23 changes: 23 additions & 0 deletions
23
application/src/ext-test/java/org/opentripplanner/ext/trias/id/UseFeedIdResolverTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| package org.opentripplanner.ext.trias.id; | ||
|
|
||
| import static org.junit.jupiter.api.Assertions.*; | ||
|
|
||
| import org.junit.jupiter.api.Test; | ||
| import org.opentripplanner.transit.model.framework.FeedScopedId; | ||
|
|
||
| class UseFeedIdResolverTest { | ||
|
|
||
| private static final IdResolver RESOLVER = new UseFeedIdResolver(); | ||
|
|
||
| @Test | ||
| void parse() { | ||
| var id = RESOLVER.parse("aaa:bbb"); | ||
| assertEquals(new FeedScopedId("aaa", "bbb"), id); | ||
| } | ||
|
|
||
| @Test | ||
| void tostring() { | ||
| var id = RESOLVER.toString(new FeedScopedId("aaa", "bbb")); | ||
| assertEquals("aaa:bbb", id); | ||
| } | ||
| } |
16 changes: 16 additions & 0 deletions
16
application/src/ext-test/java/org/opentripplanner/ext/trias/mapping/PtModeMapperTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| package org.opentripplanner.ext.trias.mapping; | ||
|
|
||
| import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
|
|
||
| import org.junit.jupiter.params.ParameterizedTest; | ||
| import org.junit.jupiter.params.provider.EnumSource; | ||
| import org.opentripplanner.transit.model.basic.TransitMode; | ||
|
|
||
| class PtModeMapperTest { | ||
|
|
||
| @ParameterizedTest | ||
| @EnumSource(TransitMode.class) | ||
| void map(TransitMode mode) { | ||
| assertNotNull(PtModeMapper.map(mode)); | ||
| } | ||
| } |
191 changes: 191 additions & 0 deletions
191
...ication/src/ext-test/java/org/opentripplanner/ext/trias/service/OjpServiceMapperTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,191 @@ | ||
| package org.opentripplanner.ext.trias.service; | ||
|
|
||
| import static com.google.common.truth.Truth.assertThat; | ||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||
| import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id; | ||
| import static org.opentripplanner.transit.model.basic.TransitMode.BUS; | ||
| import static org.opentripplanner.transit.model.basic.TransitMode.FERRY; | ||
|
|
||
| import de.vdv.ojp20.IndividualTransportOptionStructure; | ||
| import de.vdv.ojp20.ItModesStructure; | ||
| import de.vdv.ojp20.LineDirectionFilterStructure; | ||
| import de.vdv.ojp20.ModeFilterStructure; | ||
| import de.vdv.ojp20.OJPStopEventRequestStructure; | ||
| import de.vdv.ojp20.PersonalModesEnumeration; | ||
| import de.vdv.ojp20.PlaceContextStructure; | ||
| import de.vdv.ojp20.StopEventParamStructure; | ||
| import de.vdv.ojp20.siri.LineDirectionStructure; | ||
| import de.vdv.ojp20.siri.LineRefStructure; | ||
| import de.vdv.ojp20.siri.VehicleModesOfTransportEnumeration; | ||
| import java.math.BigInteger; | ||
| import java.time.ZonedDateTime; | ||
| import java.util.Set; | ||
| import org.junit.jupiter.api.Test; | ||
| import org.opentripplanner._support.time.ZoneIds; | ||
| import org.opentripplanner.ext.trias.id.UseFeedIdResolver; | ||
| import org.opentripplanner.transit.model.framework.FeedScopedId; | ||
| import org.rutebanken.time.XmlDateTime; | ||
|
|
||
| class OjpServiceMapperTest { | ||
|
|
||
| private static final ZonedDateTime ZDT = ZonedDateTime.parse("2025-02-17T14:24:02+01:00"); | ||
| private static final UseFeedIdResolver ID_RESOLVER = new UseFeedIdResolver(); | ||
| private static final OjpServiceMapper SERVICE = new OjpServiceMapper( | ||
| null, | ||
| ID_RESOLVER, | ||
| ZoneIds.BERLIN | ||
| ); | ||
|
|
||
| private static final FeedScopedId LINE_ID = id("line1"); | ||
|
|
||
| @Test | ||
| void defaultCase() { | ||
| var params = SERVICE.extractStopEventParams(stopEvent(new StopEventParamStructure())); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedRoutes()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedModes()).isEmpty(); | ||
| assertThat(params.excludedModes()).isEmpty(); | ||
| assertEquals(OjpServiceMapper.DEFAULT_RADIUS_METERS, params.maximumWalkDistance()); | ||
| assertEquals(OjpServiceMapper.DEFAULT_NUM_DEPARTURES, params.numDepartures()); | ||
| } | ||
|
|
||
| @Test | ||
| void maxDistance() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| new OJPStopEventRequestStructure() | ||
| .withLocation( | ||
| new PlaceContextStructure() | ||
| .withDepArrTime(new XmlDateTime(ZDT)) | ||
| .withIndividualTransportOption( | ||
| new IndividualTransportOptionStructure() | ||
| .withItModeAndModeOfOperation( | ||
| new ItModesStructure().withPersonalMode(PersonalModesEnumeration.FOOT) | ||
| ) | ||
| .withMaxDistance(BigInteger.TEN) | ||
| ) | ||
| ) | ||
| ); | ||
| assertEquals(10, params.maximumWalkDistance()); | ||
| } | ||
|
|
||
| @Test | ||
| void numDepartures() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| stopEvent(new StopEventParamStructure().withNumberOfResults(BigInteger.TWO)) | ||
| ); | ||
| assertEquals(2, params.numDepartures()); | ||
| } | ||
|
|
||
| @Test | ||
| void lineFilterImplicitExclude() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| lineFilter( | ||
| new LineDirectionFilterStructure() | ||
| .withLine( | ||
| new LineDirectionStructure() | ||
| .withLineRef(new LineRefStructure().withValue(LINE_ID.toString())) | ||
| ) | ||
| ) | ||
| ); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedRoutes()).isEmpty(); | ||
| assertEquals(Set.of(LINE_ID), params.excludedRoutes()); | ||
| assertThat(params.includedModes()).isEmpty(); | ||
| assertThat(params.excludedModes()).isEmpty(); | ||
| } | ||
|
|
||
| @Test | ||
| void lineFilterInclude() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| lineFilter( | ||
| new LineDirectionFilterStructure() | ||
| .withExclude(true) | ||
| .withLine( | ||
| new LineDirectionStructure() | ||
| .withLineRef(new LineRefStructure().withValue(LINE_ID.toString())) | ||
| ) | ||
| ) | ||
| ); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedRoutes()).isEmpty(); | ||
| assertEquals(Set.of(LINE_ID), params.excludedRoutes()); | ||
| assertThat(params.includedModes()).isEmpty(); | ||
| assertThat(params.excludedModes()).isEmpty(); | ||
| } | ||
|
|
||
| @Test | ||
| void lineFilterExclude() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| lineFilter( | ||
| new LineDirectionFilterStructure() | ||
| .withExclude(false) | ||
| .withLine( | ||
| new LineDirectionStructure() | ||
| .withLineRef(new LineRefStructure().withValue(LINE_ID.toString())) | ||
| ) | ||
| ) | ||
| ); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertEquals(Set.of(LINE_ID), params.includedRoutes()); | ||
| assertThat(params.excludedRoutes()).isEmpty(); | ||
| assertThat(params.includedModes()).isEmpty(); | ||
| assertThat(params.excludedModes()).isEmpty(); | ||
| } | ||
|
|
||
| @Test | ||
| void modeFilter() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| stopEvent( | ||
| new StopEventParamStructure() | ||
| .withModeFilter( | ||
| new ModeFilterStructure() | ||
| .withPtMode( | ||
| VehicleModesOfTransportEnumeration.BUS, | ||
| VehicleModesOfTransportEnumeration.FERRY | ||
| ) | ||
| ) | ||
| ) | ||
| ); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedRoutes()).isEmpty(); | ||
| assertThat(params.excludedRoutes()).isEmpty(); | ||
| assertThat(params.includedModes()).isEmpty(); | ||
| assertEquals(Set.of(BUS, FERRY), params.excludedModes()); | ||
| } | ||
|
|
||
| @Test | ||
| void modeFilterExclude() { | ||
| var params = SERVICE.extractStopEventParams( | ||
| stopEvent( | ||
| new StopEventParamStructure() | ||
| .withModeFilter( | ||
| new ModeFilterStructure() | ||
| .withExclude(false) | ||
| .withPtMode(VehicleModesOfTransportEnumeration.BUS) | ||
| ) | ||
| ) | ||
| ); | ||
| assertThat(params.includedAgencies()).isEmpty(); | ||
| assertThat(params.excludedAgencies()).isEmpty(); | ||
| assertThat(params.includedRoutes()).isEmpty(); | ||
| assertThat(params.excludedRoutes()).isEmpty(); | ||
| assertEquals(Set.of(BUS), params.includedModes()); | ||
| assertThat(params.excludedModes()).isEmpty(); | ||
| } | ||
|
|
||
| private static OJPStopEventRequestStructure lineFilter(LineDirectionFilterStructure value) { | ||
| return stopEvent(new StopEventParamStructure().withLineFilter(value)); | ||
| } | ||
|
|
||
| private static OJPStopEventRequestStructure stopEvent(StopEventParamStructure p) { | ||
| return new OJPStopEventRequestStructure() | ||
| .withLocation(new PlaceContextStructure().withDepArrTime(new XmlDateTime(ZDT))) | ||
| .withParams(p); | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.