diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 746c6d6aa7d..1dda1d83bfd 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -54,7 +54,7 @@ Used to import NeTEx transit data files. ### Transit Routing -#### [Raptor Transit Routing](raptor/src/main/java/org/opentripplanner/raptor/package.md) +#### [Raptor Transit Routing](raptor/router/src/main/java/org/opentripplanner/raptor/package.md) This is the OTP2 new transit routing engine implemented using the Raptor algorithm. It explains how Raptor works, the important concepts and the design. It might be worth reading even if you are not a @@ -70,11 +70,11 @@ quality. OTP provides transit data to Raptor by implementing the _raptor/spi_. The [RoutingService](application/src/main/java/org/opentripplanner/routing/service/DefaultRoutingService.java) is responsible for mapping from the OTP context to a -[RaptorRequest](raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java) and -then mapping the result, -[Raptor Path](raptor/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java), back to the -OTP internal domain. This might seem like a lot of unnecessary mapping, but mapping is simple - -routing is not. +[RaptorRequest](raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java) +and then mapping the result, +[Raptor Path](raptor/router/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java), back +to the OTP internal domain. This might seem like a lot of unnecessary mapping, but mapping is +simple - routing is not. The performance of Raptor is important, and we care about every millisecond. All changes to the existing Raptor code should be tested with the @@ -97,7 +97,7 @@ in order to sort and reduce the number of returned itineraries. It can also be u returned itineraries, especially if it requires more complex calculations, which would be unfeasible to do during the routing process. -### [Transaction Framework](application/src/main/java/org/opentripplanner/framework/transaction/package.md) +### [Transaction Framework](core/framework/src/main/java/org/opentripplanner/core/framework/transaction/package.md) A generic, reusable copy-on-write concurrency mechanism for application-scoped repositories: any number of concurrent readers sees a consistent, unchanging snapshot while a single writer thread diff --git a/CLAUDE.md b/CLAUDE.md index 3d9f7c76a86..6afb48997e9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -78,11 +78,10 @@ mvn test -Dtest=ClassName#methodName Multi-module Maven project (root `pom.xml` ``): - **utils**: low-level utilities shared by all modules -- **domain-core**: core domain primitives (`org.opentripplanner.core`) — `FeedScopedId`, `Cost`, +- **model-core**: core domain primitives (`org.opentripplanner.core`) — `FeedScopedId`, `Cost`, `Distance`, `I18NString`, `Accessibility`, plus framework (deduplicator, DI, resources) -- **raptor**: transit routing engine — `raptor/src/main/java/org/opentripplanner/raptor/`. Isolated: - **zero dependencies on OTP code** (only utilities). Performance-critical; data is supplied via the - SPI in `raptor/spi`. +- **raptor**: transit routing engine — `raptor/router/src`. Isolated: **zero dependencies on OTP + code** (only utilities). Performance-critical; data is supplied via the SPI in `raptor/spi`. - **astar**: generic A\* shortest-path engine — `astar/src/main/java/org/opentripplanner/astar/` (`AStar`, `AStarBuilder`, `spi/`, `strategy/`, `model/`) - **street**: street graph model, linking and search — @@ -98,7 +97,7 @@ Multi-module Maven project (root `pom.xml` ``): ### Key Components -**Transit Routing (Raptor)** — `raptor/src/main/java/org/opentripplanner/raptor/` +**Transit Routing (Raptor)** — `raptor/router/src` - Range Raptor with multi-criteria pareto-optimal search; isolated from OTP (data supplied via SPI in `raptor/spi`). Test all changes with SpeedTest (see Performance Testing). diff --git a/application/pom.xml b/application/pom.xml index efd6c63f908..3da937af326 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -5,57 +5,65 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT application OpenTripPlanner - Application + + + + + com.google.errorprone + error_prone_annotations + 2.41.0 + + + + ${project.groupId} - gtfs-realtime-protobuf + astar ${project.version} ${project.groupId} - utils + gtfs-realtime-protobuf ${project.version} ${project.groupId} - raptor + street ${project.version} - ${project.groupId} - astar + org.opentripplanner.core + framework ${project.version} - ${project.groupId} - street + org.opentripplanner.core + utils ${project.version} - - - - - - net.sf.trove4j - trove4j - - - org.slf4j - slf4j-api + org.opentripplanner.raptor + router + ${project.version} - + + - org.slf4j - jul-to-slf4j - ${slf4j.version} + ch.poole + OpeningHoursParser + 0.29.0 @@ -63,129 +71,114 @@ logback-classic ${logback.version} - - net.logstash.logback - logstash-logback-encoder - 9.0 + com.azure + azure-core + 1.59.1 - - - com.google.dagger - dagger - ${google.dagger.version} + com.azure + azure-identity + 1.18.6 + compile - - - org.apache.lucene - lucene-core - ${lucene.version} + com.azure + azure-messaging-servicebus + 7.17.20 + - org.apache.lucene - lucene-queryparser - ${lucene.version} + com.beust + jcommander + 1.82 - org.apache.lucene - lucene-suggest - ${lucene.version} + org.opentripplanner + otp-client + 1.2.4 + test - + + - io.micrometer - micrometer-registry-prometheus - ${micrometer.version} + com.conveyal + kryo-tools + 1.6.0 + - io.micrometer - micrometer-registry-influx - ${micrometer.version} - test + com.fasterxml.jackson.core + jackson-annotations + 2.22 - - - - edu.ucar - netcdf4 - ${netcdf4.version} + com.fasterxml.jackson.core + jackson-core + ${jackson.version} - - org.entur - netex-java-model - ${netex-java-model.version} + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} - - - org.entur - siri-java-model - ${siri-java-model.version} + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + ${jackson.version} - - org.mobilitydata - gbfs-java-model - 1.0.14 + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} - - + + - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test + com.google.cloud + google-cloud-pubsub + - org.junit.jupiter - junit-jupiter-params - ${junit.version} - test + com.google.cloud + google-cloud-storage + - com.google.truth - truth - 1.4.5 - test + com.google.dagger + dagger + ${google.dagger.version} + - com.tngtech.archunit - archunit - 1.4.2 - test + com.google.guava + guava + - org.mockito - mockito-core - 5.23.0 - test + com.google.protobuf + protobuf-java - io.github.origin-energy - java-snapshot-testing-junit5 - 2.3.0 - test + com.graphql-java + graphql-java + 26.1 - org.opentripplanner - otp-client - 1.2.4 - test + com.graphql-java + graphql-java-extended-scalars + 24.0 - - - com.conveyal - kryo-tools - 1.6.0 + com.hivemq + hivemq-mqtt-client + 1.4.0 @@ -193,203 +186,220 @@ kryo-serializers 0.45 - - com.google.guava - guava + edu.ucar + netcdf4 + ${netcdf4.version} - - org.glassfish.jersey.core - jersey-server - ${jersey.version} + io.github.ci-cmg + mapbox-vector-tile + 4.0.7 - - org.glassfish.jersey.containers - jersey-container-grizzly2-http - ${jersey.version} + io.micrometer + micrometer-registry-prometheus + ${micrometer.version} - + - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} + net.java.dev.jets3t + jets3t + 0.9.4 - + - org.glassfish.jersey.media - jersey-media-jaxb - ${jersey.version} + net.logstash.logback + logstash-logback-encoder + 9.0 - - org.glassfish.jersey.inject - jersey-hk2 - ${jersey.version} + net.objecthunter + exp4j + 0.4.8 - - - org.glassfish.jaxb - jaxb-runtime - ${jaxb-runtime.version} + net.sf.trove4j + trove4j - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} + net.sourceforge.javacsv + javacsv + 2.0 - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} + org.apache.httpcomponents.client5 + httpclient5 + 5.6.4 + - com.fasterxml.jackson.datatype - jackson-datatype-jdk8 - ${jackson.version} + org.apache.lucene + lucene-core + ${lucene.version} - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - ${jackson.version} + org.apache.lucene + lucene-queryparser + ${lucene.version} + + + org.apache.lucene + lucene-suggest + ${lucene.version} - com.fasterxml.jackson.core - jackson-annotations - 2.22 + org.entur + netex-java-model + ${netex-java-model.version} - - - - - com.google.cloud - google-cloud-storage + org.entur + siri-java-model + ${siri-java-model.version} - - + - com.google.cloud - google-cloud-pubsub + org.geotools + gt-api - - - com.google.protobuf - protobuf-java + org.geotools + gt-coverage - - - org.onebusaway - onebusaway-gtfs - 14.2.3 + org.geotools + gt-geotiff - + - net.java.dev.jets3t - jets3t - 0.9.4 + org.glassfish.jaxb + jaxb-runtime + ${jaxb-runtime.version} - + - org.openstreetmap.pbf - osmpbf - 1.6.1 + org.glassfish.jersey.containers + jersey-container-grizzly2-http + ${jersey.version} - + - com.beust - jcommander - 1.82 + org.glassfish.jersey.core + jersey-server + ${jersey.version} + - com.graphql-java - graphql-java - 26.1 + org.glassfish.jersey.inject + jersey-hk2 + ${jersey.version} + - com.graphql-java - graphql-java-extended-scalars - 24.0 + org.glassfish.jersey.media + jersey-media-jaxb + ${jersey.version} + - org.apache.httpcomponents.client5 - httpclient5 - 5.6.4 + org.glassfish.jersey.media + jersey-media-json-jackson + ${jersey.version} - commons-cli - commons-cli - 1.5.0 - test + org.mobilitydata + gbfs-java-model + 1.0.14 + - net.sourceforge.javacsv - javacsv - 2.0 + org.onebusaway + onebusaway-gtfs + 14.2.3 + - com.hivemq - hivemq-mqtt-client - 1.4.0 + org.openstreetmap.pbf + osmpbf + 1.8.0 - io.github.ci-cmg - mapbox-vector-tile - 4.0.7 + org.opentripplanner + ojp-java-model + 2.0.7 + - net.objecthunter - exp4j - 0.4.8 + org.slf4j + jul-to-slf4j + ${slf4j.version} + - com.azure - azure-core - 1.59.1 + org.slf4j + slf4j-api + + - com.azure - azure-messaging-servicebus - 7.17.20 + com.google.truth + truth + test - com.azure - azure-identity - 1.18.6 - compile + com.tngtech.archunit + archunit + 1.5.0 + test - ch.poole - OpeningHoursParser - 0.29.0 + commons-cli + commons-cli + 1.5.0 + test - - org.opentripplanner - ojp-java-model - 2.0.7 + io.github.origin-energy + java-snapshot-testing-junit5 + 2.3.0 + test - - + + io.micrometer + micrometer-registry-influx + ${micrometer.version} + test + + org.apache.commons commons-compress 1.28.0 test + + org.junit.jupiter + junit-jupiter-params + test + + + org.mockito + mockito-core + 5.23.0 + test + + + org.opentripplanner.core + test-fixtures + ${project.version} + test + @@ -421,6 +431,13 @@ + + com.google.cloud.tools + jib-maven-plugin + + false + + org.apache.maven.plugins maven-compiler-plugin diff --git a/application/src/client/index.html b/application/src/client/index.html index 0a84a023372..03eda3651b1 100644 --- a/application/src/client/index.html +++ b/application/src/client/index.html @@ -5,8 +5,8 @@ OTP Debug - - + +
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionFeedParametersTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionFeedParametersTest.java index 1bf4536c91e..57382a7628f 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionFeedParametersTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionFeedParametersTest.java @@ -4,8 +4,8 @@ import java.net.URI; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner._support.net.URIUtils; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class EmissionFeedParametersTest { diff --git a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionParametersTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionParametersTest.java index 5f4f90ede7d..00c2e48c06d 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionParametersTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionParametersTest.java @@ -5,8 +5,8 @@ import java.net.URI; import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner._support.net.URIUtils; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.framework.model.Gram; class EmissionParametersTest { diff --git a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionVehicleParametersTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionVehicleParametersTest.java index 2213b75a207..e89e2f714f0 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionVehicleParametersTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/emission/parameters/EmissionVehicleParametersTest.java @@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.framework.model.Gram; class EmissionVehicleParametersTest { diff --git a/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/model/calendar/ServiceCalendarTest.java b/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/model/calendar/ServiceCalendarTest.java index 7c3a8ff3e99..2faf4afc05a 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/model/calendar/ServiceCalendarTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/model/calendar/ServiceCalendarTest.java @@ -8,7 +8,7 @@ import java.time.LocalDate; import java.time.Month; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class ServiceCalendarTest { diff --git a/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/parameters/EmpiricalDelayParametersTest.java b/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/parameters/EmpiricalDelayParametersTest.java index c41d9b3cf21..be6b2080b50 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/parameters/EmpiricalDelayParametersTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/empiricaldelay/parameters/EmpiricalDelayParametersTest.java @@ -7,8 +7,8 @@ import java.net.URI; import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner._support.net.URIUtils; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class EmpiricalDelayParametersTest { diff --git a/application/src/ext-test/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareServiceTest.java index bd3c6425b0a..c6d087a8af6 100644 --- a/application/src/ext-test/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareServiceTest.java +++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareServiceTest.java @@ -21,6 +21,9 @@ import static org.opentripplanner.transit.model.basic.Money.ZERO_USD; import static org.opentripplanner.transit.model.basic.Money.usDollars; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -48,6 +51,7 @@ import org.opentripplanner.model.plan.Itinerary; import org.opentripplanner.model.plan.Leg; import org.opentripplanner.model.plan.Place; +import org.opentripplanner.model.plan.leg.ScheduledTransitLeg; import org.opentripplanner.routing.core.FareType; import org.opentripplanner.street.geometry.WgsCoordinate; import org.opentripplanner.transit.model.basic.Money; @@ -228,6 +232,36 @@ void calculateFareForSingleAgency() { calculateFare(rides, FareType.electronicYouth, ZERO_USD); } + @Test + void communityTransitRideFreeWeek() { + var seattle = ZoneId.of("America/Los_Angeles"); + var octoberFirst = LocalDate.of(2026, 10, 1).atStartOfDay(seattle); + var octoberNinth = LocalDate.of(2026, 10, 9).atStartOfDay(seattle); + + calculateFare( + List.of(getLegAt(COMM_TRANS_AGENCY_ID, "400", octoberFirst.minusMinutes(1))), + regular, + usDollars(2.5f) + ); + calculateFare(List.of(getLegAt(COMM_TRANS_AGENCY_ID, "400", octoberFirst)), regular, ZERO_USD); + calculateFare( + List.of(getLegAt(COMM_TRANS_FLEX_AGENCY_ID, "DART", octoberNinth.minusMinutes(1))), + FareType.electronicSenior, + ZERO_USD + ); + calculateFare( + List.of(getLegAt(COMM_TRANS_AGENCY_ID, "400", octoberNinth)), + regular, + usDollars(2.5f) + ); + // Sound Transit routes retain their fare even when operated by Community Transit. + calculateFare( + List.of(getLegAt(COMM_TRANS_AGENCY_ID, "512", octoberFirst)), + regular, + THREE_DOLLARS + ); + } + /** * WSF do not accept free transfers. This test is to make sure the rider is charged the cash price for WSF as well * as the highest fare where Orca can be used. @@ -577,39 +611,82 @@ void testNonOrcaAgencies() { } /** - * We explicitly do not calculate monorail fares + * Test monorail fares with transfers to ensure transfer logic works correctly + * with monorail's unique fare structure. Update: monorail doesn't accept transfers anymore */ @Test - void calculateMonorailFares() { - List rides = List.of(getLeg(MONORAIL_AGENCY_ID, 0)); + void calculateMonorailFaresWithTransfers() { + List rides = List.of( + getLeg(KC_METRO_AGENCY_ID, 0), + getLeg(MONORAIL_AGENCY_ID, 30), + getLeg(COMM_TRANS_AGENCY_ID, 60) + ); - calculateFare(rides, regular, usDollars(0.00f)); - calculateFare(rides, FareType.senior, usDollars(0.00f)); - calculateFare(rides, FareType.youth, usDollars(0.00f)); - calculateFare(rides, FareType.electronicSpecial, usDollars(0.00f)); - calculateFare(rides, FareType.electronicRegular, usDollars(0.00f)); - calculateFare(rides, FareType.electronicSenior, usDollars(0.00f)); + calculateFare(rides, regular, THREE_DOLLARS.plus(usDollars(2.50f).plus(usDollars(4.00f)))); + calculateFare(rides, FareType.senior, usDollars(4.00f)); + calculateFare(rides, FareType.youth, usDollars(2.00f)); + calculateFare(rides, FareType.electronicRegular, usDollars(3.00f).plus(usDollars(4.00f))); + // Monorail charges $2.00 reduced fare for senior/LIFT (no free transfer to/from monorail) + calculateFare(rides, FareType.electronicSenior, usDollars(3.00f)); calculateFare(rides, FareType.electronicYouth, usDollars(0.00f)); + calculateFare(rides, FareType.electronicSpecial, usDollars(3.00f)); + + var fares = orcaFareService.calculateFaresForType(USD, FareType.electronicRegular, rides, null); + + // KC Metro is charged its normal fare + assertLegFareEquals(300, rides.get(0), fares, false); + // Monorail doesn't accept or give transfers + assertLegFareEquals(400, rides.get(1), fares, false); + // CommTrans still gets a free transfer from KC Metro (monorail doesn't break the chain) + assertLegFareEquals(0, rides.get(2), fares, true); } /** - * Test monorail fares with transfers to ensure transfer logic works correctly - * with monorail's unique fare structure. Update: we now exclude monorail from fare calcs + * Test single-leg monorail fares to confirm the reduced rate of $2.00 for senior and LIFT + * categories, and the regular adult fare of $4.00. */ @Test - void calculateMonorailFaresWithTransfers() { - List rides = List.of( - getLeg(MONORAIL_AGENCY_ID, 0), - getLeg(KC_METRO_AGENCY_ID, 30), - getLeg(COMM_TRANS_AGENCY_ID, 60) + void calculateMonorailReducedFares() { + List rides = List.of(getLeg(MONORAIL_AGENCY_ID, 0)); + calculateFare(rides, regular, usDollars(4.00f)); + calculateFare(rides, FareType.senior, TWO_DOLLARS); + calculateFare(rides, FareType.youth, usDollars(2.00f)); + calculateFare(rides, FareType.electronicRegular, usDollars(4.00f)); + calculateFare(rides, FareType.electronicSenior, TWO_DOLLARS); + calculateFare(rides, FareType.electronicYouth, ZERO_USD); + calculateFare(rides, FareType.electronicSpecial, TWO_DOLLARS); + } + + static Stream monorailElectronicFares() { + return Stream.of( + Arguments.of(FareType.electronicRegular, THREE_DOLLARS, usDollars(4.00f)), + Arguments.of(FareType.electronicSenior, ONE_DOLLAR, TWO_DOLLARS), + Arguments.of(FareType.electronicSpecial, ONE_DOLLAR, TWO_DOLLARS), + Arguments.of(FareType.electronicYouth, ZERO_USD, ZERO_USD) ); + } - calculateFare(rides, regular, THREE_DOLLARS.plus(usDollars(2.50f))); - calculateFare(rides, FareType.youth, ZERO_USD); - calculateFare(rides, FareType.electronicRegular, usDollars(3.00f)); - calculateFare(rides, FareType.electronicSenior, usDollars(1.00f)); - calculateFare(rides, FareType.electronicYouth, usDollars(0.00f)); - calculateFare(rides, FareType.electronicSpecial, usDollars(1.00f)); + @ParameterizedTest + @MethodSource("monorailElectronicFares") + void monorailChargesFareOnEveryElectronicRide( + FareType fareType, + Money metroFare, + Money monorailFare + ) { + var rides = List.of( + getLeg(KC_METRO_AGENCY_ID, 0), + getLeg(MONORAIL_AGENCY_ID, 30), + getLeg(MONORAIL_AGENCY_ID, 60) + ); + + calculateFare(rides, fareType, metroFare.plus(monorailFare.times(2))); + + var fares = orcaFareService.calculateFaresForType(USD, fareType, rides, null); + for (var monorailRide : rides.subList(1, rides.size())) { + var offers = fares.getLegProducts().get(monorailRide); + assertEquals(1, offers.size()); + assertEquals(monorailFare, offers.iterator().next().fareProduct().price()); + } } static Stream allTypes() { @@ -712,6 +789,15 @@ private static Leg getLeg(String agencyId, String shortName, long startTimeMins) return createLeg(agencyId, shortName, 3, startTimeMins, "test", "test", ""); } + private static Leg getLegAt(String agencyId, String shortName, ZonedDateTime startTime) { + return ((ScheduledTransitLeg) getLeg(agencyId, shortName, 0)) + .copyOf() + .withStartTime(startTime) + .withEndTime(startTime.plusMinutes(12)) + .withServiceDate(startTime.toLocalDate()) + .build(); + } + private static Leg getLeg( String agencyId, String shortName, diff --git a/application/src/ext-test/java/org/opentripplanner/ext/ojp/resource/SecureXmlTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ojp/resource/SecureXmlTest.java new file mode 100644 index 00000000000..bb97f50d4bd --- /dev/null +++ b/application/src/ext-test/java/org/opentripplanner/ext/ojp/resource/SecureXmlTest.java @@ -0,0 +1,107 @@ +package org.opentripplanner.ext.ojp.resource; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import jakarta.xml.bind.JAXBException; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import javax.xml.transform.TransformerException; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +/** + * The OJP and TRIAS endpoints take an XML document straight from an unauthenticated client, so a + * document type declaration must never be resolved: an external entity would otherwise turn the + * endpoints into a local file reader and an internal HTTP client (XXE). + */ +class SecureXmlTest { + + private static final String CANARY = "top-secret-xxe-canary"; + + @TempDir + static Path tempDir; + + private static String secretFileUri; + + @BeforeAll + static void writeSecretFile() throws IOException { + var secret = Files.writeString(tempDir.resolve("secret.txt"), CANARY); + secretFileUri = secret.toUri().toString(); + } + + @Test + void rejectTriasRequestWithExternalEntity() { + var ex = assertThrows(TransformerException.class, () -> + OjpToTriasTransformer.triasToOjp(triasRequestWithExternalEntity()) + ); + assertDoctypeRejected(ex); + } + + @Test + void rejectOjpRequestWithExternalEntity() { + var ex = assertThrows(JAXBException.class, () -> + OjpCodec.deserialize(ojpRequestWithExternalEntity()) + ); + assertDoctypeRejected(ex); + } + + /** + * The parser must fail on the declaration itself, and no part of the referenced file may show up + * in what the caller gets back. + */ + private static void assertDoctypeRejected(Exception ex) { + var messages = causeMessages(ex); + assertThat(messages.toString()).contains("DOCTYPE"); + assertThat(messages.toString()).doesNotContain(CANARY); + } + + private static List causeMessages(Throwable ex) { + var messages = new ArrayList(); + for (var t = ex; t != null; t = t.getCause() == t ? null : t.getCause()) { + messages.add(t.getMessage()); + } + return messages; + } + + private static String triasRequestWithExternalEntity() { + return """ + + ]> + + + 2025-01-27T13:34:00 + &xxe; + + + + + &xxe; + + + + + + + """.formatted(secretFileUri); + } + + private static String ojpRequestWithExternalEntity() { + return """ + + ]> + + + + 2025-01-27T13:34:00 + &xxe; + + + + """.formatted(secretFileUri); + } +} diff --git a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/configure/EmpiricalDelayGraphBuilderModule.java b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/configure/EmpiricalDelayGraphBuilderModule.java index 4cf569c3d6f..2dfc277d141 100644 --- a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/configure/EmpiricalDelayGraphBuilderModule.java +++ b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/configure/EmpiricalDelayGraphBuilderModule.java @@ -4,7 +4,7 @@ import dagger.Provides; import jakarta.inject.Singleton; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayRepository; import org.opentripplanner.ext.empiricaldelay.internal.graphbuilder.EmpiricalDelayGraphBuilder; import org.opentripplanner.framework.application.OTPFeature; diff --git a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/EmpiricalDelayGraphBuilder.java b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/EmpiricalDelayGraphBuilder.java index 713823d80b0..f340463fa92 100644 --- a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/EmpiricalDelayGraphBuilder.java +++ b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/EmpiricalDelayGraphBuilder.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayRepository; import org.opentripplanner.ext.empiricaldelay.internal.csvinput.EmpiricalDelayCsvDataReader; diff --git a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/TripDelaysMapper.java b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/TripDelaysMapper.java index a6f95b7fce8..3588a9db260 100644 --- a/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/TripDelaysMapper.java +++ b/application/src/ext/java/org/opentripplanner/ext/empiricaldelay/internal/graphbuilder/TripDelaysMapper.java @@ -6,7 +6,7 @@ import java.util.Map; import java.util.Optional; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.ext.empiricaldelay.internal.model.DelayAtStopDto; import org.opentripplanner.ext.empiricaldelay.internal.model.TripDelaysAgregator; diff --git a/application/src/ext/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareService.java index df5f6433594..498a050c3ae 100644 --- a/application/src/ext/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareService.java +++ b/application/src/ext/java/org/opentripplanner/ext/fares/service/gtfs/v1/custom/OrcaFareService.java @@ -4,6 +4,8 @@ import static org.opentripplanner.transit.model.basic.Money.usDollars; import java.time.Duration; +import java.time.LocalDate; +import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Collection; @@ -60,6 +62,9 @@ public boolean isValidAt(ZonedDateTime checkTime) { } private static final Duration MAX_TRANSFER_DISCOUNT_DURATION = Duration.ofHours(2); + private static final ZoneId COMMUNITY_TRANSIT_TIME_ZONE = ZoneId.of("America/Los_Angeles"); + private static final LocalDate COMMUNITY_TRANSIT_FREE_FARE_START = LocalDate.of(2026, 10, 1); + private static final LocalDate COMMUNITY_TRANSIT_FREE_FARE_END = LocalDate.of(2026, 10, 9); public static final String COMM_TRANS_AGENCY_ID = "29"; public static final String COMM_TRANS_FLEX_AGENCY_ID = "4969"; @@ -139,6 +144,7 @@ public boolean permitsFreeTransfers(ZonedDateTime startTime) { WHATCOM_LOCAL, WHATCOM_CROSS_COUNTY, KITSAP_TRANSIT_FAST_FERRY, + MONORAIL, SKAGIT_CROSS_COUNTY -> false; default -> true; }; @@ -288,12 +294,21 @@ private Optional getLegFare( if (rideType == null) { return defaultFare; } + if (rideType == RideType.COMM_TRANS_LOCAL_SWIFT) { + var date = leg.startTime().withZoneSameInstant(COMMUNITY_TRANSIT_TIME_ZONE).toLocalDate(); + if ( + !date.isBefore(COMMUNITY_TRANSIT_FREE_FARE_START) && + date.isBefore(COMMUNITY_TRANSIT_FREE_FARE_END) + ) { + return Optional.of(ZERO_USD); + } + } // Filter out agencies that don't accept ORCA from the electronic fare type if (usesOrca(fareType) && !rideType.agencyAcceptsOrca()) { return Optional.empty(); } return switch (fareType) { - case youth, electronicYouth -> getYouthFare(rideType, defaultFare); + case youth, electronicYouth -> getYouthFare(fareType, rideType, defaultFare); case electronicSpecial -> getLiftFare(rideType, defaultFare, leg); case electronicSenior, senior -> getSeniorFare(fareType, rideType, defaultFare, leg); case regular, electronicRegular -> getRegularFare(fareType, rideType, defaultFare, leg); @@ -340,7 +355,7 @@ private Optional getRegularFare( SKAGIT_CROSS_COUNTY -> fareType.equals(FareType.electronicRegular) ? Optional.empty() : defaultFare; - case MONORAIL -> Optional.empty(); + case MONORAIL -> optionalUSD(4.00f); default -> defaultFare; }; } @@ -368,7 +383,7 @@ private Optional getLiftFare(RideType rideType, Optional defaultFa EVERETT_TRANSIT, PIERCE_COUNTY_TRANSIT, SEATTLE_STREET_CAR -> optionalUSD(1.00f); - case MONORAIL -> Optional.empty(); + case MONORAIL -> optionalUSD(2.00f); case WASHINGTON_STATE_FERRIES -> defaultFare.map(df -> getWashingtonStateFerriesFare(route.getLongName(), FareType.electronicSpecial, df) ); @@ -408,7 +423,7 @@ private Optional getSeniorFare( PIERCE_COUNTY_TRANSIT, SEATTLE_STREET_CAR, KITSAP_TRANSIT -> optionalUSD(1f); - case MONORAIL -> Optional.empty(); + case MONORAIL -> optionalUSD(2.00f); case KC_WATER_TAXI_VASHON_ISLAND -> optionalUSD(3f); case KC_WATER_TAXI_WEST_SEATTLE -> optionalUSD(2.5f); case KITSAP_TRANSIT_FAST_FERRY -> defaultFare.map(Money::half); @@ -424,15 +439,21 @@ private Optional getSeniorFare( /** * Apply youth discount fares based on the ride type. Youth ride free in Washington. */ - private Optional getYouthFare(RideType rideType, Optional defaultFare) { + private Optional getYouthFare( + FareType fareType, + RideType rideType, + Optional defaultFare + ) { return switch (rideType) { case UNKNOWN, SKAGIT_TRANSIT, SKAGIT_LOCAL, SKAGIT_CROSS_COUNTY, - MONORAIL, LINK_SHUTTLE -> Optional.empty(); + case MONORAIL -> fareType == FareType.electronicYouth + ? Optional.of(ZERO_USD) + : optionalUSD(2.00f); default -> Optional.of(ZERO_USD); }; } diff --git a/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpCodec.java b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpCodec.java index ddbf0c018ab..82686300ca9 100644 --- a/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpCodec.java +++ b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpCodec.java @@ -4,20 +4,20 @@ import jakarta.ws.rs.core.StreamingOutput; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; -import java.io.ByteArrayInputStream; import java.io.OutputStreamWriter; -import java.nio.charset.StandardCharsets; import javax.xml.transform.TransformerException; -import javax.xml.transform.stream.StreamSource; class OjpCodec { private static final JAXBContext CONTEXT = jaxbContext(); + /** + * Reads an OJP request received from a client. The input is untrusted, so it is read with + * {@link SecureXml} rather than relying on the JAXB implementation's default restrictions. + */ static OJP deserialize(String trias) throws JAXBException, TransformerException { - var source = new StreamSource(new ByteArrayInputStream(trias.getBytes(StandardCharsets.UTF_8))); var unmarshaller = CONTEXT.createUnmarshaller(); - return (OJP) unmarshaller.unmarshal(source); + return (OJP) unmarshaller.unmarshal(SecureXml.source(trias)); } static StreamingOutput serialize(OJP ojpOutput) { diff --git a/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpToTriasTransformer.java b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpToTriasTransformer.java index 100be497e90..a4379686d81 100644 --- a/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpToTriasTransformer.java +++ b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/OjpToTriasTransformer.java @@ -13,7 +13,6 @@ import javax.xml.transform.Templates; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; @@ -53,20 +52,21 @@ static void ojpToTrias(OJP ojp, Writer writer) { } } + /** + * Converts a TRIAS request received from a client into an OJP object. + *

+ * The input is untrusted, so it is read with {@link SecureXml}: a document type declaration is + * rejected rather than resolved, which is what keeps this method from reading local files and + * making requests to internal services on behalf of the caller. + */ static OJP triasToOjp(String trias) throws JAXBException, TransformerException { - var xmlSource = new StreamSource( - new ByteArrayInputStream(trias.getBytes(StandardCharsets.UTF_8)) - ); - var transformer = TRIAS_TO_OJP_TEMPLATE.newTransformer(); var writer = new ByteArrayOutputStream(); - transformer.transform(xmlSource, new StreamResult(writer)); + transformer.transform(SecureXml.source(trias), new StreamResult(writer)); var transformedXml = writer.toString(StandardCharsets.UTF_8); var unmarshaller = CONTEXT.createUnmarshaller(); - return (OJP) unmarshaller.unmarshal( - new ByteArrayInputStream(transformedXml.getBytes(StandardCharsets.UTF_8)) - ); + return (OJP) unmarshaller.unmarshal(SecureXml.source(transformedXml)); } static void ojpToTrias(Writer writer, StreamSource xmlSource) @@ -80,8 +80,7 @@ static Templates loadTemplate(String name) { try { var xslt = OjpToTriasTransformer.class.getResource(name).openStream(); var xsltSource = new StreamSource(xslt); - TransformerFactory factory = TransformerFactory.newInstance(); - return factory.newTemplates(xsltSource); + return SecureXml.transformerFactory().newTemplates(xsltSource); } catch (TransformerConfigurationException | IOException e) { throw new RuntimeException(e); } diff --git a/application/src/ext/java/org/opentripplanner/ext/ojp/resource/SecureXml.java b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/SecureXml.java new file mode 100644 index 00000000000..b669c28fc26 --- /dev/null +++ b/application/src/ext/java/org/opentripplanner/ext/ojp/resource/SecureXml.java @@ -0,0 +1,115 @@ +package org.opentripplanner.ext.ojp.resource; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import javax.xml.XMLConstants; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.sax.SAXSource; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; + +/** + * Factories for the XML machinery used by the OJP and TRIAS APIs, configured so that a document + * received from a client can never make the server load anything from the file system or the + * network. + *

+ * The APIs accept an XML document in the request body. If that document is parsed with the JDK + * defaults, a {@code DOCTYPE} declaring an external entity is resolved while parsing, which turns + * the endpoint into a local file reader and an internal HTTP client (XXE). Neither the OJP nor the + * TRIAS profile allows a document type declaration, so we reject one outright instead of merely + * disabling entity resolution. + *

+ * The default JDK implementations are requested explicitly: the feature names below are the ones + * the JDK parsers understand, and a third-party parser on the classpath must not be able to + * silently take over the request path. + */ +final class SecureXml { + + /** + * Rejects a document type declaration instead of resolving it. Not a {@link XMLConstants} + * constant, but understood by the JDK (Xerces-derived) parsers. + */ + private static final String DISALLOW_DOCTYPE_DECL = + "http://apache.org/xml/features/disallow-doctype-decl"; + + private static final String EXTERNAL_GENERAL_ENTITIES = + "http://xml.org/sax/features/external-general-entities"; + + private static final String EXTERNAL_PARAMETER_ENTITIES = + "http://xml.org/sax/features/external-parameter-entities"; + + private SecureXml() {} + + /** + * Wraps the given document in a source that is parsed without resolving anything outside the + * document itself. Use this for every XML document that originates from a client. + */ + static SAXSource source(String xml) { + return source(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))); + } + + /** + * @see #source(String) + */ + static SAXSource source(InputStream xml) { + try { + // a SAXParserFactory is not documented as thread-safe, so it is not shared between requests + var reader = saxParserFactory().newSAXParser().getXMLReader(); + return new SAXSource(reader, new InputSource(xml)); + } catch (ParserConfigurationException | SAXException e) { + throw new IllegalStateException("Could not create a hardened XML reader.", e); + } + } + + /** + * A factory for XSLT templates which is not allowed to reach outside the stylesheet it is given. + */ + static TransformerFactory transformerFactory() { + var factory = TransformerFactory.newDefaultInstance(); + enableSecureProcessing(factory); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + return factory; + } + + private static SAXParserFactory saxParserFactory() throws ParserConfigurationException { + var factory = SAXParserFactory.newDefaultInstance(); + // the stylesheets match on namespaced elements, so the reader has to report namespaces + factory.setNamespaceAware(true); + factory.setValidating(false); + factory.setXIncludeAware(false); + setFeature(factory, XMLConstants.FEATURE_SECURE_PROCESSING, true); + setFeature(factory, DISALLOW_DOCTYPE_DECL, true); + setFeature(factory, EXTERNAL_GENERAL_ENTITIES, false); + setFeature(factory, EXTERNAL_PARAMETER_ENTITIES, false); + return factory; + } + + private static void setFeature(SAXParserFactory factory, String name, boolean value) + throws ParserConfigurationException { + try { + factory.setFeature(name, value); + } catch (SAXNotRecognizedException | SAXNotSupportedException e) { + throw new ParserConfigurationException( + "The XML parser does not support the security feature '%s'.".formatted(name) + ); + } + } + + private static void enableSecureProcessing(TransformerFactory factory) { + try { + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + } catch (TransformerConfigurationException e) { + throw new IllegalStateException( + "The XSLT implementation does not support secure processing.", + e + ); + } + } +} diff --git a/application/src/ext/java/org/opentripplanner/ext/siri/updater/mqtt/SiriETMqttUpdater.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/mqtt/SiriETMqttUpdater.java index 1375af5cdf6..acd1a3a5a9c 100644 --- a/application/src/ext/java/org/opentripplanner/ext/siri/updater/mqtt/SiriETMqttUpdater.java +++ b/application/src/ext/java/org/opentripplanner/ext/siri/updater/mqtt/SiriETMqttUpdater.java @@ -1,7 +1,6 @@ package org.opentripplanner.ext.siri.updater.mqtt; import java.util.function.Consumer; -import javax.annotation.Nonnull; import org.opentripplanner.updater.TransitRealTimeUpdateContext; import org.opentripplanner.updater.spi.GraphUpdater; import org.opentripplanner.updater.spi.UpdateResult; @@ -33,9 +32,7 @@ public SiriETMqttUpdater( } @Override - public void setup( - @Nonnull WriteToGraphCallback writeToGraphCallback - ) { + public void setup(WriteToGraphCallback writeToGraphCallback) { this.writeToGraphCallback = writeToGraphCallback; } diff --git a/application/src/main/java/org/opentripplanner/api/common/Message.java b/application/src/main/java/org/opentripplanner/api/common/Message.java index 89bde9d2f58..c257f85d045 100644 --- a/application/src/main/java/org/opentripplanner/api/common/Message.java +++ b/application/src/main/java/org/opentripplanner/api/common/Message.java @@ -1,7 +1,7 @@ package org.opentripplanner.api.common; import java.util.Locale; -import org.opentripplanner.core.framework.resources.ResourceBundleAdaptor; +import org.opentripplanner.core.model.resources.ResourceBundleAdaptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripImpl.java index 366dde6f059..0466ced4f11 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripImpl.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripImpl.java @@ -41,7 +41,6 @@ import org.opentripplanner.transit.model.timetable.Timetable; import org.opentripplanner.transit.model.timetable.Trip; import org.opentripplanner.transit.model.timetable.TripOnServiceDate; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.service.TransitService; import org.opentripplanner.utils.time.ServiceDateUtils; @@ -155,7 +154,7 @@ public DataFetcher arrivalStoptime() { Instant midnight = ServiceDateUtils.asStartOfService(serviceDate, timeZone).toInstant(); Timetable timetable = transitService.findTimetable(tripPattern, serviceDate); - TripTimes tripTimes = timetable.getTripTimes(trip); + var tripTimes = timetable.getTripTimes(trip); if (tripTimes == null) { return null; } @@ -211,7 +210,7 @@ public DataFetcher departureStoptime() { Instant midnight = ServiceDateUtils.asStartOfService(serviceDate, timeZone).toInstant(); Timetable timetable = transitService.findTimetable(tripPattern, serviceDate); - TripTimes tripTimes = timetable.getTripTimes(trip); + var tripTimes = timetable.getTripTimes(trip); if (tripTimes == null) { return null; } diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripOnServiceDateImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripOnServiceDateImpl.java index b8b8825f6f3..0511bf96af7 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripOnServiceDateImpl.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/TripOnServiceDateImpl.java @@ -138,7 +138,7 @@ public DataFetcher vehicleId() { } var tripTimes = arguments.timetable().getTripTimes(arguments.trip()); return Optional.ofNullable(tripTimes) - .flatMap(t -> ((TripTimes) t).getVehicleId()) + .flatMap(TripTimes::getVehicleId) .map(FeedScopedId::toString) .orElse(null); }; diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java index c34a303cb65..078d7d9e4c7 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.opentripplanner.core.model.basic.Cost; public class GraphQLTypes { @@ -338,7 +339,7 @@ public static class GraphQLBicycleParkingPreferencesInput { private List filters; private List preferred; - private org.opentripplanner.core.model.basic.Cost unpreferredCost; + private Cost unpreferredCost; public GraphQLBicycleParkingPreferencesInput(Map args) { if (args != null) { @@ -354,9 +355,7 @@ public GraphQLBicycleParkingPreferencesInput(Map args) { .map(o -> o == null ? null : new GraphQLParkingFilterInput(o)) .collect(Collectors.toList()); } - this.unpreferredCost = (org.opentripplanner.core.model.basic.Cost) args.get( - "unpreferredCost" - ); + this.unpreferredCost = (Cost) args.get("unpreferredCost"); } } @@ -368,7 +367,7 @@ public List getGraphQLPreferred() { return this.preferred; } - public org.opentripplanner.core.model.basic.Cost getGraphQLUnpreferredCost() { + public Cost getGraphQLUnpreferredCost() { return this.unpreferredCost; } @@ -380,16 +379,14 @@ public void setGraphQLPreferred(List preferred) { this.preferred = preferred; } - public void setGraphQLUnpreferredCost( - org.opentripplanner.core.model.basic.Cost unpreferredCost - ) { + public void setGraphQLUnpreferredCost(Cost unpreferredCost) { this.unpreferredCost = unpreferredCost; } } public static class GraphQLBicyclePreferencesInput { - private org.opentripplanner.core.model.basic.Cost boardCost; + private Cost boardCost; private GraphQLCyclingOptimizationInput optimization; private GraphQLBicycleParkingPreferencesInput parking; private Double reluctance; @@ -399,7 +396,7 @@ public static class GraphQLBicyclePreferencesInput { public GraphQLBicyclePreferencesInput(Map args) { if (args != null) { - this.boardCost = (org.opentripplanner.core.model.basic.Cost) args.get("boardCost"); + this.boardCost = (Cost) args.get("boardCost"); this.optimization = new GraphQLCyclingOptimizationInput( (Map) args.get("optimization") ); @@ -415,7 +412,7 @@ public GraphQLBicyclePreferencesInput(Map args) { } } - public org.opentripplanner.core.model.basic.Cost getGraphQLBoardCost() { + public Cost getGraphQLBoardCost() { return this.boardCost; } @@ -443,7 +440,7 @@ public GraphQLBicycleWalkPreferencesInput getGraphQLWalk() { return this.walk; } - public void setGraphQLBoardCost(org.opentripplanner.core.model.basic.Cost boardCost) { + public void setGraphQLBoardCost(Cost boardCost) { this.boardCost = boardCost; } @@ -517,19 +514,17 @@ public void setGraphQLDestinationBicyclePolicy( public static class GraphQLBicycleWalkPreferencesCostInput { - private org.opentripplanner.core.model.basic.Cost mountDismountCost; + private Cost mountDismountCost; private Double reluctance; public GraphQLBicycleWalkPreferencesCostInput(Map args) { if (args != null) { - this.mountDismountCost = (org.opentripplanner.core.model.basic.Cost) args.get( - "mountDismountCost" - ); + this.mountDismountCost = (Cost) args.get("mountDismountCost"); this.reluctance = (Double) args.get("reluctance"); } } - public org.opentripplanner.core.model.basic.Cost getGraphQLMountDismountCost() { + public Cost getGraphQLMountDismountCost() { return this.mountDismountCost; } @@ -537,9 +532,7 @@ public Double getGraphQLReluctance() { return this.reluctance; } - public void setGraphQLMountDismountCost( - org.opentripplanner.core.model.basic.Cost mountDismountCost - ) { + public void setGraphQLMountDismountCost(Cost mountDismountCost) { this.mountDismountCost = mountDismountCost; } @@ -862,7 +855,7 @@ public static class GraphQLCarParkingPreferencesInput { private List filters; private List preferred; - private org.opentripplanner.core.model.basic.Cost unpreferredCost; + private Cost unpreferredCost; public GraphQLCarParkingPreferencesInput(Map args) { if (args != null) { @@ -878,9 +871,7 @@ public GraphQLCarParkingPreferencesInput(Map args) { .map(o -> o == null ? null : new GraphQLParkingFilterInput(o)) .collect(Collectors.toList()); } - this.unpreferredCost = (org.opentripplanner.core.model.basic.Cost) args.get( - "unpreferredCost" - ); + this.unpreferredCost = (Cost) args.get("unpreferredCost"); } } @@ -892,7 +883,7 @@ public List getGraphQLPreferred() { return this.preferred; } - public org.opentripplanner.core.model.basic.Cost getGraphQLUnpreferredCost() { + public Cost getGraphQLUnpreferredCost() { return this.unpreferredCost; } @@ -904,23 +895,21 @@ public void setGraphQLPreferred(List preferred) { this.preferred = preferred; } - public void setGraphQLUnpreferredCost( - org.opentripplanner.core.model.basic.Cost unpreferredCost - ) { + public void setGraphQLUnpreferredCost(Cost unpreferredCost) { this.unpreferredCost = unpreferredCost; } } public static class GraphQLCarPreferencesInput { - private org.opentripplanner.core.model.basic.Cost boardCost; + private Cost boardCost; private GraphQLCarParkingPreferencesInput parking; private Double reluctance; private GraphQLCarRentalPreferencesInput rental; public GraphQLCarPreferencesInput(Map args) { if (args != null) { - this.boardCost = (org.opentripplanner.core.model.basic.Cost) args.get("boardCost"); + this.boardCost = (Cost) args.get("boardCost"); this.parking = new GraphQLCarParkingPreferencesInput( (Map) args.get("parking") ); @@ -931,7 +920,7 @@ public GraphQLCarPreferencesInput(Map args) { } } - public org.opentripplanner.core.model.basic.Cost getGraphQLBoardCost() { + public Cost getGraphQLBoardCost() { return this.boardCost; } @@ -947,7 +936,7 @@ public GraphQLCarRentalPreferencesInput getGraphQLRental() { return this.rental; } - public void setGraphQLBoardCost(org.opentripplanner.core.model.basic.Cost boardCost) { + public void setGraphQLBoardCost(Cost boardCost) { this.boardCost = boardCost; } @@ -1154,12 +1143,12 @@ public enum GraphQLDependentFareProductFilter { public static class GraphQLDestinationBicyclePolicyInput { private Boolean allowKeeping; - private org.opentripplanner.core.model.basic.Cost keepingCost; + private Cost keepingCost; public GraphQLDestinationBicyclePolicyInput(Map args) { if (args != null) { this.allowKeeping = (Boolean) args.get("allowKeeping"); - this.keepingCost = (org.opentripplanner.core.model.basic.Cost) args.get("keepingCost"); + this.keepingCost = (Cost) args.get("keepingCost"); } } @@ -1167,7 +1156,7 @@ public Boolean getGraphQLAllowKeeping() { return this.allowKeeping; } - public org.opentripplanner.core.model.basic.Cost getGraphQLKeepingCost() { + public Cost getGraphQLKeepingCost() { return this.keepingCost; } @@ -1175,7 +1164,7 @@ public void setGraphQLAllowKeeping(Boolean allowKeeping) { this.allowKeeping = allowKeeping; } - public void setGraphQLKeepingCost(org.opentripplanner.core.model.basic.Cost keepingCost) { + public void setGraphQLKeepingCost(Cost keepingCost) { this.keepingCost = keepingCost; } } @@ -1183,12 +1172,12 @@ public void setGraphQLKeepingCost(org.opentripplanner.core.model.basic.Cost keep public static class GraphQLDestinationScooterPolicyInput { private Boolean allowKeeping; - private org.opentripplanner.core.model.basic.Cost keepingCost; + private Cost keepingCost; public GraphQLDestinationScooterPolicyInput(Map args) { if (args != null) { this.allowKeeping = (Boolean) args.get("allowKeeping"); - this.keepingCost = (org.opentripplanner.core.model.basic.Cost) args.get("keepingCost"); + this.keepingCost = (Cost) args.get("keepingCost"); } } @@ -1196,7 +1185,7 @@ public Boolean getGraphQLAllowKeeping() { return this.allowKeeping; } - public org.opentripplanner.core.model.basic.Cost getGraphQLKeepingCost() { + public Cost getGraphQLKeepingCost() { return this.keepingCost; } @@ -1204,7 +1193,7 @@ public void setGraphQLAllowKeeping(Boolean allowKeeping) { this.allowKeeping = allowKeeping; } - public void setGraphQLKeepingCost(org.opentripplanner.core.model.basic.Cost keepingCost) { + public void setGraphQLKeepingCost(Cost keepingCost) { this.keepingCost = keepingCost; } } @@ -1913,12 +1902,12 @@ public void setGraphQLOriginModesWithParentStation( public static class GraphQLLinearCostFunctionInput { private Double coefficient; - private org.opentripplanner.core.model.basic.Cost constant; + private Cost constant; public GraphQLLinearCostFunctionInput(Map args) { if (args != null) { this.coefficient = (Double) args.get("coefficient"); - this.constant = (org.opentripplanner.core.model.basic.Cost) args.get("constant"); + this.constant = (Cost) args.get("constant"); } } @@ -1926,7 +1915,7 @@ public Double getGraphQLCoefficient() { return this.coefficient; } - public org.opentripplanner.core.model.basic.Cost getGraphQLConstant() { + public Cost getGraphQLConstant() { return this.constant; } @@ -1934,7 +1923,7 @@ public void setGraphQLCoefficient(Double coefficient) { this.coefficient = coefficient; } - public void setGraphQLConstant(org.opentripplanner.core.model.basic.Cost constant) { + public void setGraphQLConstant(Cost constant) { this.constant = constant; } } @@ -5887,21 +5876,21 @@ public void setGraphQLIncludeRealTimeCancellations(Boolean includeRealTimeCancel public static class GraphQLTransferPreferencesInput { - private org.opentripplanner.core.model.basic.Cost cost; + private Cost cost; private Integer maximumAdditionalTransfers; private Integer maximumTransfers; private java.time.Duration slack; public GraphQLTransferPreferencesInput(Map args) { if (args != null) { - this.cost = (org.opentripplanner.core.model.basic.Cost) args.get("cost"); + this.cost = (Cost) args.get("cost"); this.maximumAdditionalTransfers = (Integer) args.get("maximumAdditionalTransfers"); this.maximumTransfers = (Integer) args.get("maximumTransfers"); this.slack = (java.time.Duration) args.get("slack"); } } - public org.opentripplanner.core.model.basic.Cost getGraphQLCost() { + public Cost getGraphQLCost() { return this.cost; } @@ -5917,7 +5906,7 @@ public java.time.Duration getGraphQLSlack() { return this.slack; } - public void setGraphQLCost(org.opentripplanner.core.model.basic.Cost cost) { + public void setGraphQLCost(Cost cost) { this.cost = cost; } @@ -6502,21 +6491,21 @@ public enum GraphQLViaLocationType { public static class GraphQLWalkPreferencesInput { - private org.opentripplanner.core.model.basic.Cost boardCost; + private Cost boardCost; private Double reluctance; private Double safetyFactor; private Double speed; public GraphQLWalkPreferencesInput(Map args) { if (args != null) { - this.boardCost = (org.opentripplanner.core.model.basic.Cost) args.get("boardCost"); + this.boardCost = (Cost) args.get("boardCost"); this.reluctance = (Double) args.get("reluctance"); this.safetyFactor = (Double) args.get("safetyFactor"); this.speed = (Double) args.get("speed"); } } - public org.opentripplanner.core.model.basic.Cost getGraphQLBoardCost() { + public Cost getGraphQLBoardCost() { return this.boardCost; } @@ -6532,7 +6521,7 @@ public Double getGraphQLSpeed() { return this.speed; } - public void setGraphQLBoardCost(org.opentripplanner.core.model.basic.Cost boardCost) { + public void setGraphQLBoardCost(Cost boardCost) { this.boardCost = boardCost; } diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/mapping/RealtimeStateMapper.java b/application/src/main/java/org/opentripplanner/apis/gtfs/mapping/RealtimeStateMapper.java index 92f6d715473..f18b9bde2f4 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/mapping/RealtimeStateMapper.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/mapping/RealtimeStateMapper.java @@ -16,7 +16,7 @@ public class RealtimeStateMapper { private static final Logger LOG = LoggerFactory.getLogger(RealtimeStateMapper.class); - public static GraphQLTypes.GraphQLRealtimeState map(TripTimes tripTimes) { + public static GraphQLTypes.GraphQLRealtimeState map(TripTimes tripTimes) { return switch (tripTimes) { case RealTimeTripTimes realTimeTripTimes -> map(realTimeTripTimes); case ScheduledTripTimes _ -> GraphQLTypes.GraphQLRealtimeState.SCHEDULED; diff --git a/application/src/main/java/org/opentripplanner/apis/support/SemanticHash.java b/application/src/main/java/org/opentripplanner/apis/support/SemanticHash.java index 94e7de0d2e1..7464e939d61 100644 --- a/application/src/main/java/org/opentripplanner/apis/support/SemanticHash.java +++ b/application/src/main/java/org/opentripplanner/apis/support/SemanticHash.java @@ -39,7 +39,7 @@ public static String forTripPattern(TripPattern tripPattern, Trip trip) { StringBuilder sb = new StringBuilder(50); sb.append(encoder.encodeToString(forStopPattern(tripPattern, murmur).asBytes())); if (trip != null) { - TripTimes tripTimes = tripPattern.getScheduledTimetable().getTripTimes(trip); + var tripTimes = tripPattern.getScheduledTimetable().getTripTimes(trip); if (tripTimes == null) { return null; } @@ -83,7 +83,7 @@ private static HashCode forStopPattern(TripPattern tripPattern, HashFunction has *

  • this hash function needs to stay stable when users switch from 0.10.x to 1.0
  • * */ - private static HashCode forTripTimes(TripTimes tripTimes, final HashFunction hashFunction) { + private static HashCode forTripTimes(TripTimes tripTimes, final HashFunction hashFunction) { final Hasher hasher = hashFunction.newHasher(); for (int hop = 0; hop < tripTimes.getNumStops() - 1; hop++) { hasher.putInt(tripTimes.getScheduledDepartureTime(hop)); diff --git a/application/src/main/java/org/opentripplanner/apis/transmodel/mapping/RealtimeStateMapper.java b/application/src/main/java/org/opentripplanner/apis/transmodel/mapping/RealtimeStateMapper.java index bcc04b1f096..c5c2982590f 100644 --- a/application/src/main/java/org/opentripplanner/apis/transmodel/mapping/RealtimeStateMapper.java +++ b/application/src/main/java/org/opentripplanner/apis/transmodel/mapping/RealtimeStateMapper.java @@ -15,7 +15,7 @@ public class RealtimeStateMapper { private static final Logger LOG = LoggerFactory.getLogger(RealtimeStateMapper.class); - public static TransmodelRealTimeState map(TripTimes tripTimes) { + public static TransmodelRealTimeState map(TripTimes tripTimes) { return switch (tripTimes) { case RealTimeTripTimes realTimeTripTimes -> map(realTimeTripTimes); case ScheduledTripTimes _ -> TransmodelRealTimeState.SCHEDULED; diff --git a/application/src/main/java/org/opentripplanner/apis/transmodel/model/TripTimeOnDateHelper.java b/application/src/main/java/org/opentripplanner/apis/transmodel/model/TripTimeOnDateHelper.java index 58bba69a1b0..c9f359be143 100644 --- a/application/src/main/java/org/opentripplanner/apis/transmodel/model/TripTimeOnDateHelper.java +++ b/application/src/main/java/org/opentripplanner/apis/transmodel/model/TripTimeOnDateHelper.java @@ -10,7 +10,6 @@ import org.opentripplanner.model.plan.Leg; import org.opentripplanner.model.plan.leg.ScheduledTransitLeg; import org.opentripplanner.transit.model.network.TripPattern; -import org.opentripplanner.transit.model.timetable.TripTimes; public class TripTimeOnDateHelper { @@ -81,7 +80,7 @@ public static List getAllTripTimeOnDatesForLegsTrip(Leg leg) { return List.of(); } ScheduledTransitLeg transitLeg = leg.asScheduledTransitLeg(); - TripTimes tripTimes = transitLeg.tripTimes(); + var tripTimes = transitLeg.tripTimes(); TripPattern tripPattern = transitLeg.tripPattern(); Instant serviceDateMidnight = transitLeg.serviceDateMidnight(); LocalDate serviceDate = transitLeg.serviceDate(); @@ -106,7 +105,7 @@ public static List getIntermediateTripTimeOnDatesForLeg(Leg leg) return List.of(); } ScheduledTransitLeg transitLeg = leg.asScheduledTransitLeg(); - TripTimes tripTimes = transitLeg.tripTimes(); + var tripTimes = transitLeg.tripTimes(); TripPattern tripPattern = transitLeg.tripPattern(); Instant serviceDateMidnight = transitLeg.serviceDateMidnight(); LocalDate serviceDate = transitLeg.serviceDate(); diff --git a/application/src/main/java/org/opentripplanner/framework/event/DomainEvent.java b/application/src/main/java/org/opentripplanner/framework/event/DomainEvent.java deleted file mode 100644 index 3bf9be15e09..00000000000 --- a/application/src/main/java/org/opentripplanner/framework/event/DomainEvent.java +++ /dev/null @@ -1,3 +0,0 @@ -package org.opentripplanner.framework.event; - -public interface DomainEvent {} diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransactionModule.java b/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransactionModule.java index 8d5e098e439..68f2beebb16 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransactionModule.java +++ b/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransactionModule.java @@ -3,10 +3,12 @@ import dagger.Module; import dagger.Provides; import jakarta.inject.Singleton; -import org.opentripplanner.framework.transaction.RepositoryRegistry; +import org.opentripplanner.core.framework.transaction.configure.StreetDomain; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.framework.transaction.TimetableSnapshotParameters; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.internal.TransactionFactory; /** * Wires one {@code (RepositoryRegistry, UpdateManager)} pair per write domain. Each pair has its diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/HandlerEntry.java b/application/src/main/java/org/opentripplanner/framework/transaction/internal/HandlerEntry.java deleted file mode 100644 index 36484c31a5c..00000000000 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/HandlerEntry.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.opentripplanner.framework.transaction.internal; - -import org.opentripplanner.framework.event.DomainEvent; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; - -/** - * Pairs a {@link EventHandler} with the {@link RepositoryHandle} whose mutable snapshot it writes - * to. - */ -record HandlerEntry( - EventHandler handler, - RepositoryHandle repoHandle -) {} diff --git a/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java b/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java index c72877d3f19..6cbd7f4c202 100644 --- a/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java +++ b/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java @@ -7,7 +7,7 @@ import java.util.Objects; import java.util.Queue; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.ext.emission.EmissionRepository; import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayRepository; import org.opentripplanner.ext.stopconsolidation.StopConsolidationRepository; diff --git a/application/src/main/java/org/opentripplanner/graph_builder/configure/GraphBuilderModule.java b/application/src/main/java/org/opentripplanner/graph_builder/configure/GraphBuilderModule.java index b3301b8a78b..2b8f864a044 100644 --- a/application/src/main/java/org/opentripplanner/graph_builder/configure/GraphBuilderModule.java +++ b/application/src/main/java/org/opentripplanner/graph_builder/configure/GraphBuilderModule.java @@ -3,7 +3,7 @@ import dagger.Module; import dagger.Provides; import jakarta.inject.Singleton; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.graph_builder.GraphBuilder; import org.opentripplanner.graph_builder.GraphBuilderDataSources; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/configure/GraphBuilderModules.java b/application/src/main/java/org/opentripplanner/graph_builder/module/configure/GraphBuilderModules.java index 03cf9d5e80e..bfa9e3ed96f 100644 --- a/application/src/main/java/org/opentripplanner/graph_builder/module/configure/GraphBuilderModules.java +++ b/application/src/main/java/org/opentripplanner/graph_builder/module/configure/GraphBuilderModules.java @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.datastore.api.CompositeDataSource; import org.opentripplanner.datastore.api.DataSource; import org.opentripplanner.ext.dataoverlay.EdgeUpdaterModule; diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/ArrayMultimap.java b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/ArrayMultimap.java new file mode 100644 index 00000000000..df2fe01cd7c --- /dev/null +++ b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/ArrayMultimap.java @@ -0,0 +1,40 @@ +package org.opentripplanner.graph_builder.module.islandpruning; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * A minimal multimap from a key to a small set of distinct values, purpose-built for + * {@link IslandPruningModule}'s street graph adjacency ({@code neighborsForVertex}). Only the + * operations that class actually needs are implemented: {@link #put}, {@link #containsKey} and + * {@link #get}. + *

    + * Values for a key are deduplicated and stored in an {@link ArrayList} for performance. + */ +class ArrayMultimap { + + @SuppressWarnings("rawtypes") + private static final List EMPTY = List.of(); + + private final Map> map = new HashMap<>(); + + /** Associates {@code value} with {@code key}, if not already present. */ + void put(K key, V value) { + var list = map.computeIfAbsent(key, k -> new ArrayList<>(4)); + if (!list.contains(value)) { + list.add(value); + } + } + + boolean containsKey(K key) { + return map.containsKey(key); + } + + /** Returns the values associated with {@code key}, or an empty set if there are none. */ + @SuppressWarnings("unchecked") + Iterable get(K key) { + return map.getOrDefault(key, EMPTY); + } +} diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningModule.java b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningModule.java index 8b7e6888f4e..5fb3635b463 100644 --- a/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningModule.java +++ b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningModule.java @@ -2,8 +2,8 @@ import java.time.Duration; import java.time.Instant; +import java.util.ArrayDeque; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -139,7 +139,7 @@ private void pruneIslands(TraverseMode traverseMode) { LOG.debug("nothru pruning"); Map subgraphs = new HashMap<>(); Map extgraphs = new HashMap<>(); - Map> neighborsForVertex = new HashMap<>(); + ArrayMultimap neighborsForVertex = new ArrayMultimap<>(); Map isolated = new HashMap<>(); ArrayList islands = new ArrayList<>(); int count; @@ -270,7 +270,7 @@ private int processIslands( } private void collectNeighbourVertices( - Map> neighborsForVertex, + ArrayMultimap neighborsForVertex, TraverseMode traverseMode, boolean shouldMatchNoThruType ) { @@ -290,8 +290,7 @@ private void collectNeighbourVertices( State s0 = new State(gv, request); for (Edge e : gv.getOutgoing()) { if ( - e instanceof StreetEdge && - shouldMatchNoThruType != ((StreetEdge) e).isNoThruTraffic(traverseMode) + e instanceof StreetEdge se && shouldMatchNoThruType != se.isNoThruTraffic(traverseMode) ) { continue; } @@ -299,22 +298,19 @@ private void collectNeighbourVertices( if (State.isEmpty(states)) { continue; } - Arrays.stream(states) - .map(State::getVertex) - .forEach(out -> { - var vertexList = neighborsForVertex.computeIfAbsent(gv, k -> new ArrayList<>()); - vertexList.add(out); - - // note: this assumes that edges are bi-directional. Maybe explicit state traversal is needed for CAR mode. - vertexList = neighborsForVertex.computeIfAbsent(out, k -> new ArrayList<>()); - vertexList.add(gv); - }); + for (State state : states) { + Vertex out = state.getVertex(); + neighborsForVertex.put(gv, out); + + // note: this assumes that edges are bi-directional. Maybe explicit state traversal is needed for CAR mode. + neighborsForVertex.put(out, gv); + } } } } private int collectSubGraphs( - Map> neighborsForVertex, + ArrayMultimap neighborsForVertex, // put new subgraphs here Map newgraphs, // optional isolation map from a previous round @@ -465,13 +461,13 @@ private boolean restrictOrRemove( } private Subgraph computeConnectedSubgraph( - Map> neighborsForVertex, + ArrayMultimap neighborsForVertex, Vertex startVertex, Map anchors, Map alreadyMapped ) { Subgraph subgraph = new Subgraph(); - Queue q = new LinkedList<>(); + Queue q = new ArrayDeque<>(); Subgraph anchor = null; if (anchors != null) { diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/osm/storage/VertexGenerator.java b/application/src/main/java/org/opentripplanner/graph_builder/module/osm/storage/VertexGenerator.java index c756c8e7919..58489bf78f7 100644 --- a/application/src/main/java/org/opentripplanner/graph_builder/module/osm/storage/VertexGenerator.java +++ b/application/src/main/java/org/opentripplanner/graph_builder/module/osm/storage/VertexGenerator.java @@ -8,6 +8,8 @@ import gnu.trove.list.TLongList; import gnu.trove.map.TLongObjectMap; import gnu.trove.map.hash.TLongObjectHashMap; +import gnu.trove.set.TLongSet; +import gnu.trove.set.hash.TLongHashSet; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -263,7 +265,7 @@ public HashMap elevatorNodeLevels() { } public void initIntersectionNodes() { - Set possibleIntersectionNodes = new HashSet<>(); + TLongSet possibleIntersectionNodes = new TLongHashSet(); for (OsmWay way : osmdb.getWays()) { TLongList nodes = way.getNodeRefs(); nodes.forEach(node -> { @@ -393,7 +395,7 @@ private Map getElevatorVertices(OsmNode node) return elevatorVertices; } - private void intersectAreaRingNodes(Set possibleIntersectionNodes, Ring outerRing) { + private void intersectAreaRingNodes(TLongSet possibleIntersectionNodes, Ring outerRing) { for (OsmNode node : outerRing.nodes) { long nodeId = node.getId(); if (possibleIntersectionNodes.contains(nodeId)) { diff --git a/application/src/main/java/org/opentripplanner/gtfs/GenerateTripPatternsOperation.java b/application/src/main/java/org/opentripplanner/gtfs/GenerateTripPatternsOperation.java index 896b307f9ec..05fe037fe4f 100644 --- a/application/src/main/java/org/opentripplanner/gtfs/GenerateTripPatternsOperation.java +++ b/application/src/main/java/org/opentripplanner/gtfs/GenerateTripPatternsOperation.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.ext.flex.trip.FlexTrip; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; diff --git a/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java b/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java index 71db8f81f10..126a3e7a3a4 100644 --- a/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java +++ b/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.core.model.time.LocalDateRange; import org.opentripplanner.ext.fares.service.gtfs.v1.GtfsFareServiceFactory; diff --git a/application/src/main/java/org/opentripplanner/gtfs/interlining/InterlineProcessor.java b/application/src/main/java/org/opentripplanner/gtfs/interlining/InterlineProcessor.java index c6312101fdd..ee4b8ec4bfe 100644 --- a/application/src/main/java/org/opentripplanner/gtfs/interlining/InterlineProcessor.java +++ b/application/src/main/java/org/opentripplanner/gtfs/interlining/InterlineProcessor.java @@ -122,16 +122,16 @@ private Multimap getInterlinedTrips( Collection tripPatterns ) { /* Record which Pattern each interlined TripTimes belongs to. */ - Map patternForTripTimes = new HashMap<>(); + Map, TripPattern> patternForTripTimes = new HashMap<>(); /* TripTimes grouped by the block ID of their trips. Must be a ListMultimap to allow sorting. */ - ListMultimap tripTimesForBlockId = ArrayListMultimap.create(); + ListMultimap> tripTimesForBlockId = ArrayListMultimap.create(); LOG.info("Finding interlining trips based on block IDs."); for (TripPattern pattern : tripPatterns) { Timetable timetable = pattern.getScheduledTimetable(); /* TODO: Block semantics seem undefined for frequency trips, so skip them? */ - for (TripTimes tripTimes : timetable.getTripTimes()) { + for (TripTimes tripTimes : timetable.getTripTimes()) { Trip trip = tripTimes.getTrip(); if (StringUtils.hasValue(trip.getGtfsBlockId())) { tripTimesForBlockId.put(trip.getGtfsBlockId(), tripTimes); @@ -148,7 +148,7 @@ private Multimap getInterlinedTrips( // linking them. One from trip can have multiple interline transfers if trip which interlines // with the from trip doesn't operate on every service date of the from trip. for (String blockId : tripTimesForBlockId.keySet()) { - List blockTripTimes = tripTimesForBlockId.get(blockId); + List> blockTripTimes = tripTimesForBlockId.get(blockId); Collections.sort(blockTripTimes); for (int i = 0; i < blockTripTimes.size(); i++) { var fromTripTimes = blockTripTimes.get(i); @@ -188,10 +188,10 @@ private Multimap getInterlinedTrips( * creation for certain service dates. */ private boolean createInterline( - TripTimes fromTripTimes, - TripTimes toTripTimes, + TripTimes fromTripTimes, + TripTimes toTripTimes, String blockId, - Map patternForTripTimes, + Map, TripPattern> patternForTripTimes, Multimap interlines ) { if ( diff --git a/application/src/main/java/org/opentripplanner/model/TripTimeOnDate.java b/application/src/main/java/org/opentripplanner/model/TripTimeOnDate.java index 5a87f5dc995..0fc17158d7c 100644 --- a/application/src/main/java/org/opentripplanner/model/TripTimeOnDate.java +++ b/application/src/main/java/org/opentripplanner/model/TripTimeOnDate.java @@ -34,7 +34,7 @@ public class TripTimeOnDate { public static final int UNDEFINED = -1; - private final TripTimes tripTimes; + private final TripTimes tripTimes; private final int stopPosition; // This is only needed because TripTimes has no reference to TripPattern private final TripPattern tripPattern; @@ -44,7 +44,7 @@ public class TripTimeOnDate { private final long midnight; - public TripTimeOnDate(TripTimes tripTimes, int stopPosition, TripPattern tripPattern) { + public TripTimeOnDate(TripTimes tripTimes, int stopPosition, TripPattern tripPattern) { this.tripTimes = tripTimes; this.stopPosition = stopPosition; this.tripPattern = tripPattern; @@ -53,7 +53,7 @@ public TripTimeOnDate(TripTimes tripTimes, int stopPosition, TripPattern tripPat } public TripTimeOnDate( - TripTimes tripTimes, + TripTimes tripTimes, int stopPosition, TripPattern tripPattern, @Nullable LocalDate serviceDate, @@ -74,7 +74,7 @@ public TripTimeOnDate( */ @Nullable public static List fromTripTimes(Timetable table, Trip trip) { - TripTimes times = table.getTripTimes(trip); + var times = table.getTripTimes(trip); if (times == null) { return null; } @@ -100,7 +100,7 @@ public static List fromTripTimesWithScheduleFallback( LocalDate serviceDate, Instant midnight ) { - TripTimes times = table.getTripTimes(trip); + var times = table.getTripTimes(trip); if (times == null) { Timetable scheduledTimetable = table.getPattern().getScheduledTimetable(); return fromTripTimes(scheduledTimetable, trip); @@ -129,7 +129,7 @@ public static List fromTripTimes( ) { // The timetable given should always contain the trip. // if the trip doesn't run on the date, the scheduled timetable should be given. - TripTimes times = Objects.requireNonNull(table.getTripTimes(trip)); + var times = Objects.requireNonNull(table.getTripTimes(trip)); List out = new ArrayList<>(); for (int i = 0; i < times.getNumStops(); ++i) { out.add(new TripTimeOnDate(times, i, table.getPattern(), serviceDate, midnight)); @@ -146,7 +146,7 @@ public static TripTimeOnDate firstFromTripTimes( LocalDate serviceDate, Instant midnight ) { - TripTimes times = table.getTripTimes(trip); + var times = table.getTripTimes(trip); return new TripTimeOnDate(times, 0, table.getPattern(), serviceDate, midnight); } @@ -159,7 +159,7 @@ public static TripTimeOnDate lastFromTripTimes( LocalDate serviceDate, Instant midnight ) { - TripTimes times = table.getTripTimes(trip); + var times = table.getTripTimes(trip); return new TripTimeOnDate( times, times.getNumStops() - 1, @@ -216,7 +216,7 @@ public int getStopPosition() { return stopPosition; } - public TripTimes getTripTimes() { + public TripTimes getTripTimes() { return tripTimes; } diff --git a/application/src/main/java/org/opentripplanner/model/impl/TransitDataImportBuilder.java b/application/src/main/java/org/opentripplanner/model/impl/TransitDataImportBuilder.java index c24a0cbe148..49ae36c4634 100644 --- a/application/src/main/java/org/opentripplanner/model/impl/TransitDataImportBuilder.java +++ b/application/src/main/java/org/opentripplanner/model/impl/TransitDataImportBuilder.java @@ -383,7 +383,7 @@ private void fixOrRemovePatternsWhichReferenceNoneExistingTrips() { for (Map.Entry e : tripPatterns.entries()) { TripPattern ptn = e.getValue(); - Set tripTimesToBeRemoved = ptn + Set> tripTimesToBeRemoved = ptn .getScheduledTimetable() .getTripTimes() .stream() diff --git a/application/src/main/java/org/opentripplanner/model/modes/ExcludeAllTransitFilter.java b/application/src/main/java/org/opentripplanner/model/modes/ExcludeAllTransitFilter.java index 8cbc96c7512..30c160400b4 100644 --- a/application/src/main/java/org/opentripplanner/model/modes/ExcludeAllTransitFilter.java +++ b/application/src/main/java/org/opentripplanner/model/modes/ExcludeAllTransitFilter.java @@ -24,7 +24,7 @@ public boolean matchTripPattern(TripPattern tripPattern) { } @Override - public boolean matchTripTimes(TripTimes trip) { + public boolean matchTripTimes(TripTimes trip) { return false; } diff --git a/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLeg.java b/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLeg.java index 6c390c143ff..d60ecd6f6b8 100644 --- a/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLeg.java +++ b/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLeg.java @@ -55,7 +55,7 @@ public class ScheduledTransitLeg implements TransitLeg { private static final Comparator FARE_OFFER_COMPARATOR = Comparator.comparing( (FareOffer o) -> o.fareProduct().id().getId() ).thenComparing(FareOffer::uniqueId); - private final TripTimes tripTimes; + private final TripTimes tripTimes; private final TripPattern tripPattern; private final ZonedDateTime startTime; @@ -139,7 +139,7 @@ public ZoneId zoneId() { return zoneId; } - public TripTimes tripTimes() { + public TripTimes tripTimes() { return tripTimes; } diff --git a/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLegBuilder.java b/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLegBuilder.java index e75c3f764e9..1eba5bfe63f 100644 --- a/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLegBuilder.java +++ b/application/src/main/java/org/opentripplanner/model/plan/leg/ScheduledTransitLegBuilder.java @@ -23,7 +23,7 @@ public class ScheduledTransitLegBuilder> */ private static final int POS_NOT_SET = -1; - private TripTimes tripTimes; + private TripTimes tripTimes; private TripPattern tripPattern; private int boardStopIndexInPattern = POS_NOT_SET; private int alightStopIndexInPattern = POS_NOT_SET; @@ -69,12 +69,12 @@ public ScheduledTransitLegBuilder(ScheduledTransitLeg original) { emissionPerPerson = original.emissionPerPerson(); } - public B withTripTimes(TripTimes tripTimes) { + public B withTripTimes(TripTimes tripTimes) { this.tripTimes = tripTimes; return instance(); } - public TripTimes tripTimes() { + public TripTimes tripTimes() { return tripTimes; } diff --git a/application/src/main/java/org/opentripplanner/model/plan/leg/StopArrivalMapper.java b/application/src/main/java/org/opentripplanner/model/plan/leg/StopArrivalMapper.java index b829a2d866b..13700927647 100644 --- a/application/src/main/java/org/opentripplanner/model/plan/leg/StopArrivalMapper.java +++ b/application/src/main/java/org/opentripplanner/model/plan/leg/StopArrivalMapper.java @@ -15,9 +15,9 @@ class StopArrivalMapper { private final ZoneId zoneId; private final LocalDate serviceDate; - private final TripTimes tripTimes; + private final TripTimes tripTimes; - public StopArrivalMapper(ZoneId zoneId, LocalDate serviceDate, TripTimes tripTimes) { + public StopArrivalMapper(ZoneId zoneId, LocalDate serviceDate, TripTimes tripTimes) { this.zoneId = Objects.requireNonNull(zoneId); this.serviceDate = Objects.requireNonNull(serviceDate); this.tripTimes = Objects.requireNonNull(tripTimes); diff --git a/application/src/main/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReference.java b/application/src/main/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReference.java index c1c2d5bc55c..92e26537255 100644 --- a/application/src/main/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReference.java +++ b/application/src/main/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReference.java @@ -15,7 +15,6 @@ import org.opentripplanner.transit.model.timetable.Timetable; import org.opentripplanner.transit.model.timetable.Trip; import org.opentripplanner.transit.model.timetable.TripOnServiceDate; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.service.TransitService; import org.opentripplanner.utils.collection.TwoWayLinearSearch; import org.opentripplanner.utils.lang.ObjectUtils; @@ -179,7 +178,7 @@ public ScheduledTransitLeg getLeg( } Timetable timetable = transitService.findTimetable(tripPattern, serviceDate); - TripTimes tripTimes = timetable.getTripTimes(trip); + var tripTimes = timetable.getTripTimes(trip); if (tripTimes == null) { logInvalidLegRef( diff --git a/application/src/main/java/org/opentripplanner/netex/NetexBundle.java b/application/src/main/java/org/opentripplanner/netex/NetexBundle.java index 06754899454..0a58abf6a04 100644 --- a/application/src/main/java/org/opentripplanner/netex/NetexBundle.java +++ b/application/src/main/java/org/opentripplanner/netex/NetexBundle.java @@ -6,7 +6,7 @@ import java.util.Collection; import java.util.List; import java.util.Set; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.datastore.api.CompositeDataSource; import org.opentripplanner.datastore.api.DataSource; diff --git a/application/src/main/java/org/opentripplanner/netex/NetexModule.java b/application/src/main/java/org/opentripplanner/netex/NetexModule.java index 17fa5718d48..80ae75e98b8 100644 --- a/application/src/main/java/org/opentripplanner/netex/NetexModule.java +++ b/application/src/main/java/org/opentripplanner/netex/NetexModule.java @@ -3,7 +3,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Queue; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.time.LocalDateRange; import org.opentripplanner.ext.flex.FlexTripsMapper; import org.opentripplanner.framework.application.OTPFeature; diff --git a/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java b/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java index 12f61f310bb..7eaaf5e6be7 100644 --- a/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java +++ b/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java @@ -2,7 +2,7 @@ import java.util.ArrayList; import java.util.List; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.datastore.api.CompositeDataSource; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; import org.opentripplanner.graph_builder.model.ConfiguredCompositeDataSource; diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java index 25e1a296c10..c538d2e6de9 100644 --- a/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java +++ b/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java @@ -11,7 +11,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; import org.opentripplanner.model.StopTime; diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/TripPatternMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/TripPatternMapper.java index a628429b13c..c3edbbafcbc 100644 --- a/application/src/main/java/org/opentripplanner/netex/mapping/TripPatternMapper.java +++ b/application/src/main/java/org/opentripplanner/netex/mapping/TripPatternMapper.java @@ -12,7 +12,7 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; import org.opentripplanner.model.StopTime; @@ -35,7 +35,6 @@ import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.model.timetable.TripTimesFactory; import org.rutebanken.netex.model.DatedServiceJourney; -import org.rutebanken.netex.model.DatedServiceJourneyRefStructure; import org.rutebanken.netex.model.DestinationDisplay; import org.rutebanken.netex.model.FlexibleLine; import org.rutebanken.netex.model.JourneyPattern_VersionStructure; @@ -44,6 +43,7 @@ import org.rutebanken.netex.model.RouteView; import org.rutebanken.netex.model.ServiceJourney; import org.rutebanken.netex.model.ServiceLink; +import org.rutebanken.netex.model.VehicleJourneyRefStructure; /** * Maps NeTEx JourneyPattern to OTP TripPattern. All ServiceJourneys in the same JourneyPattern @@ -301,43 +301,47 @@ private TripOnServiceDate mapDatedServiceJourney( datedServiceJourney.getServiceAlteration() ); - var replacementFor = datedServiceJourney - .getJourneyRef() - .stream() - .map(JAXBElement::getValue) - .filter(DatedServiceJourneyRefStructure.class::isInstance) - .map(DatedServiceJourneyRefStructure.class::cast) - .map(DatedServiceJourneyRefStructure::getRef) - .map(datedServiceJourneyById::lookup) - .filter(Objects::nonNull) - .map(replacement -> { - if (datedServiceJourney.equals(replacement)) { - issueStore.add( - "InvalidDatedServiceJourneyRef", - "DatedServiceJourney %s has reference to itself, skipping", - datedServiceJourney.getId() + List replacementFor; + if (datedServiceJourney.getReplacedJourneys() != null) { + replacementFor = datedServiceJourney + .getReplacedJourneys() + .getDatedVehicleJourneyRefOrNormalDatedVehicleJourneyRef() + .stream() + .map(JAXBElement::getValue) + .map(VehicleJourneyRefStructure::getRef) + .map(datedServiceJourneyById::lookup) + .filter(Objects::nonNull) + .map(replacement -> { + if (datedServiceJourney.equals(replacement)) { + issueStore.add( + "InvalidDatedServiceJourneyRef", + "DatedServiceJourney %s has reference to itself, skipping", + datedServiceJourney.getId() + ); + return null; + } + String serviceJourneyRef = replacement.getJourneyRef().getValue().getRef(); + ServiceJourney serviceJourney = serviceJourneyById.lookup(serviceJourneyRef); + if (serviceJourney == null) { + issueStore.add( + "InvalidDatedServiceJourneyRef", + "DatedServiceJourney %s has reference to %s, which is not found, skipping", + datedServiceJourney.getId(), + serviceJourneyRef + ); + return null; + } + return mapDatedServiceJourney( + journeyPattern, + mapTrip(journeyPattern, serviceJourney), + replacement ); - return null; - } - String serviceJourneyRef = replacement.getJourneyRef().get(0).getValue().getRef(); - ServiceJourney serviceJourney = serviceJourneyById.lookup(serviceJourneyRef); - if (serviceJourney == null) { - issueStore.add( - "InvalidDatedServiceJourneyRef", - "DatedServiceJourney %s has reference to %s, which is not found, skipping", - datedServiceJourney.getId(), - serviceJourneyRef - ); - return null; - } - return mapDatedServiceJourney( - journeyPattern, - mapTrip(journeyPattern, serviceJourney), - replacement - ); - }) - .filter(Objects::nonNull) - .toList(); + }) + .filter(Objects::nonNull) + .toList(); + } else { + replacementFor = List.of(); + } return TripOnServiceDate.of(id) .withTrip(trip) @@ -361,11 +365,11 @@ private org.opentripplanner.transit.model.network.Route lookupRoute( return otpRouteById.get(idFactory.createId(lineId)); } - private List createTripTimes( + private List> createTripTimes( List trips, Map> tripStopTimes ) { - var tripTimesResult = new ArrayList(); + var tripTimesResult = new ArrayList>(); for (Trip trip : trips) { List stopTimes = tripStopTimes.get(trip); if (stopTimes.isEmpty()) { @@ -376,7 +380,7 @@ private List createTripTimes( ); } else { try { - TripTimes tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, deduplicator); + var tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, deduplicator); tripTimesResult.add(tripTimes); } catch (DataValidationException e) { issueStore.add(e.error()); diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/support/NetexMapperIndexes.java b/application/src/main/java/org/opentripplanner/netex/mapping/support/NetexMapperIndexes.java index 47bb8c6f756..a7325d3adc5 100644 --- a/application/src/main/java/org/opentripplanner/netex/mapping/support/NetexMapperIndexes.java +++ b/application/src/main/java/org/opentripplanner/netex/mapping/support/NetexMapperIndexes.java @@ -91,7 +91,7 @@ static Multimap indexDSJBySJId( Multimap dsjBySJId = ArrayListMultimap.create(); for (DatedServiceJourney dsj : datedServiceJourneys.localValues()) { // The validation step ensure no NPE occurs here - String sjId = dsj.getJourneyRef().get(0).getValue().getRef(); + String sjId = dsj.getJourneyRef().getValue().getRef(); dsjBySJId.put(sjId, dsj); } return dsjBySJId; diff --git a/application/src/main/java/org/opentripplanner/netex/validation/DSJServiceJourneyNotFound.java b/application/src/main/java/org/opentripplanner/netex/validation/DSJServiceJourneyNotFound.java index 27086e417ea..7a246808af2 100644 --- a/application/src/main/java/org/opentripplanner/netex/validation/DSJServiceJourneyNotFound.java +++ b/application/src/main/java/org/opentripplanner/netex/validation/DSJServiceJourneyNotFound.java @@ -1,7 +1,6 @@ package org.opentripplanner.netex.validation; import jakarta.xml.bind.JAXBElement; -import java.util.List; import javax.annotation.Nullable; import org.opentripplanner.graph_builder.issue.api.DataImportIssue; import org.opentripplanner.netex.issues.ObjectNotFound; @@ -26,12 +25,12 @@ public DataImportIssue logMessage(String dsjId, DatedServiceJourney dsj) { @Nullable private String getServiceJourneyRef(DatedServiceJourney dsj) { - List> journeyRef = dsj.getJourneyRef(); + JAXBElement journeyRef = dsj.getJourneyRef(); - if (journeyRef == null || journeyRef.isEmpty()) { + if (journeyRef == null) { return null; } - JourneyRefStructure ref = journeyRef.get(0).getValue(); + JourneyRefStructure ref = journeyRef.getValue(); return ref == null ? null : ref.getRef(); } } diff --git a/application/src/main/java/org/opentripplanner/osm/DefaultOsmProvider.java b/application/src/main/java/org/opentripplanner/osm/DefaultOsmProvider.java index 3b08971baa4..95953497948 100644 --- a/application/src/main/java/org/opentripplanner/osm/DefaultOsmProvider.java +++ b/application/src/main/java/org/opentripplanner/osm/DefaultOsmProvider.java @@ -1,10 +1,12 @@ package org.opentripplanner.osm; -import crosby.binary.file.BlockInputStream; +import crosby.binary.file.ParallelBlockInputStream; import java.io.ByteArrayInputStream; import java.io.File; import java.io.InputStream; import java.time.ZoneId; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import org.opentripplanner.datastore.api.DataSource; import org.opentripplanner.datastore.api.FileType; import org.opentripplanner.datastore.file.FileDataSource; @@ -18,9 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * Implementation of the provider interface that reads OSM binary files from disk. - */ +/// Implementation of the provider interface that reads OSM binary files from disk. public class DefaultOsmProvider implements OsmProvider { private static final Logger LOG = LoggerFactory.getLogger(DefaultOsmProvider.class); @@ -35,6 +35,10 @@ public class DefaultOsmProvider implements OsmProvider { private final OsmTagMapper osmTagMapper; private final WayPropertySet wayPropertySet; + /// since reading from disk is still serial, this only controls how many threads _decode_ the zip + /// stream. past 3-4, more threads don't make it faster anymore. + private final int decodeParallelism = Math.min(4, Runtime.getRuntime().availableProcessors()); + private final ExecutorService executorService = Executors.newFixedThreadPool(decodeParallelism); private byte[] cachedBytes = null; /** For tests */ @@ -55,6 +59,8 @@ public DefaultOsmProvider( this.cacheDataInMem = cacheDataInMem; } + /// Parses the OSM data from the source. Shuts down the executor service and will therefore throw an exception if + /// called a second time. public void readOsm(OsmDatabase osmdb) { try { OsmParser parser = new OsmParser(osmdb, this); @@ -69,6 +75,8 @@ public void readOsm(OsmDatabase osmdb) { osmdb.doneThirdPhaseNodes(); } catch (Exception ex) { throw new IllegalStateException("error loading OSM from path " + source.path(), ex); + } finally { + executorService.shutdown(); } } @@ -95,7 +103,14 @@ private static InputStream track(OsmParserPhase phase, long size, InputStream in private void parsePhase(OsmParser parser, OsmParserPhase phase) { parser.setPhase(phase); - try (BlockInputStream in = new BlockInputStream(createInputStream(phase), parser)) { + try ( + var in = new ParallelBlockInputStream( + createInputStream(phase), + parser, + executorService, + decodeParallelism + ) + ) { in.process(); } catch (Exception e) { LOG.error(e.getMessage(), e); diff --git a/application/src/main/java/org/opentripplanner/osm/wayproperty/LocalizedStringMapper.java b/application/src/main/java/org/opentripplanner/osm/wayproperty/LocalizedStringMapper.java index 5c6a50dffba..99e0371ba66 100644 --- a/application/src/main/java/org/opentripplanner/osm/wayproperty/LocalizedStringMapper.java +++ b/application/src/main/java/org/opentripplanner/osm/wayproperty/LocalizedStringMapper.java @@ -8,10 +8,10 @@ import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.opentripplanner.core.framework.resources.ResourceBundleSingleton; import org.opentripplanner.core.model.i18n.I18NString; import org.opentripplanner.core.model.i18n.LocalizedString; import org.opentripplanner.core.model.i18n.NonLocalizedString; +import org.opentripplanner.core.model.resources.ResourceBundleSingleton; import org.opentripplanner.osm.model.OsmEntity; class LocalizedStringMapper { diff --git a/application/src/main/java/org/opentripplanner/osm/wayproperty/WayPropertySet.java b/application/src/main/java/org/opentripplanner/osm/wayproperty/WayPropertySet.java index 6898834f91b..e0e5be227b2 100644 --- a/application/src/main/java/org/opentripplanner/osm/wayproperty/WayPropertySet.java +++ b/application/src/main/java/org/opentripplanner/osm/wayproperty/WayPropertySet.java @@ -211,8 +211,9 @@ public float getCarSpeedForWay( Float speed = null; Float currentSpeed; - if (way.hasTag("maxspeed:motorcar")) { - speed = SpeedParser.getMetersSecondFromSpeed(way.getTag("maxspeed:motorcar")); + var motorCar = way.getTag("maxspeed:motorcar"); + if (motorCar != null) { + speed = SpeedParser.getMetersSecondFromSpeed(motorCar); } if (speed == null && direction == FORWARD && way.hasTag("maxspeed:forward")) { @@ -234,8 +235,9 @@ public float getCarSpeedForWay( } } - if (way.hasTag("maxspeed") && speed == null) { - speed = SpeedParser.getMetersSecondFromSpeed(way.getTag("maxspeed")); + var maxSpeed = way.getTag("maxspeed"); + if (maxSpeed != null && speed == null) { + speed = SpeedParser.getMetersSecondFromSpeed(maxSpeed); } if (speed != null) { diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/startonboardaccess/TripLocationResolver.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/startonboardaccess/TripLocationResolver.java index 5b960c72a10..562059aeab9 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/startonboardaccess/TripLocationResolver.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/startonboardaccess/TripLocationResolver.java @@ -128,7 +128,7 @@ private LocationInTripPatternReference findLocationInTripPattern( private List matchingLocations( TripPattern tripPattern, FeedScopedId stopOrStationId, - TripTimes tripTimes, + TripTimes tripTimes, @Nullable Integer targetSeconds ) { var locations = new ArrayList(); diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripPatternForDate.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripPatternForDate.java index 13c0a374368..0e691ced995 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripPatternForDate.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripPatternForDate.java @@ -34,7 +34,7 @@ public class TripPatternForDate implements Comparable { * day. Invariant: this array should contain a subset of the TripSchedules in * tripPattern.tripSchedules. */ - private final TripTimes[] tripTimes; + private final TripTimes[] tripTimes; /** * The filtered FrequencyEntries for only those entries in the TripPattern that are active on the @@ -58,12 +58,12 @@ public class TripPatternForDate implements Comparable { public TripPatternForDate( RoutingTripPattern tripPattern, - List tripTimes, + List> tripTimes, List frequencies, LocalDate serviceDate ) { this.tripPattern = tripPattern; - this.tripTimes = tripTimes.toArray(new TripTimes[0]); + this.tripTimes = tripTimes.toArray(TripTimes[]::new); this.frequencies = frequencies.toArray(new FrequencyEntry[0]); this.serviceDate = serviceDate; @@ -93,7 +93,7 @@ public TripPatternForDate( } } - public List tripTimes() { + public List> tripTimes() { return Arrays.asList(tripTimes); } @@ -109,7 +109,7 @@ public int stopIndex(int i) { return this.tripPattern.stopIndex(i); } - public TripTimes getTripTimes(int i) { + public TripTimes getTripTimes(int i) { return tripTimes[i]; } @@ -186,9 +186,9 @@ public String toString() { } @Nullable - public TripPatternForDate newWithFilteredTripTimes(Predicate filter) { - ArrayList filteredTripTimes = new ArrayList<>(tripTimes.length); - for (TripTimes tripTimes : tripTimes) { + public TripPatternForDate newWithFilteredTripTimes(Predicate> filter) { + ArrayList> filteredTripTimes = new ArrayList<>(tripTimes.length); + for (TripTimes tripTimes : tripTimes) { if (filter.test(tripTimes)) { filteredTripTimes.add(tripTimes); } diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripSchedule.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripSchedule.java index 40e7b4a3751..3dfd24f35d7 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripSchedule.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TripSchedule.java @@ -15,7 +15,7 @@ public interface TripSchedule extends DefaultTripSchedule { /** * TODO OTP2 - Add JavaDoc */ - TripTimes getOriginalTripTimes(); + TripTimes getOriginalTripTimes(); /** * TODO OTP2 - Add JavaDoc diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyAlightEvent.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyAlightEvent.java index b801c519619..46c87a92031 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyAlightEvent.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyAlightEvent.java @@ -12,7 +12,7 @@ final class FrequencyAlightEvent extends Frequenc public FrequencyAlightEvent( TripPatternForDates raptorTripPattern, - TripTimes tripTimes, + TripTimes tripTimes, int stopPositionInPattern, int earliestDepartureTime, int departureTime, diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardOrAlightEvent.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardOrAlightEvent.java index 9473438c82d..0fd8a102288 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardOrAlightEvent.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardOrAlightEvent.java @@ -32,7 +32,7 @@ abstract class FrequencyBoardOrAlightEvent implem TripSchedule { protected final TripPatternForDates raptorTripPattern; - protected final TripTimes tripTimes; + protected final TripTimes tripTimes; protected final int stopPositionInPattern; protected final int earliestDepartureTime; protected final int departureTime; @@ -43,7 +43,7 @@ abstract class FrequencyBoardOrAlightEvent implem public FrequencyBoardOrAlightEvent( TripPatternForDates raptorTripPattern, - TripTimes tripTimes, + TripTimes tripTimes, int stopPositionInPattern, int earliestDepartureTime, int departureTime, @@ -130,7 +130,7 @@ public int transitReluctanceFactorIndex() { /* TripSchedule implementation */ @Override - public TripTimes getOriginalTripTimes() { + public TripTimes getOriginalTripTimes() { return tripTimes; } diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardingEvent.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardingEvent.java index 852d93108c8..119f25c49de 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardingEvent.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/FrequencyBoardingEvent.java @@ -12,7 +12,7 @@ final class FrequencyBoardingEvent extends Freque public FrequencyBoardingEvent( TripPatternForDates raptorTripPattern, - TripTimes tripTimes, + TripTimes tripTimes, int stopPositionInPattern, int earliestDepartureTime, int departureTime, diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyAlightSearch.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyAlightSearch.java index ecfdceab506..a1f94bdaaff 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyAlightSearch.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyAlightSearch.java @@ -6,7 +6,6 @@ import org.opentripplanner.routing.algorithm.raptoradapter.transit.cost.DefaultTripSchedule; import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.TripPatternForDates; import org.opentripplanner.transit.model.timetable.FrequencyEntry; -import org.opentripplanner.transit.model.timetable.TripTimes; /** * Searches for a concrete trip time for a frequency based pattern. The {@link FrequencyEntry}s are @@ -41,7 +40,7 @@ public RaptorBoardOrAlightEvent search( ); if (arrivalTime != -1) { int headway = frequency.routingSlack(); - TripTimes tripTimes = frequency.materialize( + var tripTimes = frequency.materialize( stopPositionInPattern, arrivalTime + headway, false diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyBoardSearch.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyBoardSearch.java index 6493f204b0c..63e544defbd 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyBoardSearch.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/frequency/TripFrequencyBoardSearch.java @@ -6,7 +6,6 @@ import org.opentripplanner.routing.algorithm.raptoradapter.transit.cost.DefaultTripSchedule; import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.TripPatternForDates; import org.opentripplanner.transit.model.timetable.FrequencyEntry; -import org.opentripplanner.transit.model.timetable.TripTimes; /** * Searches for a concrete trip time for a frequency based pattern. The {@link FrequencyEntry}s are @@ -40,7 +39,7 @@ public RaptorBoardOrAlightEvent search( ); if (departureTime != -1) { int headway = frequency.routingSlack(); - TripTimes tripTimes = frequency.materialize( + var tripTimes = frequency.materialize( stopPositionInPattern, departureTime - headway, true diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TimetableUpdateMapper.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TimetableUpdateMapper.java index 10e7d3fd72e..98284e4c072 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TimetableUpdateMapper.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TimetableUpdateMapper.java @@ -153,7 +153,7 @@ public RaptorTransitData map( ); } - for (TripTimes triptimes : timetable.getTripTimes()) { + for (TripTimes triptimes : timetable.getTripTimes()) { var id = new TripIdAndServiceDate( triptimes.getTrip().getId(), timetable.getServiceDate() diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapper.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapper.java index 82353a8ace0..bfd8c2422cf 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapper.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapper.java @@ -62,9 +62,9 @@ public TripPatternForDate map(Timetable timetable, LocalDate serviceDate) { return null; } - List times = new ArrayList<>(); + List> times = new ArrayList<>(); - for (TripTimes tripTimes : timetable.getTripTimes()) { + for (TripTimes tripTimes : timetable.getTripTimes()) { if (!serviceCodesRunning.contains(tripTimes.getServiceCode())) { continue; } diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilter.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilter.java index 5047da906cf..c5b8f97f19f 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilter.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilter.java @@ -70,7 +70,7 @@ public static BikeAccess bikeAccessForTrip(Trip trip) { @Override @Nullable - public Predicate createTripFilter(TripPattern tripPattern) { + public Predicate> createTripFilter(TripPattern tripPattern) { for (TransitFilter filter : filters) { if (filter.matchTripPattern(tripPattern)) { var applyTripTimesFilters = @@ -81,7 +81,7 @@ public Predicate createTripFilter(TripPattern tripPattern) { return null; } - private boolean tripTimesPredicate(TripTimes tripTimes, boolean applyTripTimesFilters) { + private boolean tripTimesPredicate(TripTimes tripTimes, boolean applyTripTimesFilters) { final Trip trip = tripTimes.getTrip(); if (requireBikesAllowed && bikeAccessForTrip(trip) != BikeAccess.ALLOWED) { diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TransitDataProviderFilter.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TransitDataProviderFilter.java index e07690d6d60..4fe41208a62 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TransitDataProviderFilter.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TransitDataProviderFilter.java @@ -26,7 +26,7 @@ public interface TransitDataProviderFilter { * object. */ @Nullable - Predicate createTripFilter(TripPattern tripPattern); + Predicate> createTripFilter(TripPattern tripPattern); /** * Check if boarding/alighting is possible at each stop. If the values differ from the default diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleWithOffset.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleWithOffset.java index 52449a25ea9..46964c6e963 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleWithOffset.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleWithOffset.java @@ -23,7 +23,7 @@ public final class TripScheduleWithOffset implements TripSchedule { private final int tripIndexForDates; // Computed when needed later for RaptorPathToItineraryMapper - private TripTimes tripTimes = null; + private TripTimes tripTimes = null; private LocalDate serviceDate = null; private int secondsOffset; @@ -77,7 +77,7 @@ public Accessibility wheelchairBoarding() { * Following methods are only called in RaptorPathToItineraryMapper, instantiation or debug/tests, these are not optimised for performance */ @Override - public TripTimes getOriginalTripTimes() { + public TripTimes getOriginalTripTimes() { if (tripTimes == null) { this.findTripTimes(); } diff --git a/application/src/main/java/org/opentripplanner/routing/alternativelegs/AlternativeLegs.java b/application/src/main/java/org/opentripplanner/routing/alternativelegs/AlternativeLegs.java index 724f186f5de..f821f5a59b1 100644 --- a/application/src/main/java/org/opentripplanner/routing/alternativelegs/AlternativeLegs.java +++ b/application/src/main/java/org/opentripplanner/routing/alternativelegs/AlternativeLegs.java @@ -158,7 +158,7 @@ private static Stream generateLegs( var servicesRunning = transitService.getServiceCodesRunningForDate(serviceDate); - for (TripTimes tripTimes : timetable.getTripTimes()) { + for (TripTimes tripTimes : timetable.getTripTimes()) { if (!servicesRunning.contains(tripTimes.getServiceCode())) { continue; } @@ -213,7 +213,7 @@ private static ScheduledTransitLeg mapToLeg( TransitService transitService ) { LocalDate serviceDay = tripTimeOnDate.getServiceDay(); - TripTimes tripTimes = tripTimeOnDate.getTripTimes(); + var tripTimes = tripTimeOnDate.getTripTimes(); ZonedDateTime boardingTime = ServiceDateUtils.toZonedDateTime( serviceDay, diff --git a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/AllowAllTransitFilter.java b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/AllowAllTransitFilter.java index b22a1540ea1..a74ce2239ff 100644 --- a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/AllowAllTransitFilter.java +++ b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/AllowAllTransitFilter.java @@ -23,7 +23,7 @@ public boolean matchTripPattern(TripPattern tripPattern) { } @Override - public boolean matchTripTimes(TripTimes trip) { + public boolean matchTripTimes(TripTimes trip) { return true; } diff --git a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/SelectRequest.java b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/SelectRequest.java index 8dc4a184b2e..9b490870313 100644 --- a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/SelectRequest.java +++ b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/SelectRequest.java @@ -57,7 +57,7 @@ public boolean matchesPatternNot(TripPattern tripPattern) { /** * Matches the select clause of a transit filter request. */ - public boolean matchesSelect(TripTimes tripTimes) { + public boolean matchesSelect(TripTimes tripTimes) { var trip = tripTimes.getTrip(); return ( @@ -73,7 +73,7 @@ public boolean matchesSelect(TripTimes tripTimes) { /** * Matches the not clause of a transit filter request. */ - public boolean matchesNot(TripTimes tripTimes) { + public boolean matchesNot(TripTimes tripTimes) { var trip = tripTimes.getTrip(); return ( this.transportModeFilter != null && diff --git a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilter.java b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilter.java index ce4cf0e6cb4..1ef610762f0 100644 --- a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilter.java +++ b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilter.java @@ -12,7 +12,7 @@ public interface TransitFilter { /** * Return false is tripTimes are banned, otherwise return true */ - boolean matchTripTimes(TripTimes trip); + boolean matchTripTimes(TripTimes trip); /** * Returns {@code true} if this filter contains mode-selective constraints that may require diff --git a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilterRequest.java b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilterRequest.java index 38054459378..8485653766e 100644 --- a/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilterRequest.java +++ b/application/src/main/java/org/opentripplanner/routing/api/request/request/filter/TransitFilterRequest.java @@ -86,7 +86,7 @@ public boolean matchTripPattern(TripPattern tripPattern) { } @Override - public boolean matchTripTimes(TripTimes tripTimes) { + public boolean matchTripTimes(TripTimes tripTimes) { if (select.length != 0) { var anyMatch = false; for (var selectRequest : select) { diff --git a/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java b/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java index e9f1c6e33f4..fbf769d27d2 100644 --- a/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java +++ b/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java @@ -215,7 +215,7 @@ private static SerializedGraphObject load(InputStream inputStream, String source serObj.reconstructEdgeLists(); serObj.transitRepository.getSiteRepository().reindexAfterDeserialization(); serObj.transitRepository.index(); - logSerializationCompleteStatus(serObj.graph, serObj.transitRepository); + serObj.logSerializationCompleteStatus(); return serObj; } catch (IOException e) { LOG.error("IO exception while loading graph: {}", e.getLocalizedMessage(), e); @@ -286,10 +286,7 @@ private void save(OutputStream outputStream, String graphName, long size) { // ((InstanceCountingClassResolver) kryo.getClassResolver()).summarize(); } - private static void logSerializationCompleteStatus( - Graph graph, - TransitRepository transitRepository - ) { + private void logSerializationCompleteStatus() { var f = new OtpNumberFormat(); var nStops = f.formatNumber(transitRepository.getSiteRepository().stopIndexSize()); var nTransfers = f.formatNumber( @@ -297,7 +294,7 @@ private static void logSerializationCompleteStatus( ); var nPatterns = f.formatNumber(transitRepository.getAllTripPatterns().size()); var nVertices = f.formatNumber(graph.countVertices()); - var nEdges = f.formatNumber(graph.countEdges()); + var nEdges = f.formatNumber(edges.size()); LOG.info("Graph loaded. |V|={} |E|={}", nVertices, nEdges); LOG.info( diff --git a/application/src/main/java/org/opentripplanner/service/realtimevehicles/RealtimeVehicleRepository.java b/application/src/main/java/org/opentripplanner/service/realtimevehicles/RealtimeVehicleRepository.java index c0f989ac7d0..53bbf3773a6 100644 --- a/application/src/main/java/org/opentripplanner/service/realtimevehicles/RealtimeVehicleRepository.java +++ b/application/src/main/java/org/opentripplanner/service/realtimevehicles/RealtimeVehicleRepository.java @@ -1,6 +1,7 @@ package org.opentripplanner.service.realtimevehicles; import com.google.common.collect.Multimap; +import org.opentripplanner.core.model.transaction.WriteContext; import org.opentripplanner.service.realtimevehicles.model.RealtimeVehicle; import org.opentripplanner.transit.model.network.TripPattern; @@ -8,7 +9,7 @@ * The mutable repository for the realtime vehicles. It is managed by the transaction framework: * a new repository initialized from the last committed {@link RealtimeVehicleRepositorySnapshot} * is created for each transaction that writes vehicles. The vehicle-position updater obtains it - * through a {@link org.opentripplanner.framework.transaction.api.WriteContext} on the single + * through a {@link WriteContext} on the single * writer thread, and the repository lifecycle publishes a new immutable * {@link RealtimeVehicleRepositorySnapshot} for the request threads at commit time. */ diff --git a/application/src/main/java/org/opentripplanner/service/realtimevehicles/configure/RealtimeVehicleRepositoryModule.java b/application/src/main/java/org/opentripplanner/service/realtimevehicles/configure/RealtimeVehicleRepositoryModule.java index d561d4f3c24..f249b48a1de 100644 --- a/application/src/main/java/org/opentripplanner/service/realtimevehicles/configure/RealtimeVehicleRepositoryModule.java +++ b/application/src/main/java/org/opentripplanner/service/realtimevehicles/configure/RealtimeVehicleRepositoryModule.java @@ -3,9 +3,9 @@ import dagger.Module; import dagger.Provides; import jakarta.inject.Singleton; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepository; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepositorySnapshot; import org.opentripplanner.service.realtimevehicles.internal.DefaultRealtimeVehicleRepository; diff --git a/application/src/main/java/org/opentripplanner/service/realtimevehicles/internal/RealtimeVehicleRepositoryLifecycle.java b/application/src/main/java/org/opentripplanner/service/realtimevehicles/internal/RealtimeVehicleRepositoryLifecycle.java index 8f35f548ee5..861ff70217e 100644 --- a/application/src/main/java/org/opentripplanner/service/realtimevehicles/internal/RealtimeVehicleRepositoryLifecycle.java +++ b/application/src/main/java/org/opentripplanner/service/realtimevehicles/internal/RealtimeVehicleRepositoryLifecycle.java @@ -1,6 +1,6 @@ package org.opentripplanner.service.realtimevehicles.internal; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepository; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepositorySnapshot; diff --git a/application/src/main/java/org/opentripplanner/standalone/api/HttpRequestScoped.java b/application/src/main/java/org/opentripplanner/standalone/api/HttpRequestScoped.java index dcf74e22442..9caf1f411ec 100644 --- a/application/src/main/java/org/opentripplanner/standalone/api/HttpRequestScoped.java +++ b/application/src/main/java/org/opentripplanner/standalone/api/HttpRequestScoped.java @@ -5,12 +5,13 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.opentripplanner.core.model.transaction.TransactionScope; import org.opentripplanner.standalone.configure.RequestScopedFactory; /** * A real Dagger scope for bindings that must be created exactly once per HTTP request and shared * for the lifetime of that request — most importantly the {@link - * org.opentripplanner.framework.transaction.api.TransactionScope} pinning a consistent view of + * TransactionScope} pinning a consistent view of * real-time data, and anything derived from it (e.g. {@link * org.opentripplanner.transit.service.TransitService}). See {@link * RequestScopedFactory}. diff --git a/application/src/main/java/org/opentripplanner/standalone/config/configure/DeduplicatorServiceModule.java b/application/src/main/java/org/opentripplanner/standalone/config/configure/DeduplicatorServiceModule.java index 81601657437..f1cd44756b3 100644 --- a/application/src/main/java/org/opentripplanner/standalone/config/configure/DeduplicatorServiceModule.java +++ b/application/src/main/java/org/opentripplanner/standalone/config/configure/DeduplicatorServiceModule.java @@ -3,7 +3,7 @@ import dagger.Module; import dagger.Provides; import jakarta.inject.Singleton; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.model.framework.Deduplicator; @Module diff --git a/application/src/main/java/org/opentripplanner/standalone/config/configure/LoadConfigModule.java b/application/src/main/java/org/opentripplanner/standalone/config/configure/LoadConfigModule.java index bc75a14d8d3..1980d181fc4 100644 --- a/application/src/main/java/org/opentripplanner/standalone/config/configure/LoadConfigModule.java +++ b/application/src/main/java/org/opentripplanner/standalone/config/configure/LoadConfigModule.java @@ -4,7 +4,7 @@ import dagger.Provides; import jakarta.inject.Singleton; import java.io.File; -import org.opentripplanner.core.framework.di.TransitServicePeriod; +import org.opentripplanner.core.model.di.TransitServicePeriod; import org.opentripplanner.core.model.time.LocalDateRange; import org.opentripplanner.datastore.api.OtpBaseDirectory; import org.opentripplanner.datastore.api.OtpDataStoreConfig; diff --git a/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplication.java b/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplication.java index 97066e76a7f..f6134d54a78 100644 --- a/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplication.java +++ b/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplication.java @@ -2,7 +2,8 @@ import jakarta.ws.rs.core.Application; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.transaction.RepositoryHandle; import org.opentripplanner.datastore.api.DataSource; import org.opentripplanner.ext.carpooling.CarpoolingRepository; import org.opentripplanner.ext.carpooling.routing.CarpoolTripVertexResolver; @@ -11,7 +12,6 @@ import org.opentripplanner.ext.stopconsolidation.StopConsolidationRepository; import org.opentripplanner.framework.application.LogMDCSupport; import org.opentripplanner.framework.application.OTPFeature; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; import org.opentripplanner.graph_builder.GraphBuilder; import org.opentripplanner.graph_builder.GraphBuilderDataSources; import org.opentripplanner.graph_builder.issue.api.DataImportIssueSummary; diff --git a/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationFactory.java b/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationFactory.java index e370df5b514..9c863f21944 100644 --- a/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationFactory.java +++ b/application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationFactory.java @@ -9,7 +9,11 @@ import org.opentripplanner.apis.gtfs.configure.GtfsSchemaModule; import org.opentripplanner.apis.transmodel.configure.TransmodelSchema; import org.opentripplanner.apis.transmodel.configure.TransmodelSchemaModule; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.framework.transaction.configure.StreetDomain; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.ext.carpooling.CarpoolingRepository; import org.opentripplanner.ext.carpooling.CarpoolingService; import org.opentripplanner.ext.carpooling.configure.CarpoolingModule; @@ -27,11 +31,7 @@ import org.opentripplanner.ext.sorlandsbanen.configure.SorlandsbanenNorwayModule; import org.opentripplanner.ext.stopconsolidation.StopConsolidationRepository; import org.opentripplanner.ext.stopconsolidation.configure.StopConsolidationServiceModule; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.configure.StreetDomain; import org.opentripplanner.framework.transaction.configure.TransactionModule; -import org.opentripplanner.framework.transaction.configure.TransitDomain; import org.opentripplanner.graph_builder.issue.api.DataImportIssueSummary; import org.opentripplanner.raptor.configure.RaptorConfig; import org.opentripplanner.routing.algorithm.raptoradapter.transit.RaptorTransitData; diff --git a/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedFactory.java b/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedFactory.java index 82970bf58e1..11b910a479d 100644 --- a/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedFactory.java +++ b/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedFactory.java @@ -9,11 +9,11 @@ import org.opentripplanner.apis.transmodel.TransmodelAPIParameters; import org.opentripplanner.apis.transmodel.TransmodelGraphQLRequestContext; import org.opentripplanner.apis.transmodel.configure.TransmodelSchema; +import org.opentripplanner.core.model.transaction.TransactionScope; import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayService; import org.opentripplanner.ext.geocoder.LuceneIndex; import org.opentripplanner.ext.ojp.parameters.OjpApiParameters; import org.opentripplanner.ext.ojp.parameters.TriasApiParameters; -import org.opentripplanner.framework.transaction.api.TransactionScope; import org.opentripplanner.routing.api.RoutingService; import org.opentripplanner.routing.api.request.RouteRequest; import org.opentripplanner.routing.fares.FareService; diff --git a/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedModule.java b/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedModule.java index 6e908f13ffc..04852e03bc3 100644 --- a/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedModule.java +++ b/application/src/main/java/org/opentripplanner/standalone/configure/RequestScopedModule.java @@ -9,6 +9,10 @@ import org.opentripplanner.apis.gtfs.GtfsGraphQLRequestContext; import org.opentripplanner.apis.transmodel.TransmodelAPIParameters; import org.opentripplanner.apis.transmodel.TransmodelGraphQLRequestContext; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.TransactionScope; import org.opentripplanner.ext.carpooling.CarpoolingService; import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings; import org.opentripplanner.ext.flex.FlexParameters; @@ -18,10 +22,6 @@ import org.opentripplanner.ext.ridehailing.RideHailingService; import org.opentripplanner.ext.sorlandsbanen.SorlandsbanenNorwayService; import org.opentripplanner.ext.stopconsolidation.StopConsolidationService; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.TransactionScope; -import org.opentripplanner.framework.transaction.configure.TransitDomain; import org.opentripplanner.raptor.configure.RaptorConfig; import org.opentripplanner.routing.algorithm.filterchain.ext.EmissionDecorator; import org.opentripplanner.routing.algorithm.filterchain.framework.spi.ItineraryDecorator; diff --git a/application/src/main/java/org/opentripplanner/standalone/server/MetricsLogging.java b/application/src/main/java/org/opentripplanner/standalone/server/MetricsLogging.java index a9b3804c488..bdfd3a48205 100644 --- a/application/src/main/java/org/opentripplanner/standalone/server/MetricsLogging.java +++ b/application/src/main/java/org/opentripplanner/standalone/server/MetricsLogging.java @@ -19,10 +19,10 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ForkJoinPool; +import org.opentripplanner.core.framework.transaction.configure.StreetDomain; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.framework.application.OTPFeature; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.configure.StreetDomain; -import org.opentripplanner.framework.transaction.configure.TransitDomain; import org.opentripplanner.graph_builder.issue.api.DataImportIssueSummary; import org.opentripplanner.raptor.configure.RaptorConfig; import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule; diff --git a/application/src/main/java/org/opentripplanner/transit/configure/TransitModule.java b/application/src/main/java/org/opentripplanner/transit/configure/TransitModule.java index 0d35a4ab486..0dca65ac841 100644 --- a/application/src/main/java/org/opentripplanner/transit/configure/TransitModule.java +++ b/application/src/main/java/org/opentripplanner/transit/configure/TransitModule.java @@ -5,10 +5,10 @@ import dagger.Provides; import jakarta.inject.Singleton; import java.time.LocalDate; -import org.opentripplanner.framework.transaction.RepositoryRegistry; +import org.opentripplanner.core.framework.transaction.configure.TransitDomain; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; import org.opentripplanner.framework.transaction.TimetableSnapshotParameters; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.configure.TransitDomain; import org.opentripplanner.routing.algorithm.raptoradapter.transit.RaptorTransitData; import org.opentripplanner.standalone.config.ConfigModel; import org.opentripplanner.standalone.configure.RequestScopedFactory; diff --git a/application/src/main/java/org/opentripplanner/transit/model/framework/Deduplicator.java b/application/src/main/java/org/opentripplanner/transit/model/framework/Deduplicator.java index 32a2a808938..dc63d23a736 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/framework/Deduplicator.java +++ b/application/src/main/java/org/opentripplanner/transit/model/framework/Deduplicator.java @@ -13,7 +13,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.utils.tostring.ToStringBuilder; /** diff --git a/application/src/main/java/org/opentripplanner/transit/model/network/TripPattern.java b/application/src/main/java/org/opentripplanner/transit/model/network/TripPattern.java index fb27ac4dd80..6c314c49c3c 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/network/TripPattern.java +++ b/application/src/main/java/org/opentripplanner/transit/model/network/TripPattern.java @@ -547,7 +547,7 @@ private boolean containsSameStopsAsOriginalPattern() { /** * Helper method for getting the trip headsign from the {@link TripTimes}. */ - private I18NString getTripHeadSignFromTripTimes(TripTimes tripTimes) { + private I18NString getTripHeadSignFromTripTimes(TripTimes tripTimes) { return tripTimes != null ? tripTimes.getTripHeadsign() : null; } diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/RealTimeTripUpdate.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/RealTimeTripUpdate.java index e9213b28ba0..f86aae35301 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/RealTimeTripUpdate.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/RealTimeTripUpdate.java @@ -11,7 +11,7 @@ public final class RealTimeTripUpdate { private final TripPattern pattern; - private final TripTimes updatedTripTimes; + private final TripTimes updatedTripTimes; private final LocalDate serviceDate; @Nullable @@ -61,7 +61,11 @@ private RealTimeTripUpdate(Builder builder) { * @param serviceDate the service date for which this update applies (updates are valid * only for one service date). */ - public static Builder of(TripPattern pattern, TripTimes updatedTripTimes, LocalDate serviceDate) { + public static Builder of( + TripPattern pattern, + TripTimes updatedTripTimes, + LocalDate serviceDate + ) { return new Builder(pattern, updatedTripTimes, serviceDate); } @@ -69,7 +73,7 @@ public TripPattern pattern() { return pattern; } - public TripTimes updatedTripTimes() { + public TripTimes updatedTripTimes() { return updatedTripTimes; } @@ -107,7 +111,7 @@ public TripPattern hideTripInScheduledPattern() { public static class Builder { private final TripPattern pattern; - private final TripTimes updatedTripTimes; + private final TripTimes updatedTripTimes; private final LocalDate serviceDate; private TripOnServiceDate addedTripOnServiceDate = null; private boolean tripCreation = false; @@ -116,7 +120,7 @@ public static class Builder { private boolean revertPreviousRealTimeUpdates = false; private TripPattern hideTripInScheduledPattern = null; - private Builder(TripPattern pattern, TripTimes updatedTripTimes, LocalDate serviceDate) { + private Builder(TripPattern pattern, TripTimes updatedTripTimes, LocalDate serviceDate) { this.pattern = pattern; this.updatedTripTimes = updatedTripTimes; this.serviceDate = serviceDate; diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimes.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimes.java index b4940384c85..719fe0e00e5 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimes.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimes.java @@ -9,8 +9,8 @@ import java.util.OptionalInt; import java.util.function.Supplier; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.accessibility.Accessibility; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.i18n.I18NString; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.framework.error.OtpError; diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimesBuilder.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimesBuilder.java index 0cd76274a15..b10e2be56b4 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimesBuilder.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/ScheduledTripTimesBuilder.java @@ -3,7 +3,7 @@ import java.util.BitSet; import java.util.List; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.i18n.I18NString; import org.opentripplanner.transit.model.timetable.booking.BookingInfo; import org.opentripplanner.utils.time.TimeUtils; diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/StopTimeToScheduledTripTimesMapper.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/StopTimeToScheduledTripTimesMapper.java index a6d5e85555d..e6cf5df3259 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/StopTimeToScheduledTripTimesMapper.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/StopTimeToScheduledTripTimesMapper.java @@ -5,7 +5,7 @@ import java.util.Collection; import java.util.List; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.i18n.I18NString; import org.opentripplanner.model.StopTime; import org.opentripplanner.transit.model.timetable.booking.BookingInfo; diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/Timetable.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/Timetable.java index 6cdadc42aa2..b3d44cbb4e5 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/Timetable.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/Timetable.java @@ -24,9 +24,9 @@ public class Timetable implements Serializable { private final TripPattern pattern; - private List tripTimes; + private List> tripTimes; - private Map tripTimesIndex; + private Map> tripTimesIndex; private List frequencyEntries; @@ -57,12 +57,12 @@ public TimetableBuilder copyOf() { } @Nullable - public TripTimes getTripTimes(Trip trip) { + public TripTimes getTripTimes(Trip trip) { return getTripTimes(trip.getId()); } @Nullable - public TripTimes getTripTimes(FeedScopedId tripId) { + public TripTimes getTripTimes(FeedScopedId tripId) { return tripTimesIndex.get(tripId); } @@ -75,7 +75,7 @@ public boolean isValidFor(LocalDate serviceDate) { public void setServiceCodes(Map serviceCodes) { tripTimes = tripTimes .stream() - .map(tt -> tt.withServiceCode(serviceCodes.get(tt.getTrip().getServiceId()))) + .>map(tt -> withServiceCode(tt, serviceCodes.get(tt.getTrip().getServiceId()))) .toList(); tripTimesIndex = tripTimes .stream() @@ -98,7 +98,7 @@ public TripPattern getPattern() { * Contains one TripTimes object for each scheduled trip (even cancelled ones) and possibly * additional TripTimes objects for unscheduled trips. Frequency entries are stored separately. */ - public List getTripTimes() { + public List> getTripTimes() { return tripTimes; } @@ -140,7 +140,7 @@ public Direction getDirection() { * Return an arbitrary TripTimes in this Timetable. * Return a scheduled trip times if it exists, otherwise return a frequency-based trip times. */ - public TripTimes getRepresentativeTripTimes() { + public TripTimes getRepresentativeTripTimes() { return getRepresentativeTripTimes(tripTimes, frequencyEntries); } @@ -160,7 +160,7 @@ public boolean isCreatedByRealTimeUpdater() { * @param frequencies all the frequency-based trip times in a timetable. */ static Direction getDirection( - Collection scheduledTripTimes, + Collection> scheduledTripTimes, Collection frequencies ) { return Optional.ofNullable(getRepresentativeTripTimes(scheduledTripTimes, frequencies)) @@ -175,8 +175,8 @@ static Direction getDirection( * @param frequencies all the frequency-based trip times in a timetable. * */ - private static TripTimes getRepresentativeTripTimes( - Collection scheduledTripTimes, + private static TripTimes getRepresentativeTripTimes( + Collection> scheduledTripTimes, Collection frequencies ) { if (!scheduledTripTimes.isEmpty()) { @@ -201,12 +201,16 @@ public Timetable copyForServiceDate(LocalDate date) { return copyOf().withServiceDate(date).build(); } + private static TripTimes withServiceCode(TripTimes tt, int serviceCode) { + return tt.withServiceCode(serviceCode); + } + /** * Compute the maximum number of whole days a trip schedule lasts. This method * will use the last stop arrival time of the last trip. Return zero if the * arrival time is negative. */ - private static int computeMaxTripSpanDays(List tripTimes) { + private static int computeMaxTripSpanDays(List> tripTimes) { if (tripTimes.isEmpty()) { return 0; } diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/TimetableBuilder.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/TimetableBuilder.java index f6dbb15405b..92156675a1f 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/TimetableBuilder.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/TimetableBuilder.java @@ -14,7 +14,7 @@ public class TimetableBuilder { private TripPattern pattern; private LocalDate serviceDate; - private final Map tripTimes; + private final Map> tripTimes; private final List frequencies; TimetableBuilder() { @@ -45,7 +45,7 @@ public TimetableBuilder withServiceDate(LocalDate serviceDate) { * thrown. This is considered a programming error. Use {@link #addOrUpdateTripTimes(TripTimes)} * if you want to replace an existing trip. */ - public TimetableBuilder addTripTimes(TripTimes tripTimes) { + public TimetableBuilder addTripTimes(TripTimes tripTimes) { var trip = tripTimes.getTrip(); if (this.tripTimes.containsKey(trip.getId())) { throw new IllegalStateException( @@ -60,25 +60,25 @@ public TimetableBuilder addTripTimes(TripTimes tripTimes) { * are replaced. If not, the trip-times it is added. Consider using * {@link #addTripTimes(TripTimes)}. */ - public TimetableBuilder addOrUpdateTripTimes(TripTimes tripTimes) { + public TimetableBuilder addOrUpdateTripTimes(TripTimes tripTimes) { this.tripTimes.put(tripTimes.getTrip().getId(), tripTimes); return this; } - public TimetableBuilder addAllTripTimes(List tripTimes) { - for (TripTimes it : tripTimes) { + public TimetableBuilder addAllTripTimes(List> tripTimes) { + for (TripTimes it : tripTimes) { addTripTimes(it); } return this; } - public TimetableBuilder removeTripTimes(TripTimes tripTimesToRemove) { + public TimetableBuilder removeTripTimes(TripTimes tripTimesToRemove) { tripTimes.remove(tripTimesToRemove.getTrip().getId()); return this; } - public TimetableBuilder removeAllTripTimes(Collection tripTimesToBeRemoved) { - for (TripTimes it : tripTimesToBeRemoved) { + public TimetableBuilder removeAllTripTimes(Collection> tripTimesToBeRemoved) { + for (TripTimes it : tripTimesToBeRemoved) { tripTimes.remove(it.getTrip().getId()); } return this; @@ -90,11 +90,15 @@ public TimetableBuilder removeAllTripTimes(Collection tripTimesToBeRe *

    */ public TimetableBuilder withAdjustedTimes(Duration timeshift) { - tripTimes.replaceAll((t, tt) -> tt.withAdjustedTimes(timeshift)); + tripTimes.replaceAll((t, tt) -> withAdjustedTimes(tt, timeshift)); frequencies.replaceAll(it -> it.withAdjustedTimes(timeshift)); return this; } + private static TripTimes withAdjustedTimes(TripTimes tt, Duration timeshift) { + return tt.withAdjustedTimes(timeshift); + } + public TimetableBuilder addFrequencyEntry(FrequencyEntry frequencyEntry) { this.frequencies.add(frequencyEntry); return this; @@ -111,11 +115,11 @@ public Timetable build() { return new Timetable(this); } - List createImmutableOrderedListOfTripTimes() { + List> createImmutableOrderedListOfTripTimes() { return tripTimes.values().stream().sorted().toList(); } - Map createImmutableTripTimesIndex() { + Map> createImmutableTripTimesIndex() { return Map.copyOf(tripTimes); } diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimes.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimes.java index 87d03cbf400..51d51173367 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimes.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimes.java @@ -31,8 +31,8 @@ * the position within the trip's TripPattern, not its GTFS stop sequence for example or Raptor * stop index. The stop position is 0(zero) based. */ -public sealed interface TripTimes - extends Serializable, Comparable +public sealed interface TripTimes> + extends Serializable, Comparable> permits RealTimeTripTimes, ScheduledTripTimes { /** @@ -106,12 +106,12 @@ default int sortIndex() { } /** Sort trips based on first departure time. */ - default Comparator compare() { + default Comparator> compare() { return Comparator.comparingInt(TripTimes::sortIndex); } /** Sort trips based on first departure time. */ - default int compareTo(TripTimes other) { + default int compareTo(TripTimes other) { return sortIndex() - other.sortIndex(); } diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimesFactory.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimesFactory.java index 3949dd394d1..fff21fb1fa2 100644 --- a/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimesFactory.java +++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/TripTimesFactory.java @@ -1,7 +1,7 @@ package org.opentripplanner.transit.model.timetable; import java.util.List; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.model.StopTime; /** diff --git a/application/src/main/java/org/opentripplanner/transit/repository/DefaultTimetableRepository.java b/application/src/main/java/org/opentripplanner/transit/repository/DefaultTimetableRepository.java index a35e33863b3..c62791547fb 100644 --- a/application/src/main/java/org/opentripplanner/transit/repository/DefaultTimetableRepository.java +++ b/application/src/main/java/org/opentripplanner/transit/repository/DefaultTimetableRepository.java @@ -26,7 +26,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import javax.annotation.Nullable; -import org.jspecify.annotations.NonNull; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.routing.algorithm.raptoradapter.transit.RaptorTransitData; import org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.TimetableUpdateMapper; @@ -362,7 +361,7 @@ public void update(RealTimeTripUpdate realTimeTripUpdate) { TripPattern pattern = realTimeTripUpdate.pattern(); LocalDate serviceDate = realTimeTripUpdate.serviceDate(); - TripTimes updatedTripTimes = realTimeTripUpdate.updatedTripTimes(); + var updatedTripTimes = realTimeTripUpdate.updatedTripTimes(); Timetable tt = resolve(pattern, serviceDate); TimetableBuilder ttb = tt.copyOf().withServiceDate(serviceDate); @@ -439,7 +438,7 @@ public DefaultTimetableRepository commit(boolean force) { return createSnapshot(); } - public @NonNull DefaultTimetableRepository createSnapshot() { + public DefaultTimetableRepository createSnapshot() { RaptorTransitData updatedRaptorData = timetableUpdateMapper.map( realtimeRaptorTransitData, dirtyTimetables.values(), @@ -522,10 +521,10 @@ public boolean revertTripToScheduledTripPattern(FeedScopedId tripId, LocalDate s // under that now-obsolete realtime-added pattern. SortedSet sortedTimetables = this.timetables.get(pattern.getId()); if (sortedTimetables != null) { - TripTimes tripTimesToRemove = null; + TripTimes tripTimesToRemove = null; for (Timetable timetable : sortedTimetables) { if (timetable.isValidFor(serviceDate)) { - final TripTimes tripTimes = timetable.getTripTimes(tripId); + final var tripTimes = timetable.getTripTimes(tripId); if (tripTimes == null) { LOG.debug("No triptimes to remove for trip {}", tripId); } else if (tripTimesToRemove != null) { @@ -796,7 +795,7 @@ private void validateNotReadOnly() { } } - private TripOnServiceDate mapToTripOnServiceDate(TripTimes tripTimes, Timetable timetable) { + private TripOnServiceDate mapToTripOnServiceDate(TripTimes tripTimes, Timetable timetable) { return TripOnServiceDate.of(tripTimes.getTrip().getId()) .withServiceDate(timetable.getServiceDate()) .withTrip(tripTimes.getTrip()) @@ -808,7 +807,7 @@ private TripOnServiceDate mapToTripOnServiceDate(TripTimes tripTimes, Timetable * * @param filter used to filter {@link TripTimes}. */ - private List findTripsOnServiceDates(Predicate filter) { + private List findTripsOnServiceDates(Predicate> filter) { return timetables .values() .stream() diff --git a/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepository.java b/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepository.java index 0ffdb5b4e93..525a1d21a62 100644 --- a/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepository.java +++ b/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepository.java @@ -3,12 +3,13 @@ import java.time.LocalDate; import javax.annotation.Nullable; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.model.transaction.WriteContext; import org.opentripplanner.transit.model.timetable.RealTimeTripUpdate; /** * The mutable repository for the realtime-updated timetables and trip calendar. It is managed by * the transaction framework: trip updaters obtain it through a - * {@link org.opentripplanner.framework.transaction.api.WriteContext} on the single writer thread, + * {@link WriteContext} on the single writer thread, * and {@link #createSnapshot()} is called at commit time to publish a new immutable * {@link TimetableRepositorySnapshot} for the request threads. */ diff --git a/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepositoryLifecycle.java b/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepositoryLifecycle.java index 44e6c905553..27834850088 100644 --- a/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepositoryLifecycle.java +++ b/application/src/main/java/org/opentripplanner/transit/repository/TimetableRepositoryLifecycle.java @@ -2,7 +2,7 @@ import java.time.LocalDate; import java.util.function.Supplier; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; /** * Copy-on-write / freeze lifecycle for the realtime-timetable repository. The repository is a diff --git a/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java b/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java index c45c3d1b146..29abc4121a9 100644 --- a/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java +++ b/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java @@ -135,7 +135,7 @@ public Optional> findTripTimesOnDate(Trip trip, LocalDate s Timetable timetable = findTimetable(pattern, serviceDate); // This check is made here to avoid changing TripTimeOnDate.fromTripTimes - TripTimes times = timetable.getTripTimes(trip); + var times = timetable.getTripTimes(trip); if ( times == null || !this.getServiceCodesRunningForDate(serviceDate).contains(times.getServiceCode()) @@ -151,7 +151,7 @@ public Optional> findTripTimesOnDate(Trip trip, LocalDate s } @Override - public Optional findTripTimes(Trip trip, LocalDate serviceDate) { + public Optional> findTripTimes(Trip trip, LocalDate serviceDate) { return Optional.ofNullable(findPattern(trip, serviceDate)) .map(pattern -> findTimetable(pattern, serviceDate)) .map(timetable -> timetable.getTripTimes(trip)); diff --git a/application/src/main/java/org/opentripplanner/transit/service/StopTimesHelper.java b/application/src/main/java/org/opentripplanner/transit/service/StopTimesHelper.java index 2d9f7d6ee7f..0141c81c41a 100644 --- a/application/src/main/java/org/opentripplanner/transit/service/StopTimesHelper.java +++ b/application/src/main/java/org/opentripplanner/transit/service/StopTimesHelper.java @@ -192,7 +192,7 @@ List stopTimesForStop( if (skipByStopCancellation(pattern, includeCancellations, i)) { continue; } - for (TripTimes t : tt.getTripTimes()) { + for (TripTimes t : tt.getTripTimes()) { if (TripTimesHelper.skipByTripCancellationOrDeletion(t, includeCancellations)) { continue; } @@ -329,7 +329,7 @@ private Queue listTripTimeOnDatesForPatternAtStop( continue; } - for (TripTimes tripTimes : timetable.getTripTimes()) { + for (TripTimes tripTimes : timetable.getTripTimes()) { if (!servicesRunning.contains(tripTimes.getServiceCode())) { continue; } diff --git a/application/src/main/java/org/opentripplanner/transit/service/TransitRepository.java b/application/src/main/java/org/opentripplanner/transit/service/TransitRepository.java index 3891907c828..59d0b88ab85 100644 --- a/application/src/main/java/org/opentripplanner/transit/service/TransitRepository.java +++ b/application/src/main/java/org/opentripplanner/transit/service/TransitRepository.java @@ -553,7 +553,7 @@ public Set getStopLocationsUsedForBikesAllowedTrips() { } private Set getStopLocationsUsedByTripTimes( - Predicate tripTimesPredicate + Predicate> tripTimesPredicate ) { Set stopLocations = getAllTripPatterns() .stream() diff --git a/application/src/main/java/org/opentripplanner/transit/service/TransitService.java b/application/src/main/java/org/opentripplanner/transit/service/TransitService.java index 57ce10560ee..951e5adaf60 100644 --- a/application/src/main/java/org/opentripplanner/transit/service/TransitService.java +++ b/application/src/main/java/org/opentripplanner/transit/service/TransitService.java @@ -460,5 +460,5 @@ Collection findRegularStopsByBoundingBox( * for the given trip on the given service date, or empty if the * trip does not run on that date. */ - Optional findTripTimes(Trip trip, LocalDate serviceDate); + Optional> findTripTimes(Trip trip, LocalDate serviceDate); } diff --git a/application/src/main/java/org/opentripplanner/transit/service/TripTimesHelper.java b/application/src/main/java/org/opentripplanner/transit/service/TripTimesHelper.java index f69980c5480..cb2e21d613e 100644 --- a/application/src/main/java/org/opentripplanner/transit/service/TripTimesHelper.java +++ b/application/src/main/java/org/opentripplanner/transit/service/TripTimesHelper.java @@ -14,7 +14,7 @@ public class TripTimesHelper { * Always returns {@code true} if the trip times is deleted. */ public static boolean skipByTripCancellationOrDeletion( - TripTimes tripTimes, + TripTimes tripTimes, boolean includeCancellations ) { if (tripTimes.isDeleted()) { diff --git a/application/src/main/java/org/opentripplanner/updater/GraphUpdaterManager.java b/application/src/main/java/org/opentripplanner/updater/GraphUpdaterManager.java index 553708db70a..a55460c3bcc 100644 --- a/application/src/main/java/org/opentripplanner/updater/GraphUpdaterManager.java +++ b/application/src/main/java/org/opentripplanner/updater/GraphUpdaterManager.java @@ -10,6 +10,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.model.projectinfo.OtpProjectInfo; import org.opentripplanner.updater.spi.GraphUpdater; import org.opentripplanner.updater.spi.PollingGraphUpdater; @@ -26,7 +27,7 @@ * Write tasks submitted by updaters are serialised per {@link WriteDomain} by the * {@link WriteToGraphCallback}s passed at construction — currently {@link GraphWriterService} * instances, which will be replaced by the new - * {@link org.opentripplanner.framework.transaction.UpdateManager} framework. Each updater is + * {@link UpdateManager} framework. Each updater is * routed to the callback of its declared write domain, so updaters working on unrelated domains * run in parallel. */ diff --git a/application/src/main/java/org/opentripplanner/updater/GraphWriterService.java b/application/src/main/java/org/opentripplanner/updater/GraphWriterService.java index cc3c1c2bcb8..5f2c49eeb9b 100644 --- a/application/src/main/java/org/opentripplanner/updater/GraphWriterService.java +++ b/application/src/main/java/org/opentripplanner/updater/GraphWriterService.java @@ -2,9 +2,9 @@ import java.util.concurrent.Future; import java.util.function.Function; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.WriteContext; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.UpdateManager; +import org.opentripplanner.core.model.transaction.WriteContext; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepository; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepositorySnapshot; import org.opentripplanner.street.graph.Graph; diff --git a/application/src/main/java/org/opentripplanner/updater/configure/UpdaterConfigurator.java b/application/src/main/java/org/opentripplanner/updater/configure/UpdaterConfigurator.java index 6eadb60cbbe..f98504a7df5 100644 --- a/application/src/main/java/org/opentripplanner/updater/configure/UpdaterConfigurator.java +++ b/application/src/main/java/org/opentripplanner/updater/configure/UpdaterConfigurator.java @@ -4,7 +4,9 @@ import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.ext.carpooling.CarpoolingRepository; import org.opentripplanner.ext.carpooling.routing.CarpoolTripVertexResolver; import org.opentripplanner.ext.carpooling.updater.SiriETCarpoolingUpdater; @@ -14,8 +16,6 @@ import org.opentripplanner.ext.vehiclerentalservicedirectory.api.VehicleRentalServiceDirectoryFetcherParameters; import org.opentripplanner.framework.application.OTPFeature; import org.opentripplanner.framework.io.OtpHttpClientFactory; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; import org.opentripplanner.gbfs.network.GbfsNetworkOverrides; import org.opentripplanner.routing.impl.DelegatingTransitAlertServiceImpl; import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepository; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/DuplicatedTripHandler.java b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/DuplicatedTripHandler.java index e57f2d4ed8d..2c5ac311d17 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/DuplicatedTripHandler.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/DuplicatedTripHandler.java @@ -4,7 +4,7 @@ import static org.opentripplanner.updater.spi.UpdateErrorType.OUTSIDE_SERVICE_PERIOD; import static org.opentripplanner.updater.spi.UpdateErrorType.TRIP_NOT_FOUND; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.transit.model.timetable.RealTimeTripUpdate; import org.opentripplanner.transit.model.timetable.ScheduledTripTimes; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealTimeTripUpdateAdapter.java b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealTimeTripUpdateAdapter.java index f89c67c56a6..7212b42366b 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealTimeTripUpdateAdapter.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealTimeTripUpdateAdapter.java @@ -2,7 +2,7 @@ import java.time.LocalDate; import java.util.function.Supplier; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.repository.TimetableRepository; import org.opentripplanner.transit.service.DefaultTransitService; import org.opentripplanner.transit.service.TransitRepository; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealtimeFuzzyTripMatcher.java b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealtimeFuzzyTripMatcher.java index 79405d536d0..e86d3be87a7 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealtimeFuzzyTripMatcher.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/GtfsRealtimeFuzzyTripMatcher.java @@ -91,7 +91,7 @@ public synchronized Trip getTrip( if (pattern.getDirection() != direction) { continue; } - for (TripTimes times : pattern.getScheduledTimetable().getTripTimes()) { + for (TripTimes times : pattern.getScheduledTimetable().getTripTimes()) { if ( times.getScheduledDepartureTime(0) == startTime && servicesRunningForDate.contains(times.getServiceCode()) diff --git a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/StopPositionMapper.java b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/StopPositionMapper.java index 27e5e6622d6..ff532bae204 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/StopPositionMapper.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/StopPositionMapper.java @@ -18,10 +18,10 @@ class StopPositionMapper { private final FeedScopedId tripId; - private final TripTimes tripTimes; + private final TripTimes tripTimes; private final List stopIds; - StopPositionMapper(FeedScopedId tripId, TripTimes tripTimes, Timetable timetable) { + StopPositionMapper(FeedScopedId tripId, TripTimes tripTimes, Timetable timetable) { this.tripId = tripId; this.tripTimes = tripTimes; this.stopIds = timetable diff --git a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/TripTimesUpdater.java b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/TripTimesUpdater.java index 7506143a2f6..97e4e0504c5 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/gtfs/TripTimesUpdater.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/gtfs/TripTimesUpdater.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.model.PickDrop; import org.opentripplanner.model.StopTime; import org.opentripplanner.transit.model.framework.DataValidationException; 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 df039904c9d..6538563d870 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 @@ -13,7 +13,7 @@ import java.util.Objects; import java.util.function.Function; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.i18n.NonLocalizedString; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.model.StopTime; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/ExtraCallTripBuilder.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/ExtraCallTripBuilder.java index da8f95cc8c0..9cf1590dbf8 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/ExtraCallTripBuilder.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/ExtraCallTripBuilder.java @@ -13,7 +13,7 @@ import java.util.Objects; import java.util.function.Function; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.model.StopTime; import org.opentripplanner.transit.model.framework.DataValidationException; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/ModifiedTripBuilder.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/ModifiedTripBuilder.java index 6b0c38738fb..b30ac447825 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/ModifiedTripBuilder.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/ModifiedTripBuilder.java @@ -33,7 +33,7 @@ */ class ModifiedTripBuilder { - private final TripTimes existingTripTimes; + private final TripTimes existingTripTimes; private final TripPattern pattern; private final LocalDate serviceDate; private final ZoneId zoneId; @@ -50,7 +50,7 @@ class ModifiedTripBuilder { private final String vehicleRef; public ModifiedTripBuilder( - TripTimes existingTripTimes, + TripTimes existingTripTimes, TripPattern pattern, EstimatedVehicleJourneyWrapper journey, LocalDate serviceDate, @@ -76,7 +76,7 @@ public ModifiedTripBuilder( * Constructor for tests */ public ModifiedTripBuilder( - TripTimes existingTripTimes, + TripTimes existingTripTimes, TripPattern pattern, LocalDate serviceDate, ZoneId zoneId, diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcher.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcher.java index 87c8d48ca17..b4a840c3b92 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcher.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcher.java @@ -21,7 +21,6 @@ import org.opentripplanner.transit.model.site.RegularStop; import org.opentripplanner.transit.model.timetable.Timetable; import org.opentripplanner.transit.model.timetable.Trip; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.service.TransitService; import org.opentripplanner.updater.spi.UpdateErrorType; import org.opentripplanner.updater.spi.UpdateException; @@ -227,7 +226,7 @@ private TripAndPattern getTripAndPatternForJourney( continue; } - TripTimes times = getCurrentTimetable.apply(tripPattern, serviceDate).getTripTimes(trip); + var times = getCurrentTimetable.apply(tripPattern, serviceDate).getTripTimes(trip); if (times != null && times.getScheduledDepartureTime(0) == departureInSecondsSinceMidnight) { // Found matches possibleTrips.add(new TripAndPattern(times.getTrip(), tripPattern)); diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcherCache.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcherCache.java index 4396b8d4291..b614069097c 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcherCache.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriFuzzyTripMatcherCache.java @@ -5,7 +5,6 @@ import org.opentripplanner.transit.model.basic.TransitMode; import org.opentripplanner.transit.model.network.TripPattern; import org.opentripplanner.transit.model.timetable.Trip; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.service.DefaultTransitService; import org.opentripplanner.transit.service.TransitRepository; import org.opentripplanner.transit.service.TransitService; @@ -51,7 +50,7 @@ public static SiriFuzzyTripMatcherCache create(TransitRepository transitReposito } String lastStopId = tripPattern.lastStop().getId().getId(); - TripTimes tripTimes = tripPattern.getScheduledTimetable().getTripTimes(trip); + var tripTimes = tripPattern.getScheduledTimetable().getTripTimes(trip); if (tripTimes != null) { int arrivalTime = tripTimes.getArrivalTime(tripTimes.getNumStops() - 1); startStopTrips.put(startStopKey(lastStopId, arrivalTime), trip); diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeTripUpdateAdapter.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeTripUpdateAdapter.java index acaa356412d..9d8d4ed5ab7 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeTripUpdateAdapter.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeTripUpdateAdapter.java @@ -1,7 +1,7 @@ package org.opentripplanner.updater.trip.siri; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.repository.TimetableRepository; import org.opentripplanner.transit.service.DefaultTransitService; import org.opentripplanner.transit.service.TransitRepository; diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeUpdateHandler.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeUpdateHandler.java index a29fde66d7c..bb68d6ad783 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeUpdateHandler.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/SiriRealTimeUpdateHandler.java @@ -10,14 +10,13 @@ import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.model.framework.DataValidationException; import org.opentripplanner.transit.model.network.TripPattern; import org.opentripplanner.transit.model.timetable.RealTimeTripTimesBuilder; import org.opentripplanner.transit.model.timetable.RealTimeTripUpdate; import org.opentripplanner.transit.model.timetable.Timetable; import org.opentripplanner.transit.model.timetable.Trip; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.repository.TimetableRepository; import org.opentripplanner.transit.service.TransitService; import org.opentripplanner.updater.spi.DataValidationExceptionMapper; @@ -237,7 +236,7 @@ private TripUpdate handleModifiedTrip( } Timetable currentTimetable = getCurrentTimetable(pattern, serviceDate); - TripTimes existingTripTimes = currentTimetable.getTripTimes(trip); + var existingTripTimes = currentTimetable.getTripTimes(trip); if (existingTripTimes == null) { LOG.debug("tripId {} not found in pattern.", trip.getId()); throw UpdateException.of(trip.getId(), TRIP_NOT_FOUND_IN_PATTERN); @@ -292,7 +291,7 @@ private TripUpdate handleExtraCall( } Timetable currentTimetable = getCurrentTimetable(pattern, serviceDate); - TripTimes existingTripTimes = currentTimetable.getTripTimes(trip); + var existingTripTimes = currentTimetable.getTripTimes(trip); if (existingTripTimes == null) { LOG.debug("tripId {} not found in pattern.", trip.getId()); throw UpdateException.of(trip.getId(), TRIP_NOT_FOUND_IN_PATTERN); diff --git a/application/src/main/java/org/opentripplanner/updater/trip/siri/TripUpdate.java b/application/src/main/java/org/opentripplanner/updater/trip/siri/TripUpdate.java index 12c5fdbb8ef..454f7d12b3b 100644 --- a/application/src/main/java/org/opentripplanner/updater/trip/siri/TripUpdate.java +++ b/application/src/main/java/org/opentripplanner/updater/trip/siri/TripUpdate.java @@ -28,7 +28,7 @@ */ record TripUpdate( StopPattern stopPattern, - TripTimes tripTimes, + TripTimes tripTimes, LocalDate serviceDate, @Nullable TripOnServiceDate addedTripOnServiceDate, @Nullable TripPattern addedTripPattern, diff --git a/application/src/main/java/org/opentripplanner/updater/vehicle_position/RealtimeVehiclePatternMatcher.java b/application/src/main/java/org/opentripplanner/updater/vehicle_position/RealtimeVehiclePatternMatcher.java index 6bf8aff9aa8..83cc771b451 100644 --- a/application/src/main/java/org/opentripplanner/updater/vehicle_position/RealtimeVehiclePatternMatcher.java +++ b/application/src/main/java/org/opentripplanner/updater/vehicle_position/RealtimeVehiclePatternMatcher.java @@ -416,7 +416,7 @@ private PatternAndRealtimeVehicle toRealtimeVehicle( } @Nullable - private static TripTimes matchFrequencyTripTimes( + private static TripTimes matchFrequencyTripTimes( VehiclePosition vehiclePosition, Timetable scheduledTimetable ) { diff --git a/application/src/test-fixtures/java/org/opentripplanner/standalone/api/TestServerContext.java b/application/src/test-fixtures/java/org/opentripplanner/standalone/api/TestServerContext.java index 92f6dafa5c2..e9f2ffe12f8 100644 --- a/application/src/test-fixtures/java/org/opentripplanner/standalone/api/TestServerContext.java +++ b/application/src/test-fixtures/java/org/opentripplanner/standalone/api/TestServerContext.java @@ -5,12 +5,12 @@ import java.time.LocalDate; import java.util.List; import java.util.Optional; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; import org.opentripplanner.ext.emission.internal.DefaultEmissionRepository; import org.opentripplanner.ext.emission.internal.DefaultEmissionService; import org.opentripplanner.ext.emission.internal.itinerary.EmissionItineraryDecorator; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.internal.TransactionFactory; import org.opentripplanner.raptor.configure.RaptorConfig; import org.opentripplanner.routing.algorithm.filterchain.framework.spi.ItineraryDecorator; import org.opentripplanner.routing.algorithm.raptoradapter.transit.RaptorTransitData; diff --git a/application/src/test-fixtures/java/org/opentripplanner/transit/model/TransitTestEnvironment.java b/application/src/test-fixtures/java/org/opentripplanner/transit/model/TransitTestEnvironment.java index 03b44607fe8..5006564f25f 100644 --- a/application/src/test-fixtures/java/org/opentripplanner/transit/model/TransitTestEnvironment.java +++ b/application/src/test-fixtures/java/org/opentripplanner/transit/model/TransitTestEnvironment.java @@ -6,11 +6,11 @@ import java.time.ZoneId; import java.util.concurrent.ExecutionException; import org.opentripplanner.LocalTimeParser; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; import org.opentripplanner.core.model.id.FeedScopedIdForTestFactory; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.internal.TransactionFactory; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.UpdateManager; import org.opentripplanner.routing.algorithm.raptoradapter.transit.RaptorTransitData; import org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.RaptorTransitDataMapper; import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.DefaultTransitDataProviderFilterBuilder; diff --git a/application/src/test-fixtures/java/org/opentripplanner/updater/trip/gtfs/GtfsRtTestHelper.java b/application/src/test-fixtures/java/org/opentripplanner/updater/trip/gtfs/GtfsRtTestHelper.java index d1f04597529..e2c21c59860 100644 --- a/application/src/test-fixtures/java/org/opentripplanner/updater/trip/gtfs/GtfsRtTestHelper.java +++ b/application/src/test-fixtures/java/org/opentripplanner/updater/trip/gtfs/GtfsRtTestHelper.java @@ -6,7 +6,7 @@ import java.time.LocalDate; import java.util.List; import java.util.concurrent.atomic.AtomicReference; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.model.TransitTestEnvironment; import org.opentripplanner.updater.spi.UpdateResult; import org.opentripplanner.updater.trip.UpdateIncrementality; diff --git a/application/src/test-fixtures/java/org/opentripplanner/updater/trip/siri/SiriTestHelper.java b/application/src/test-fixtures/java/org/opentripplanner/updater/trip/siri/SiriTestHelper.java index 911777a0df7..f958073b9dd 100644 --- a/application/src/test-fixtures/java/org/opentripplanner/updater/trip/siri/SiriTestHelper.java +++ b/application/src/test-fixtures/java/org/opentripplanner/updater/trip/siri/SiriTestHelper.java @@ -5,7 +5,7 @@ import java.time.LocalDate; import java.util.List; import java.util.concurrent.atomic.AtomicReference; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.model.TransitTestEnvironment; import org.opentripplanner.transit.service.DefaultTransitService; import org.opentripplanner.updater.spi.UpdateResult; diff --git a/application/src/test/java/org/opentripplanner/GtfsTest.java b/application/src/test/java/org/opentripplanner/GtfsTest.java index b4858617ff1..f9a366996ad 100644 --- a/application/src/test/java/org/opentripplanner/GtfsTest.java +++ b/application/src/test/java/org/opentripplanner/GtfsTest.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.BeforeEach; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; import org.opentripplanner.core.model.id.FeedScopedId; import org.opentripplanner.core.model.time.LocalDateRange; import org.opentripplanner.gtfs.graphbuilder.GtfsBundle; @@ -211,8 +212,7 @@ protected void setUp() throws Exception { transferRepository ); transitRepository.initRaptorTransitData(scheduledRaptorData); - var registry = - org.opentripplanner.framework.transaction.internal.TransactionFactory.createRepositoryRegistry(); + var registry = TransactionFactory.createRepositoryRegistry(); var timetableSnapshot = new org.opentripplanner.transit.repository.DefaultTimetableRepository( new RaptorTransitData(scheduledRaptorData), transitRepository.getTripCalendar() @@ -225,12 +225,11 @@ protected void setUp() throws Exception { LocalDate::now ) ); - var updateManager = - org.opentripplanner.framework.transaction.internal.TransactionFactory.createUpdateManagerWithAtomicCommits( - "test", - registry, - java.util.concurrent.Executors.defaultThreadFactory() - ); + var updateManager = TransactionFactory.createUpdateManagerWithAtomicCommits( + "test", + registry, + java.util.concurrent.Executors.defaultThreadFactory() + ); tripUpdateAdapter = new GtfsRealTimeTripUpdateAdapter( transitRepository, diff --git a/application/src/test/java/org/opentripplanner/OtpArchitectureModules.java b/application/src/test/java/org/opentripplanner/OtpArchitectureModules.java index 79e94554753..72affb9c0a3 100644 --- a/application/src/test/java/org/opentripplanner/OtpArchitectureModules.java +++ b/application/src/test/java/org/opentripplanner/OtpArchitectureModules.java @@ -16,6 +16,9 @@ public interface OtpArchitectureModules { Package OTP_ROOT = Package.of("org.opentripplanner"); + Package CORE = OTP_ROOT.subPackage("core"); + Package CORE_MODEL = CORE.subPackage("model"); + Package CORE_MODEL_ALL = CORE.subPackage("model.."); Package UTILS_PACKAGE = OTP_ROOT.subPackage("utils"); Package DATASTORE = OTP_ROOT.subPackage("datastore"); @@ -27,12 +30,7 @@ public interface OtpArchitectureModules { Package RAPTOR_ADAPTER_API = RAPTOR_ADAPTER.subPackage("api"); Package TRANSIT = OTP_ROOT.subPackage("transit"); Package TRANSIT_MODEL = TRANSIT.subPackage("model"); - Package DOMAIN_CORE = OTP_ROOT.subPackage("core"); Package GEOMETRY = OTP_ROOT.subPackage("street.geometry"); - Package DOMAIN_CORE_FRAMEWORK = DOMAIN_CORE.subPackage("framework"); - Package DOMAIN_CORE_FRAMEWORK_ALL = DOMAIN_CORE.subPackage("framework.."); - Package DOMAIN_CORE_MODEL = DOMAIN_CORE.subPackage("model"); - Package DOMAIN_CORE_MODEL_ALL = DOMAIN_CORE.subPackage("model.."); /* The Raptor module */ Package RAPTOR_ROOT = OTP_ROOT.subPackage("raptor"); @@ -53,8 +51,7 @@ public interface OtpArchitectureModules { Module FRAMEWORK_UTILS = Module.of( OTP_UTILS, - DOMAIN_CORE_MODEL_ALL, - DOMAIN_CORE_FRAMEWORK_ALL, + CORE_MODEL_ALL, FRAMEWORK.subPackage("application"), FRAMEWORK.subPackage("error"), FRAMEWORK.subPackage("i18n"), diff --git a/application/src/test/java/org/opentripplanner/api/model/geometry/EncodedPolylineTest.java b/application/src/test/java/org/opentripplanner/api/model/geometry/EncodedPolylineTest.java index eca349f78f1..10a4a0c26d6 100644 --- a/application/src/test/java/org/opentripplanner/api/model/geometry/EncodedPolylineTest.java +++ b/application/src/test/java/org/opentripplanner/api/model/geometry/EncodedPolylineTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.street.geometry.GeometryUtils; class EncodedPolylineTest { diff --git a/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java b/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java index 80905d112f9..6bf9c5496fa 100644 --- a/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java +++ b/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java @@ -120,7 +120,6 @@ import org.opentripplanner.transit.model.site.StopLocation; import org.opentripplanner.transit.model.timetable.RealTimeTripUpdate; import org.opentripplanner.transit.model.timetable.Trip; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.model.timetable.TripTimesFactory; import org.opentripplanner.transit.repository.DefaultTimetableRepository; import org.opentripplanner.transit.service.DefaultTransitService; @@ -599,7 +598,7 @@ private static Itinerary add10MinuteDelay(Itinerary i1) { .copyOf() .transformTransitLegs(tl -> { if (tl instanceof ScheduledTransitLeg stl) { - TripTimes scheduledTimes = stl.tripTimes(); + var scheduledTimes = stl.tripTimes(); var builder = scheduledTimes.createRealTimeFromScheduledTimes(); for (var i = 0; i < scheduledTimes.getNumStops(); i++) { diff --git a/application/src/test/java/org/opentripplanner/framework/FrameworkArchitectureTest.java b/application/src/test/java/org/opentripplanner/framework/FrameworkArchitectureTest.java index 5c09ac927c5..2fbd9d145ae 100644 --- a/application/src/test/java/org/opentripplanner/framework/FrameworkArchitectureTest.java +++ b/application/src/test/java/org/opentripplanner/framework/FrameworkArchitectureTest.java @@ -1,7 +1,6 @@ package org.opentripplanner.framework; -import static org.opentripplanner.OtpArchitectureModules.DOMAIN_CORE_FRAMEWORK; -import static org.opentripplanner.OtpArchitectureModules.DOMAIN_CORE_MODEL; +import static org.opentripplanner.OtpArchitectureModules.CORE_MODEL; import static org.opentripplanner.OtpArchitectureModules.FRAMEWORK; import static org.opentripplanner.OtpArchitectureModules.GNU_TROVE; import static org.opentripplanner.OtpArchitectureModules.OTP_UTILS; @@ -22,10 +21,10 @@ public class FrameworkArchitectureTest { private static final Package APPLICATION = FRAMEWORK.subPackage("application"); private static final Package COLLECTION = FRAMEWORK.subPackage("collection"); private static final Package FUNCTIONAL = FRAMEWORK.subPackage("functional"); - private static final Package I18N = DOMAIN_CORE_MODEL.subPackage("i18n"); + private static final Package I18N = CORE_MODEL.subPackage("i18n"); private static final Package IO = FRAMEWORK.subPackage("io"); private static final Package LOGGING = FRAMEWORK.subPackage("logging"); - private static final Package RESOURCES = DOMAIN_CORE_FRAMEWORK.subPackage("resources"); + private static final Package RESOURCES = CORE_MODEL.subPackage("resources"); private static final Package TIME = FRAMEWORK.subPackage("time"); @Test diff --git a/application/src/test/java/org/opentripplanner/framework/model/CostTest.java b/application/src/test/java/org/opentripplanner/framework/model/CostTest.java index e6ef264582b..c5e4da64db6 100644 --- a/application/src/test/java/org/opentripplanner/framework/model/CostTest.java +++ b/application/src/test/java/org/opentripplanner/framework/model/CostTest.java @@ -10,8 +10,8 @@ import java.util.List; import java.util.stream.Stream; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.basic.Cost; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class CostTest { diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/Entity.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/Entity.java deleted file mode 100644 index 1ac46579001..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/Entity.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.base; - -public interface Entity { - Integer id(); -} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java deleted file mode 100644 index 7c64d30f23a..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.customer; - -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.model.Customer; - -public interface CustomerRepository { - Customer save(Customer customer); -} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java deleted file mode 100644 index 16a310b2565..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.customer; - -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.EntityIdProvider; - -public interface CustomerRepositorySnapshot extends EntityIdProvider {} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/model/Customer.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/model/Customer.java deleted file mode 100644 index aad5ce0e3fd..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/model/Customer.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.customer.model; - -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.Entity; - -public record Customer(Integer id, String name) implements Entity {} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderRepository.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderRepository.java deleted file mode 100644 index ce4700ff171..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.order; - -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.model.Order; - -public interface OrderRepository { - Order save(Order order); -} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/model/Order.java b/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/model/Order.java deleted file mode 100644 index bc2485e8ae0..00000000000 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/model/Order.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.order.model; - -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.Entity; - -public record Order(Integer id, String description) implements Entity {} diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java index 26d4cf34439..6ee289a4876 100644 --- a/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java +++ b/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.Set; import org.junit.jupiter.api.Test; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.ext.flex.trip.UnscheduledTrip; import org.opentripplanner.framework.application.OTPFeature; import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore; diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/osm/moduletests/walkablearea/PlatformRelationWithTwoHolesAndStairsTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/osm/moduletests/walkablearea/PlatformRelationWithTwoHolesAndStairsTest.java index f0f4917c10b..a4cb2bffdd2 100644 --- a/application/src/test/java/org/opentripplanner/graph_builder/module/osm/moduletests/walkablearea/PlatformRelationWithTwoHolesAndStairsTest.java +++ b/application/src/test/java/org/opentripplanner/graph_builder/module/osm/moduletests/walkablearea/PlatformRelationWithTwoHolesAndStairsTest.java @@ -4,7 +4,6 @@ import static org.opentripplanner.osm.model.NodeBuilder.node; import java.util.List; -import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Test; import org.opentripplanner.graph_builder.module.osm.OsmModuleTestFactory; import org.opentripplanner.osm.TestOsmProvider; @@ -153,7 +152,7 @@ void lowMaxAreaNodes() { ); } - private static @NonNull GraphSummarizer buildSummarizer(int maxAreaNodes) { + private static GraphSummarizer buildSummarizer(int maxAreaNodes) { // Outer ring: ~200 m square var outerBL = node(0, new WgsCoordinate(0, 0)); var outerTL = node(1, new WgsCoordinate(0.002, 0)); diff --git a/application/src/test/java/org/opentripplanner/model/GenericLocationTest.java b/application/src/test/java/org/opentripplanner/model/GenericLocationTest.java index 3f7dfee3e5e..b09f3e97073 100644 --- a/application/src/test/java/org/opentripplanner/model/GenericLocationTest.java +++ b/application/src/test/java/org/opentripplanner/model/GenericLocationTest.java @@ -5,8 +5,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.street.geometry.WgsCoordinate; class GenericLocationTest { diff --git a/application/src/test/java/org/opentripplanner/model/TripTimeOnDateTest.java b/application/src/test/java/org/opentripplanner/model/TripTimeOnDateTest.java index 56c4c9c2e6a..32b4a8ab141 100644 --- a/application/src/test/java/org/opentripplanner/model/TripTimeOnDateTest.java +++ b/application/src/test/java/org/opentripplanner/model/TripTimeOnDateTest.java @@ -264,7 +264,7 @@ void testScheduledStopForExtraCall() { assertEquals(stopC, third.getScheduledStop(shorterScheduledPattern)); } - private static TripTimes tripTimesFor(int stops) { + private static TripTimes tripTimesFor(int stops) { var trip = TransitRepositoryForTest.trip("123").build(); var stopTimes = TEST_MODEL.stopTimesEvery5Minutes(stops, trip, "11:00"); return TripTimesFactory.tripTimes(trip, stopTimes, new Deduplicator()); diff --git a/application/src/test/java/org/opentripplanner/model/plan/TestItineraryBuilder.java b/application/src/test/java/org/opentripplanner/model/plan/TestItineraryBuilder.java index 34db7626b13..e34e2d2e14c 100644 --- a/application/src/test/java/org/opentripplanner/model/plan/TestItineraryBuilder.java +++ b/application/src/test/java/org/opentripplanner/model/plan/TestItineraryBuilder.java @@ -44,7 +44,6 @@ import org.opentripplanner.transit.model.network.StopPattern; import org.opentripplanner.transit.model.network.TripPattern; import org.opentripplanner.transit.model.timetable.Trip; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.opentripplanner.transit.model.timetable.TripTimesFactory; import org.opentripplanner.utils.lang.IntUtils; import org.opentripplanner.utils.time.TimeUtils; @@ -550,7 +549,7 @@ public TestItineraryBuilder transit( stopTimes.add(toStopTime); StopPattern stopPattern = new StopPattern(stopTimes); - final TripTimes tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, new Deduplicator()); + final var tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, new Deduplicator()); TripPattern tripPattern = TripPattern.of(route.getId()) .withRoute(route) .withStopPattern(stopPattern) diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/NetexTestDataSample.java b/application/src/test/java/org/opentripplanner/netex/mapping/NetexTestDataSample.java index 8d12b01ea57..431e2cab473 100644 --- a/application/src/test/java/org/opentripplanner/netex/mapping/NetexTestDataSample.java +++ b/application/src/test/java/org/opentripplanner/netex/mapping/NetexTestDataSample.java @@ -188,9 +188,7 @@ public NetexTestDataSample() { DatedServiceJourney datedServiceJourney = new DatedServiceJourney() .withId(DATED_SERVICE_JOURNEY_ID.get(i)) .withJourneyRef( - List.of( - MappingSupport.createWrappedRef(SERVICE_JOURNEY_ID, ServiceJourneyRefStructure.class) - ) + MappingSupport.createWrappedRef(SERVICE_JOURNEY_ID, ServiceJourneyRefStructure.class) ) .withServiceAlteration(ServiceAlterationEnumeration.PLANNED) .withOperatingDayRef(new OperatingDayRefStructure().withRef(operatingDay.getId())); diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/TripCalendarBuilderTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/TripCalendarBuilderTest.java index 2e33e46294a..e7e3235653a 100644 --- a/application/src/test/java/org/opentripplanner/netex/mapping/TripCalendarBuilderTest.java +++ b/application/src/test/java/org/opentripplanner/netex/mapping/TripCalendarBuilderTest.java @@ -151,9 +151,9 @@ private static HierarchicalMultimap dayType1Assignmen private ArrayListMultimap dsj_2020_11_02(String sjId) { var dsj = new DatedServiceJourney(); dsj.withOperatingDayRef(new OperatingDayRefStructure().withRef(OD_1)); - dsj - .getJourneyRef() - .add(jaxbElement(new JourneyRefStructure().withRef(sjId), JourneyRefStructure.class)); + dsj.setJourneyRef( + jaxbElement(new JourneyRefStructure().withRef(sjId), JourneyRefStructure.class) + ); ArrayListMultimap map = ArrayListMultimap.create(); map.put(sjId, dsj); return map; diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/TripPatternMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/TripPatternMapperTest.java index 2c84b88e7f2..097b25473aa 100644 --- a/application/src/test/java/org/opentripplanner/netex/mapping/TripPatternMapperTest.java +++ b/application/src/test/java/org/opentripplanner/netex/mapping/TripPatternMapperTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.common.collect.ArrayListMultimap; -import java.util.List; import java.util.Map; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -20,10 +19,9 @@ import org.opentripplanner.transit.model.timetable.Trip; import org.opentripplanner.transit.model.timetable.TripAlteration; import org.opentripplanner.transit.model.timetable.TripOnServiceDate; -import org.opentripplanner.transit.model.timetable.TripTimes; import org.rutebanken.netex.model.DatedServiceJourney; -import org.rutebanken.netex.model.DatedServiceJourneyRefStructure; import org.rutebanken.netex.model.OperatingDay; +import org.rutebanken.netex.model.ReplacedJourneys_RelStructure; import org.rutebanken.netex.model.ServiceAlterationEnumeration; class TripPatternMapperTest { @@ -79,7 +77,7 @@ void testMapTripPattern() { assertEquals(1, r.tripPattern().getScheduledTimetable().getTripTimes().size()); - TripTimes tripTimes = r.tripPattern().getScheduledTimetable().getTripTimes().get(0); + var tripTimes = r.tripPattern().getScheduledTimetable().getTripTimes().get(0); assertEquals(4, tripTimes.getNumStops()); @@ -128,11 +126,16 @@ void testDatedServiceJourneyReplacement() { DatedServiceJourney dsjReplacing = sample.getDatedServiceJourneyById( NetexTestDataSample.DATED_SERVICE_JOURNEY_ID_2 ); - dsjReplacing.withJourneyRef( - List.of( - MappingSupport.createWrappedRef(dsjReplaced.getId(), DatedServiceJourneyRefStructure.class) - ) - ); + ReplacedJourneys_RelStructure replacedJourneys = new ReplacedJourneys_RelStructure(); + replacedJourneys + .getDatedVehicleJourneyRefOrNormalDatedVehicleJourneyRef() + .add( + MappingSupport.createWrappedRef( + dsjReplaced.getId(), + org.rutebanken.netex.model.VehicleJourneyRefStructure.class + ) + ); + dsjReplacing.withReplacedJourneys(replacedJourneys); Optional res = mapTripPattern(sample); assertTrue(res.isPresent()); diff --git a/application/src/test/java/org/opentripplanner/raptorlegacy/_data/transit/TestTripSchedule.java b/application/src/test/java/org/opentripplanner/raptorlegacy/_data/transit/TestTripSchedule.java index 00295029c25..b9db94856b4 100644 --- a/application/src/test/java/org/opentripplanner/raptorlegacy/_data/transit/TestTripSchedule.java +++ b/application/src/test/java/org/opentripplanner/raptorlegacy/_data/transit/TestTripSchedule.java @@ -31,7 +31,7 @@ public class TestTripSchedule implements TripSchedule { private final int transitReluctanceIndex; private final Accessibility wheelchairBoarding; private final TripPattern originalPattern; - private final TripTimes tripTimes; + private final TripTimes tripTimes; protected TestTripSchedule( TestTripPattern pattern, @@ -40,7 +40,7 @@ protected TestTripSchedule( int transitReluctanceIndex, Accessibility wheelchairBoarding, TripPattern originalPattern, - TripTimes tripTimes + TripTimes tripTimes ) { this.pattern = pattern; this.arrivalTimes = arrivalTimes; @@ -124,7 +124,7 @@ public LocalDate getServiceDate() { } @Override - public TripTimes getOriginalTripTimes() { + public TripTimes getOriginalTripTimes() { return tripTimes; } @@ -148,7 +148,7 @@ public static class Builder { private int transitReluctanceIndex = 0; private Accessibility wheelchairBoarding = NO_INFORMATION; private TripPattern originalPattern; - private TripTimes tripTimes; + private TripTimes tripTimes; public TestTripSchedule.Builder pattern(TestTripPattern pattern) { this.pattern = pattern; @@ -160,7 +160,7 @@ public TestTripSchedule.Builder originalPattern(TripPattern pattern) { return this; } - public TestTripSchedule.Builder withTripTimes(TripTimes tripTimes) { + public TestTripSchedule.Builder withTripTimes(TripTimes tripTimes) { this.tripTimes = tripTimes; return this; } diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java index 49ed9146ad2..54b94a1199a 100644 --- a/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java +++ b/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java @@ -266,7 +266,7 @@ void isSearchWindowAware() { assertTrue(itinerary.isSearchWindowAware()); } - private TripTimes buildTripTimes(TripPattern originalPattern) { + private TripTimes buildTripTimes(TripPattern originalPattern) { var trip = TransitRepositoryForTest.trip("test").build(); var stopTimes = new ArrayList(); for (int i = 0; i < originalPattern.numberOfStops(); i++) { diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapperTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapperTest.java index cbdc26a1705..694e5d80152 100644 --- a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapperTest.java +++ b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TripPatternForDateMapperTest.java @@ -71,7 +71,7 @@ void testTimetableWithServiceCodesRunningForDateShouldReturnTripPatternForDate() //Each of the mapped trip times should be in the original timetable. (For this specific date) //Can't simply do a check by index, as the trip times for date are sorted during mapping. - for (TripTimes times : mappedPattern.tripTimes()) { + for (TripTimes times : mappedPattern.tripTimes()) { boolean timeTableContainsTimes = timetable.getTripTimes().contains(times); assertTrue(timeTableContainsTimes); } diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilterTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilterTest.java index ed91a537ff7..5d71b0511d1 100644 --- a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilterTest.java +++ b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/DefaultTransitDataProviderFilterTest.java @@ -903,7 +903,7 @@ private TripPatternForDate createTestTripPatternForDate() { .build() .getRoutingTripPattern(); - TripTimes tripTimes = TripTimesFactory.tripTimes( + var tripTimes = TripTimesFactory.tripTimes( TransitRepositoryForTest.trip("1").withRoute(route).build(), List.of(new StopTime()), new Deduplicator() @@ -948,8 +948,8 @@ private List combinedFilterForModesAndBannedAgencies( ); } - private record PatternAndTimes(TripPattern pattern, TripTimes tripTimes) { - public PatternAndTimes withTimes(TripTimes tripTimes) { + private record PatternAndTimes(TripPattern pattern, TripTimes tripTimes) { + public PatternAndTimes withTimes(TripTimes tripTimes) { return new PatternAndTimes(pattern, tripTimes); } } @@ -1014,11 +1014,7 @@ private PatternAndTimes createPatternAndTimes( .withContainsMultipleModes(multipleSubmodes) .build(); - TripTimes tripTimes = TripTimesFactory.tripTimes( - trip, - List.of(new StopTime()), - new Deduplicator() - ); + var tripTimes = TripTimesFactory.tripTimes(trip, List.of(new StopTime()), new Deduplicator()); return new PatternAndTimes(tripPattern, tripTimes); } @@ -1066,11 +1062,7 @@ private PatternAndTimes createPatternAndTimes( .withContainsMultipleModes(containsMultipleModes) .build(); - TripTimes tripTimes = TripTimesFactory.tripTimes( - trip, - List.of(new StopTime()), - new Deduplicator() - ); + var tripTimes = TripTimesFactory.tripTimes(trip, List.of(new StopTime()), new Deduplicator()); return new PatternAndTimes(tripPattern, tripTimes); } diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/RaptorRoutingRequestTransitDataCreatorTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/RaptorRoutingRequestTransitDataCreatorTest.java index 0d383e65733..a3edff2eee1 100644 --- a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/RaptorRoutingRequestTransitDataCreatorTest.java +++ b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/RaptorRoutingRequestTransitDataCreatorTest.java @@ -45,7 +45,7 @@ public void testMergeTripPatterns() { ZonedDateTime startOfTime = ServiceDateUtils.asStartOfService(second, ZoneIds.LONDON); - List tripTimes = List.of(createTripTimesForTest()); + List> tripTimes = List.of(createTripTimesForTest()); // Total available trip patterns RoutingTripPattern tripPattern1 = createTripPattern(TP_ID_1); @@ -98,7 +98,7 @@ public void testMergeTripPatterns() { @Test public void testCreateTripPatterns() { var date = LocalDate.of(2025, 10, 10); - List tripTimes = List.of( + List> tripTimes = List.of( ScheduledTripTimes.of() .withTrip(TransitRepositoryForTest.trip("Test").build()) .withDepartureTimes("23:45 23:55") diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TestRouteData.java b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TestRouteData.java index 6ae35a125fc..ac995926de6 100644 --- a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TestRouteData.java +++ b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TestRouteData.java @@ -36,7 +36,7 @@ public class TestRouteData { private final Route route; private final List trips; private final Map> stopTimesByTrip = new HashMap<>(); - private final Map tripTimesByTrip = new HashMap<>(); + private final Map> tripTimesByTrip = new HashMap<>(); private final Map tripSchedulesByTrip = new HashMap<>(); private final RaptorTimeTable timetable; private final TripPattern tripPattern; @@ -52,7 +52,7 @@ public TestRouteData(Route route, List stops, List times) { List stopTimesFistTrip = firstTrip().getStopTimes(); // Get TripTimes in same order as the trips - List tripTimes = trips + List> tripTimes = trips .stream() .map(tripTimesByTrip::get) .collect(Collectors.toList()); diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/preference/DirectTransitPreferencesTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/preference/DirectTransitPreferencesTest.java index 1dd928bdbdc..52a7a1d324e 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/preference/DirectTransitPreferencesTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/preference/DirectTransitPreferencesTest.java @@ -8,8 +8,8 @@ import java.time.Duration; import java.util.Optional; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.basic.Cost; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.routing.api.request.framework.CostLinearFunction; class DirectTransitPreferencesTest { diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/request/JourneyRequestTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/request/JourneyRequestTest.java index 32dd5acd6e0..5d91f2bb7f9 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/request/JourneyRequestTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/request/JourneyRequestTest.java @@ -5,8 +5,8 @@ import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.routing.api.request.RequestModes; import org.opentripplanner.routing.api.request.request.filter.SelectRequest; import org.opentripplanner.street.model.StreetMode; diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/request/StreetRequestTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/request/StreetRequestTest.java index 2245f0f5726..716fd8ebef9 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/request/StreetRequestTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/request/StreetRequestTest.java @@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.street.model.StreetMode; class StreetRequestTest { diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/request/TransitRequestTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/request/TransitRequestTest.java index 11a06ce906a..004279f280e 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/request/TransitRequestTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/request/TransitRequestTest.java @@ -7,8 +7,8 @@ import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.routing.api.request.DebugRaptor; import org.opentripplanner.routing.api.request.request.filter.SelectRequest; import org.opentripplanner.routing.api.request.request.filter.TransitFilter; diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/via/PassThroughViaLocationTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/via/PassThroughViaLocationTest.java index 93b8d1f160c..b98a6a9d53d 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/via/PassThroughViaLocationTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/via/PassThroughViaLocationTest.java @@ -6,8 +6,8 @@ import java.time.Duration; import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class PassThroughViaLocationTest { diff --git a/application/src/test/java/org/opentripplanner/routing/api/request/via/VisitViaLocationTest.java b/application/src/test/java/org/opentripplanner/routing/api/request/via/VisitViaLocationTest.java index 2cf4d0405b6..8ec46f13695 100644 --- a/application/src/test/java/org/opentripplanner/routing/api/request/via/VisitViaLocationTest.java +++ b/application/src/test/java/org/opentripplanner/routing/api/request/via/VisitViaLocationTest.java @@ -6,8 +6,8 @@ import java.time.Duration; import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.street.geometry.WgsCoordinate; class VisitViaLocationTest { diff --git a/application/src/test/java/org/opentripplanner/routing/core/RouteRequestTest.java b/application/src/test/java/org/opentripplanner/routing/core/RouteRequestTest.java index c9817e74bc9..3c074238dfd 100644 --- a/application/src/test/java/org/opentripplanner/routing/core/RouteRequestTest.java +++ b/application/src/test/java/org/opentripplanner/routing/core/RouteRequestTest.java @@ -15,8 +15,8 @@ import java.time.ZoneOffset; import java.util.List; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; import org.opentripplanner.core.model.id.FeedScopedId; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; import org.opentripplanner.model.GenericLocation; import org.opentripplanner.model.plan.SortOrder; import org.opentripplanner.model.plan.paging.cursor.PageCursor; diff --git a/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java b/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java index 014704e7cc5..0b591c74086 100644 --- a/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java +++ b/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java @@ -11,11 +11,11 @@ import java.util.List; import java.util.Map; import java.util.function.Predicate; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.transaction.RepositoryHandle; import org.opentripplanner.framework.application.OtpAppException; import org.opentripplanner.framework.transaction.TimetableSnapshotParameters; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.internal.TransactionFactory; import org.opentripplanner.gbfs.network.GbfsNetworkOverrides; import org.opentripplanner.model.plan.Itinerary; import org.opentripplanner.raptor.configure.RaptorConfig; diff --git a/application/src/test/java/org/opentripplanner/updater/trip/gtfs/interpolation/NoDataBackwardsEarlinessInterpolatorTest.java b/application/src/test/java/org/opentripplanner/updater/trip/gtfs/interpolation/NoDataBackwardsEarlinessInterpolatorTest.java index 32ff330ab8e..a5a5dd8f2d7 100644 --- a/application/src/test/java/org/opentripplanner/updater/trip/gtfs/interpolation/NoDataBackwardsEarlinessInterpolatorTest.java +++ b/application/src/test/java/org/opentripplanner/updater/trip/gtfs/interpolation/NoDataBackwardsEarlinessInterpolatorTest.java @@ -10,7 +10,7 @@ import java.util.List; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; import org.opentripplanner.transit.model._data.TransitRepositoryForTest; import org.opentripplanner.transit.model.timetable.ScheduledTripTimes; import org.opentripplanner.transit.model.timetable.Trip; diff --git a/astar/pom.xml b/astar/pom.xml index de67202c39b..fe99090cc6e 100644 --- a/astar/pom.xml +++ b/astar/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT @@ -22,20 +22,24 @@ + - ${project.groupId} + org.opentripplanner.core utils ${project.version} + org.slf4j slf4j-api ${slf4j.version} + + org.junit.jupiter - junit-jupiter + junit-jupiter-api ${junit.version} test @@ -45,7 +49,6 @@ 5.23.0 test - \ No newline at end of file diff --git a/checkstyle.xml b/checkstyle.xml index dbf20b6e524..629eaca8d40 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -13,6 +13,12 @@ + + + + diff --git a/client/package-lock.json b/client/package-lock.json index 800e93159d0..7de319c2a3a 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -13,24 +13,24 @@ "bootstrap": "5.3.8", "graphql": "16.14.2", "graphql-request": "7.4.0", - "maplibre-gl": "6.4.1", - "react": "19.2.7", + "maplibre-gl": "6.9.0", + "react": "19.3.0", "react-bootstrap": "2.10.10", - "react-dom": "19.2.7", - "react-map-gl": "8.1.2", + "react-dom": "19.3.0", + "react-map-gl": "8.1.3", "react-select": "5.10.2" }, "devDependencies": { - "@eslint/compat": "2.1.0", + "@eslint/compat": "2.1.1", "@eslint/js": "9.39.5", "@graphql-codegen/cli": "6.2.1", "@graphql-codegen/client-preset": "5.2.4", "@graphql-codegen/introspection": "5.0.1", - "@parcel/watcher": "2.5.6", - "@testing-library/react": "16.3.2", - "@types/react": "19.2.17", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "6.0.3", + "@parcel/watcher": "2.6.0", + "@testing-library/react": "16.3.3", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "@vitejs/plugin-react": "6.1.1", "@vitest/coverage-v8": "5.0.0", "eslint": "9.39.5", "eslint-config-prettier": "10.1.8", @@ -38,13 +38,13 @@ "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.1.1", - "eslint-plugin-react-refresh": "0.5.3", - "globals": "17.7.0", + "eslint-plugin-react-refresh": "0.5.6", + "globals": "17.12.0", "jsdom": "30.0.1", - "prettier": "3.9.5", + "prettier": "3.9.6", "typescript": "6.0.3", - "typescript-eslint": "8.64.0", - "vite": "8.1.5", + "typescript-eslint": "8.70.0", + "vite": "8.3.0", "vitest": "5.0.0" } }, @@ -544,40 +544,6 @@ "node": ">=20.19.0" } }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@emotion/babel-plugin": { "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", @@ -772,9 +738,9 @@ } }, "node_modules/@eslint/compat": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.1.0.tgz", - "integrity": "sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.1.1.tgz", + "integrity": "sha512-rMcy8GSrwNzcISX/BlTDY/GLB4eCopEuy9woIls3To+15OLxykZrxxq+WUcylCPCQ6F4MujjBM1DX5V1aqI3Vw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2426,9 +2392,9 @@ } }, "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "26.2.1", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-26.2.1.tgz", - "integrity": "sha512-QFKCXkOeSzOr8jF75jm6kySOg+dUvOehPhRi68gcOYPHb7U5JloUq0dJW0Y5/fZV8ygfT0Vp2RWodvq+fyxFWA==", + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-26.4.2.tgz", + "integrity": "sha512-6J0vZqMZvRAJKtdWJdDGHEh1YJ2ZHG08/GOur8gCArYhO8ZkM//OXqtI2AAEz4jc2G+Wq4MfcePg8qNK5TZ4Kg==", "license": "ISC", "dependencies": { "@mapbox/jsonlint-lines-primitives": "^2.0.3", @@ -2451,9 +2417,9 @@ "license": "BSD-2-Clause" }, "node_modules/@maplibre/mlt": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@maplibre/mlt/-/mlt-1.1.12.tgz", - "integrity": "sha512-ZeK5w2TTeHOajcLaEQs1KZXw2V9wIKo1PmThlxlsHoXsQsYlBqLJzPOd6tJHRtGTChUY3DPPmjXRArYVvAbmZw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@maplibre/mlt/-/mlt-1.2.1.tgz", + "integrity": "sha512-5n5dgolE2EYxwCKgx8vlwURCB8A+kyfJJyThlYimjlGgOcOe2Bhw9VxxnnHC91OC9PgHg+nVdgVPTYPkIo62vg==", "license": "(MIT OR Apache-2.0)", "dependencies": { "@mapbox/point-geometry": "^1.1.0" @@ -2470,25 +2436,6 @@ "pbf": "^5.1.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2525,19 +2472,19 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "version": "0.149.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.149.0.tgz", + "integrity": "sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==", "dev": true, "license": "MIT", "funding": { - "url": "https://github.com/sponsors/Boshen" + "url": "https://github.com/sponsors/oxc-project" } }, "node_modules/@parcel/watcher": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", - "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2545,7 +2492,7 @@ "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">= 10.0.0" @@ -2555,25 +2502,24 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6" + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", "cpu": [ "arm64" ], @@ -2592,9 +2538,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", - "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", "cpu": [ "arm64" ], @@ -2613,9 +2559,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", "cpu": [ "x64" ], @@ -2634,9 +2580,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", "cpu": [ "x64" ], @@ -2655,13 +2601,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2676,13 +2625,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2697,13 +2649,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2718,13 +2673,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2739,13 +2697,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2760,13 +2721,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2781,9 +2745,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", "cpu": [ "arm64" ], @@ -2801,31 +2765,10 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", "cpu": [ "x64" ], @@ -2844,9 +2787,9 @@ } }, "node_modules/@parcel/watcher/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", "engines": { @@ -2936,10 +2879,27 @@ "react": ">=16.14.0" } }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.8.tgz", + "integrity": "sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.8.tgz", + "integrity": "sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==", "cpu": [ "arm64" ], @@ -2954,9 +2914,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz", + "integrity": "sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==", "cpu": [ "arm64" ], @@ -2971,9 +2931,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz", + "integrity": "sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==", "cpu": [ "x64" ], @@ -2988,9 +2948,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.8.tgz", + "integrity": "sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==", "cpu": [ "x64" ], @@ -3005,9 +2965,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.8.tgz", + "integrity": "sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==", "cpu": [ "arm" ], @@ -3022,13 +2982,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz", + "integrity": "sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3039,13 +3002,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz", + "integrity": "sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3056,13 +3022,16 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.8.tgz", + "integrity": "sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3073,13 +3042,16 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.8.tgz", + "integrity": "sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3090,13 +3062,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz", + "integrity": "sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3107,13 +3082,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz", + "integrity": "sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3124,9 +3102,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.8.tgz", + "integrity": "sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==", "cpu": [ "arm64" ], @@ -3140,29 +3118,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz", + "integrity": "sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==", "cpu": [ "arm64" ], @@ -3177,9 +3136,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz", + "integrity": "sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==", "cpu": [ "x64" ], @@ -3235,9 +3194,9 @@ } }, "node_modules/@testing-library/react": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", - "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "version": "16.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.3.tgz", + "integrity": "sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg==", "dev": true, "license": "MIT", "dependencies": { @@ -3262,17 +3221,6 @@ } } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -3344,22 +3292,22 @@ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "node_modules/@types/react": { - "version": "19.2.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", - "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", "license": "MIT", "dependencies": { "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", "dev": true, "license": "MIT", "peerDependencies": { - "@types/react": "^19.2.0" + "@types/react": "^19.3.0" } }, "node_modules/@types/react-transition-group": { @@ -3385,17 +3333,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.64.0.tgz", - "integrity": "sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.70.0.tgz", + "integrity": "sha512-/v8HZt6RlyIZxB3ntehELOcUcfxKPVGWXnQdJuHRmzrqgF8nQypcC/oxGW+Ot4VGKDq81XugPKxx0n5PBtf9PA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.64.0", - "@typescript-eslint/type-utils": "8.64.0", - "@typescript-eslint/utils": "8.64.0", - "@typescript-eslint/visitor-keys": "8.64.0", + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/type-utils": "8.70.0", + "@typescript-eslint/utils": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -3408,7 +3356,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.64.0", + "@typescript-eslint/parser": "^8.70.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -3424,16 +3372,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.64.0.tgz", - "integrity": "sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.70.0.tgz", + "integrity": "sha512-zYvrmj9Yxd63UGaXw+kdt6A0F0s0qveJyuatIM77bYC2DE4pgmg7a50u8LR7PRtXd0x+h+Tl3eXabGm06SWd3Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.64.0", - "@typescript-eslint/types": "8.64.0", - "@typescript-eslint/typescript-estree": "8.64.0", - "@typescript-eslint/visitor-keys": "8.64.0", + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", "debug": "^4.4.3" }, "engines": { @@ -3449,14 +3397,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.64.0.tgz", - "integrity": "sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.70.0.tgz", + "integrity": "sha512-hFHbTNqhU9G+2eKFXCBVb1tjFT/LceiJ4+HfLO4pTpDI0KHi6iajpcFFkaSQ9gXmCh7n82A0PthaayEdN6mspQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.64.0", - "@typescript-eslint/types": "^8.64.0", + "@typescript-eslint/tsconfig-utils": "^8.70.0", + "@typescript-eslint/types": "^8.70.0", "debug": "^4.4.3" }, "engines": { @@ -3471,14 +3419,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.64.0.tgz", - "integrity": "sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.70.0.tgz", + "integrity": "sha512-8nP3Kwh5hlgZ4FicGvmznAmJe8UL4sdU8tLukrPaMuQmDuk4Y8xYfzu/aYZW4xT2JCgc7H/TpDI5cGlxcWJSqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.64.0", - "@typescript-eslint/visitor-keys": "8.64.0" + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3489,9 +3437,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.64.0.tgz", - "integrity": "sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.70.0.tgz", + "integrity": "sha512-adnkeeNq9Sq1sUf4+FRVc0KdgYghzsgFpZSQVZVvY0LCuUuN0FnQgyGzCJeC4fW1cdXseBAjU2EOqUIjbNcZUw==", "dev": true, "license": "MIT", "engines": { @@ -3506,15 +3454,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.64.0.tgz", - "integrity": "sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.70.0.tgz", + "integrity": "sha512-NUMKIhYVaVIVLnRL9CRt+VVcuLgSHUCpXn4/+K8wql+vdInUzvx8BjUO1oJ7cG9shjFJKtF8F8Hh2kCh3/KBVw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.64.0", - "@typescript-eslint/typescript-estree": "8.64.0", - "@typescript-eslint/utils": "8.64.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/utils": "8.70.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -3531,9 +3479,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.64.0.tgz", - "integrity": "sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.70.0.tgz", + "integrity": "sha512-asTOIYhDg4zdzOScCyaytrsV3cR6B4ecPQlXw/dJIm7J/MZTtCtfVII9JD8Geh4jTCrK/Xe6cg5UevoleMcoJQ==", "dev": true, "license": "MIT", "engines": { @@ -3545,16 +3493,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.64.0.tgz", - "integrity": "sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.70.0.tgz", + "integrity": "sha512-d9NmHMPEKQ7QCLLm1jI3zmoQBwT5KwFYjXBJ9ymZfKCUU+5rmTRykKAFvH5Qn/ZCds3CEAFS9OC9M/jkl0X2bA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.64.0", - "@typescript-eslint/tsconfig-utils": "8.64.0", - "@typescript-eslint/types": "8.64.0", - "@typescript-eslint/visitor-keys": "8.64.0", + "@typescript-eslint/project-service": "8.70.0", + "@typescript-eslint/tsconfig-utils": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -3583,26 +3531,26 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", - "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -3625,16 +3573,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.64.0.tgz", - "integrity": "sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.70.0.tgz", + "integrity": "sha512-oZmtKJz/4fufZ2p3+Cn3ijEojcdfR+1zYDH2xKYrEly0dR/Q/1xUPRCOlKGxod78nWlU2UnDe09GZ3TaknBFGA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.64.0", - "@typescript-eslint/types": "8.64.0", - "@typescript-eslint/typescript-estree": "8.64.0" + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3649,13 +3597,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.64.0.tgz", - "integrity": "sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.70.0.tgz", + "integrity": "sha512-BoC8PiO4Hkdo0TVJh9Ntxr5MxPDI7/oFsrygN5ADelFSeXG/qgNuucIGA+L5Z6JpPTE/uRfcTWtscjbUaufepQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.64.0", + "@typescript-eslint/types": "8.70.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -3680,9 +3628,9 @@ } }, "node_modules/@vis.gl/react-mapbox": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@vis.gl/react-mapbox/-/react-mapbox-8.1.2.tgz", - "integrity": "sha512-g/TbFYympMg+TMS+ctASbcgIxEJRnYL7+VyCo2rI6dpG7dUP4wNOOAUxO8og6OH6QwavaQVYSHcY4mfQL7Ixbw==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@vis.gl/react-mapbox/-/react-mapbox-8.1.3.tgz", + "integrity": "sha512-96sCSl8BKoTLn2xMWlkjlR9GA5URM2t5Ln386t8pNVsoINsUXxweyuJ+gJlDe0GgAIOttXreU/1fK9AfrD28NA==", "license": "MIT", "peerDependencies": { "mapbox-gl": ">=3.5.0", @@ -3696,9 +3644,9 @@ } }, "node_modules/@vis.gl/react-maplibre": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@vis.gl/react-maplibre/-/react-maplibre-8.1.2.tgz", - "integrity": "sha512-cjghAMHSJLO3sJ7N6iHJRG+n0l30LtiZ0TNND+HYhHgZDd8UMdNHwcnqQ7Ku0guY3lZ4Rw4LvMqpJYKcqbX39A==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@vis.gl/react-maplibre/-/react-maplibre-8.1.3.tgz", + "integrity": "sha512-5Ntvp8YP94SBRaJXLolw6Q57CtrPdWYxdCIo+JeI63hM9BPEJ1efLcPgfSAAUhzXanDeorTE91GsZAgoXbnB3g==", "license": "MIT", "dependencies": { "@maplibre/maplibre-gl-style-spec": "^19.2.1" @@ -3740,9 +3688,9 @@ "license": "MIT" }, "node_modules/@vitejs/plugin-react": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz", - "integrity": "sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.1.tgz", + "integrity": "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3754,6 +3702,7 @@ "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", + "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "peerDependenciesMeta": { @@ -3762,6 +3711,9 @@ }, "babel-plugin-react-compiler": { "optional": true + }, + "oxc-transform-react": { + "optional": true } } }, @@ -4332,10 +4284,9 @@ } }, "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.1.0.tgz", + "integrity": "sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==", "license": "MIT", "dependencies": { "require-from-string": "^2.0.2" @@ -5630,9 +5581,9 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.3.tgz", - "integrity": "sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.6.tgz", + "integrity": "sha512-uZnh24On2bk478AkaDAKcpRiYhS3qFSaSNvpXxV6/Ek/BBDICkWGG7MnBSfjnIlCVBei5vsLlIeQYxbF22+Udg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6126,9 +6077,9 @@ } }, "node_modules/globals": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz", - "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==", + "version": "17.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", + "integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", "dev": true, "license": "MIT", "engines": { @@ -7332,9 +7283,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -7348,23 +7299,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -7383,9 +7334,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -7404,9 +7355,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -7425,9 +7376,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -7446,9 +7397,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -7467,13 +7418,16 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -7488,13 +7442,16 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -7509,13 +7466,16 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -7530,13 +7490,16 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -7551,9 +7514,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -7572,9 +7535,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -8037,9 +8000,9 @@ } }, "node_modules/maplibre-gl": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.4.1.tgz", - "integrity": "sha512-KzxQKtfBu/pSz1C+yW1hNS9eyj2h2lC7ufdAi6/SEt177n3oAfDfmUmslRfJdXY7ReAFBcnvwsqmiyoDhtA9GQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.9.0.tgz", + "integrity": "sha512-vFMwMK0Zs+NM/rOMSdtu8bO30DIexhBEVi5KC6f70/XtI+L/K2wC3LsDCAXFZ4s8ik5gAuDugfCNbpllpdJ9bA==", "license": "BSD-3-Clause", "dependencies": { "@mapbox/point-geometry": "^1.1.0", @@ -8047,10 +8010,11 @@ "@mapbox/unitbezier": "^1.0.0", "@mapbox/vector-tile": "^3.0.0", "@maplibre/geojson-vt": "^6.1.1", - "@maplibre/maplibre-gl-style-spec": "^26.2.1", - "@maplibre/mlt": "^1.1.12", + "@maplibre/maplibre-gl-style-spec": "^26.4.2", + "@maplibre/mlt": "^1.2.1", "@maplibre/vt-pbf": "^4.3.2", "@types/geojson": "^7946.0.16", + "bidi-js": "^1.1.0", "earcut": "^3.2.3", "gl-matrix": "^3.4.4", "kdbush": "^4.1.0", @@ -8180,9 +8144,9 @@ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", "dev": true, "funding": [ { @@ -8652,9 +8616,9 @@ } }, "node_modules/postcss": { - "version": "8.5.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.19.tgz", - "integrity": "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==", + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", "dev": true, "funding": [ { @@ -8672,7 +8636,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -8696,9 +8660,9 @@ } }, "node_modules/prettier": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.5.tgz", - "integrity": "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", "dev": true, "license": "MIT", "bin": { @@ -8812,9 +8776,9 @@ "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" }, "node_modules/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", - "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8852,15 +8816,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", - "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", "license": "MIT", "dependencies": { - "scheduler": "^0.27.0" + "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^19.2.7" + "react": "^19.3.0" } }, "node_modules/react-is": { @@ -8876,13 +8840,13 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-map-gl": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-8.1.2.tgz", - "integrity": "sha512-7jBqPoyO30M9GR+qd8utPipWGmpuCPOIJA/ePjR6LjQEZoedTf1hSN1SDj2jj6or8NQxe+ztEi91Bwbs5C+f4A==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-8.1.3.tgz", + "integrity": "sha512-i8ExMBodZ5waBlnnXhPHfubf1mSQrzVBKsp9LUSWIAQjOuUhI4Dv962rzE2QfI7n5oywunldQlxcW1Mjy8rp7w==", "license": "MIT", "dependencies": { - "@vis.gl/react-mapbox": "8.1.2", - "@vis.gl/react-maplibre": "8.1.2" + "@vis.gl/react-mapbox": "8.1.3", + "@vis.gl/react-maplibre": "8.1.3" }, "peerDependencies": { "mapbox-gl": ">=1.13.0", @@ -9012,7 +8976,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9073,13 +9036,13 @@ "dev": true }, "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.8.tgz", + "integrity": "sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.139.0", + "@oxc-project/types": "=0.149.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -9089,21 +9052,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" + "@rolldown/binding-android-arm-eabi": "1.2.8", + "@rolldown/binding-android-arm64": "1.2.8", + "@rolldown/binding-darwin-arm64": "1.2.8", + "@rolldown/binding-darwin-x64": "1.2.8", + "@rolldown/binding-freebsd-x64": "1.2.8", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.8", + "@rolldown/binding-linux-arm64-gnu": "1.2.8", + "@rolldown/binding-linux-arm64-musl": "1.2.8", + "@rolldown/binding-linux-ppc64-gnu": "1.2.8", + "@rolldown/binding-linux-s390x-gnu": "1.2.8", + "@rolldown/binding-linux-x64-gnu": "1.2.8", + "@rolldown/binding-linux-x64-musl": "1.2.8", + "@rolldown/binding-openharmony-arm64": "1.2.8", + "@rolldown/binding-win32-arm64-msvc": "1.2.8", + "@rolldown/binding-win32-x64-msvc": "1.2.8" } }, "node_modules/run-parallel": { @@ -9206,9 +9169,9 @@ } }, "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", "license": "MIT" }, "node_modules/semver": { @@ -10139,16 +10102,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.64.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.64.0.tgz", - "integrity": "sha512-0qg+pDNMnqYzqH9AnNK+39tejHvsShUOUUoRUgtnTGE7QuMZhiFDnozq8nHJVq+Wae6NMLKNWLg5WmkcC/ndyQ==", + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.70.0.tgz", + "integrity": "sha512-P/W5cz70/cQAuKfY3xwQMWWTV7BvJ0mAQmi+9mBcsVPaBUpd6Ohpa+fECv9rBFrQcig86jAiNBFNWUqnTjr4pw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.64.0", - "@typescript-eslint/parser": "8.64.0", - "@typescript-eslint/typescript-estree": "8.64.0", - "@typescript-eslint/utils": "8.64.0" + "@typescript-eslint/eslint-plugin": "8.70.0", + "@typescript-eslint/parser": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/utils": "8.70.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10342,16 +10305,16 @@ } }, "node_modules/vite": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz", - "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.0.tgz", + "integrity": "sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==", "dev": true, "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.5", - "postcss": "^8.5.17", - "rolldown": "~1.1.5", + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.28", + "rolldown": "~1.2.6", "tinyglobby": "^0.2.17" }, "bin": { @@ -10368,7 +10331,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -10420,9 +10383,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", "engines": { diff --git a/client/package.json b/client/package.json index bc77c4cefc7..d8121b921a9 100644 --- a/client/package.json +++ b/client/package.json @@ -20,24 +20,24 @@ "bootstrap": "5.3.8", "graphql": "16.14.2", "graphql-request": "7.4.0", - "maplibre-gl": "6.4.1", - "react": "19.2.7", + "maplibre-gl": "6.9.0", + "react": "19.3.0", "react-bootstrap": "2.10.10", - "react-dom": "19.2.7", - "react-map-gl": "8.1.2", + "react-dom": "19.3.0", + "react-map-gl": "8.1.3", "react-select": "5.10.2" }, "devDependencies": { - "@eslint/compat": "2.1.0", + "@eslint/compat": "2.1.1", "@eslint/js": "9.39.5", "@graphql-codegen/cli": "6.2.1", "@graphql-codegen/client-preset": "5.2.4", "@graphql-codegen/introspection": "5.0.1", - "@parcel/watcher": "2.5.6", - "@testing-library/react": "16.3.2", - "@types/react": "19.2.17", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "6.0.3", + "@parcel/watcher": "2.6.0", + "@testing-library/react": "16.3.3", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "@vitejs/plugin-react": "6.1.1", "@vitest/coverage-v8": "5.0.0", "eslint": "9.39.5", "eslint-config-prettier": "10.1.8", @@ -45,13 +45,13 @@ "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.1.1", - "eslint-plugin-react-refresh": "0.5.3", - "globals": "17.7.0", + "eslint-plugin-react-refresh": "0.5.6", + "globals": "17.12.0", "jsdom": "30.0.1", - "prettier": "3.9.5", + "prettier": "3.9.6", "typescript": "6.0.3", - "typescript-eslint": "8.64.0", - "vite": "8.1.5", + "typescript-eslint": "8.70.0", + "vite": "8.3.0", "vitest": "5.0.0" } } diff --git a/core/framework/pom.xml b/core/framework/pom.xml new file mode 100644 index 00000000000..e6d6df7e934 --- /dev/null +++ b/core/framework/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + org.opentripplanner.core + core + 2.11.0-SNAPSHOT + + + framework + OpenTripPlanner - Core Framework + Core framework implementation - the api should be in the core model module + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + + + + + ${project.groupId} + model + ${project.version} + + + + + jakarta.inject + jakarta.inject-api + 2.0.1 + + + org.slf4j + slf4j-api + + + + + com.google.truth + truth + test + + + io.micrometer + micrometer-core + ${micrometer.version} + test + + + ${project.groupId} + test-fixtures + ${project.version} + test + + + diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/configure/StreetDomain.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/StreetDomain.java similarity index 71% rename from application/src/main/java/org/opentripplanner/framework/transaction/configure/StreetDomain.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/StreetDomain.java index 216b618bb9e..03252789742 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/configure/StreetDomain.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/StreetDomain.java @@ -1,14 +1,16 @@ -package org.opentripplanner.framework.transaction.configure; +package org.opentripplanner.core.framework.transaction.configure; import jakarta.inject.Qualifier; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.UpdateManager; /** - * Qualifies the {@link org.opentripplanner.framework.transaction.RepositoryRegistry} and - * {@link org.opentripplanner.framework.transaction.UpdateManager} belonging to the street write + * Qualifies the {@link RepositoryRegistry} and + * {@link UpdateManager} belonging to the street write * domain: the street graph and the vehicle-rental and vehicle-parking repositories, updated by * the GBFS and parking updaters. *

    diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransitDomain.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/TransitDomain.java similarity index 67% rename from application/src/main/java/org/opentripplanner/framework/transaction/configure/TransitDomain.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/TransitDomain.java index be34126eceb..1c25717c8c3 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/configure/TransitDomain.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/configure/TransitDomain.java @@ -1,14 +1,16 @@ -package org.opentripplanner.framework.transaction.configure; +package org.opentripplanner.core.framework.transaction.configure; import jakarta.inject.Qualifier; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.UpdateManager; /** - * Qualifies the {@link org.opentripplanner.framework.transaction.RepositoryRegistry} and - * {@link org.opentripplanner.framework.transaction.UpdateManager} belonging to the transit write + * Qualifies the {@link RepositoryRegistry} and + * {@link UpdateManager} belonging to the transit write * domain: timetable data, alerts and realtime vehicles, updated by the SIRI and GTFS-RT updaters. *

    * Each write domain has its own registry, transaction sequence and single writer thread, so diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model-2.drawio b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model-2.drawio similarity index 100% rename from application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model-2.drawio rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model-2.drawio diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model-2.png b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model-2.png similarity index 100% rename from application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model-2.png rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model-2.png diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model.drawio b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model.drawio similarity index 100% rename from application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model.drawio rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model.drawio diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model.png b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model.png similarity index 100% rename from application/src/main/java/org/opentripplanner/framework/transaction/images/tx-framework-repo-model.png rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/images/tx-framework-repo-model.png diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryHandle.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryHandle.java similarity index 79% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryHandle.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryHandle.java index 01ec4dae2ee..68411092797 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryHandle.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryHandle.java @@ -1,7 +1,7 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.TransactionScope; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.TransactionScope; /** * Package-private implementation of {@link RepositoryHandle} that additionally exposes diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryRegistry.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryRegistry.java similarity index 79% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryRegistry.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryRegistry.java index 20a6f398dad..0d17f4915d4 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultRepositoryRegistry.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultRepositoryRegistry.java @@ -1,10 +1,10 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; -import org.opentripplanner.framework.transaction.api.TransactionScope; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.TransactionScope; +import org.opentripplanner.core.model.transaction.UpdateManager; /** * Default implementation of {@link RepositoryRegistry}. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultTransactionScope.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultTransactionScope.java similarity index 82% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultTransactionScope.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultTransactionScope.java index 97840e01fac..5172ed80e19 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultTransactionScope.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultTransactionScope.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.Objects; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.TransactionScope; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.TransactionScope; /** * Default request-scoped implementation of {@link TransactionScope}. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultUpdateManager.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultUpdateManager.java similarity index 90% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultUpdateManager.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultUpdateManager.java index c4e2777e451..a2c17a5ba61 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultUpdateManager.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultUpdateManager.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.time.Duration; import java.util.ArrayList; @@ -13,11 +13,11 @@ import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import javax.annotation.Nullable; -import org.opentripplanner.framework.event.DomainEvent; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.WriteContext; +import org.opentripplanner.core.model.event.DomainEvent; +import org.opentripplanner.core.model.event.EventHandler; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.UpdateManager; +import org.opentripplanner.core.model.transaction.WriteContext; /** * Default implementation of {@link UpdateManager}. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultWriteContext.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultWriteContext.java similarity index 83% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultWriteContext.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultWriteContext.java index da1f5d00b24..fc632660659 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/DefaultWriteContext.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/DefaultWriteContext.java @@ -1,11 +1,11 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.Collections; import java.util.List; import java.util.Map; -import org.opentripplanner.framework.event.DomainEvent; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.WriteContext; +import org.opentripplanner.core.model.event.DomainEvent; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.WriteContext; /** * Task-scoped implementation of {@link WriteContext}. diff --git a/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/HandlerEntry.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/HandlerEntry.java new file mode 100644 index 00000000000..a3f32b8e124 --- /dev/null +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/HandlerEntry.java @@ -0,0 +1,14 @@ +package org.opentripplanner.core.framework.transaction.internal; + +import org.opentripplanner.core.model.event.DomainEvent; +import org.opentripplanner.core.model.event.EventHandler; +import org.opentripplanner.core.model.transaction.RepositoryHandle; + +/** + * Pairs a {@link EventHandler} with the {@link RepositoryHandle} whose mutable snapshot it writes + * to. + */ +record HandlerEntry( + EventHandler handler, + RepositoryHandle repoHandle +) {} diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/PeriodicCommitScheduler.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/PeriodicCommitScheduler.java similarity index 97% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/PeriodicCommitScheduler.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/PeriodicCommitScheduler.java index d211cf1e980..4202b6ea932 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/PeriodicCommitScheduler.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/PeriodicCommitScheduler.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import static java.util.concurrent.TimeUnit.MILLISECONDS; diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/RepositorySnapshotCache.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/RepositorySnapshotCache.java similarity index 90% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/RepositorySnapshotCache.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/RepositorySnapshotCache.java index 5978a2fe701..20e57218a7a 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/RepositorySnapshotCache.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/RepositorySnapshotCache.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.Map; import java.util.Objects; diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/Transaction.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/Transaction.java similarity index 81% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/Transaction.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/Transaction.java index 0bcb4fc28f8..090c082d8d5 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/Transaction.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/Transaction.java @@ -1,9 +1,9 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.Objects; import java.util.function.Consumer; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.TransactionScope; +import org.opentripplanner.core.model.transaction.TransactionScope; +import org.opentripplanner.core.model.transaction.UpdateManager; /** * An opaque identity token representing a single committed state of the repository set. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionFactory.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionFactory.java similarity index 85% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionFactory.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionFactory.java index 1d3a937d2d3..4b5f1d157c8 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionFactory.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionFactory.java @@ -1,9 +1,9 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.time.Duration; import java.util.concurrent.ThreadFactory; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.UpdateManager; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.UpdateManager; /** * Factory for creating instances of the transaction framework. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionManager.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionManager.java similarity index 95% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionManager.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionManager.java index ba7168ec80f..b7b90f610e8 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionManager.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionManager.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.ArrayList; import java.util.List; diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionalRepository.java b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionalRepository.java similarity index 93% rename from application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionalRepository.java rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionalRepository.java index 533cb8a40f2..1a3c7014b05 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/internal/TransactionalRepository.java +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/internal/TransactionalRepository.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import java.util.Objects; import java.util.function.Supplier; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; class TransactionalRepository { diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/package.md b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/package.md similarity index 94% rename from application/src/main/java/org/opentripplanner/framework/transaction/package.md rename to core/framework/src/main/java/org/opentripplanner/core/framework/transaction/package.md index 138491e6fa1..8d86741c7d7 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/package.md +++ b/core/framework/src/main/java/org/opentripplanner/core/framework/transaction/package.md @@ -7,11 +7,11 @@ single writer thread applies changes and periodically (or atomically) publishes subsequent readers to see. No locking is required on the read path. The model is a generalization of the timetable-snapshot concurrency approach described in -[`updater/package.md`](../../updater/package.md#realtime-concurrency). That document is still the -best source for the full rationale (why copy-on-write, why a single writer thread, why multiple -coexisting snapshots) — read it first if the "why" here feels thin. This package extracts the same -mechanism so any repository, not just the timetable, can use it without re-implementing the -snapshot/copy-on-write bookkeeping by hand. +[`updater/package.md`](../../../../../../../../../../application/src/main/java/org/opentripplanner/updater/package.md#realtime-concurrency). +That document is still the best source for the full rationale (why copy-on-write, why a single +writer thread, why multiple coexisting snapshots) — read it first if the "why" here feels thin. This +package extracts the same mechanism so any repository, not just the timetable, can use it without +re-implementing the snapshot/copy-on-write bookkeeping by hand. ## Core Concepts diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/internal/TransactionTest.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/TransactionTest.java similarity index 77% rename from application/src/test/java/org/opentripplanner/framework/transaction/internal/TransactionTest.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/TransactionTest.java index dd78a0fa31c..5a969743f53 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/internal/TransactionTest.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/TransactionTest.java @@ -1,9 +1,9 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; -import org.opentripplanner._support.asserts.AssertEqualsAndHashCode; +import org.opentripplanner.core.testfixtures.lang.AssertEqualsAndHashCode; class TransactionTest { diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/internal/UpdateManagerMetricsTest.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/UpdateManagerMetricsTest.java similarity index 96% rename from application/src/test/java/org/opentripplanner/framework/transaction/internal/UpdateManagerMetricsTest.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/UpdateManagerMetricsTest.java index a7f1955ec03..f93c4fa4a88 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/internal/UpdateManagerMetricsTest.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/internal/UpdateManagerMetricsTest.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.internal; +package org.opentripplanner.core.framework.transaction.internal; import static com.google.common.truth.Truth.assertThat; diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/TransactionFrameworkTest.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/TransactionFrameworkTest.java similarity index 83% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/TransactionFrameworkTest.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/TransactionFrameworkTest.java index 52710e82670..deb65975371 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/TransactionFrameworkTest.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/TransactionFrameworkTest.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.moduletest; +package org.opentripplanner.core.framework.transaction.moduletest; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; @@ -13,27 +13,27 @@ import java.util.function.Function; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.UpdateManager; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.TransactionScope; -import org.opentripplanner.framework.transaction.api.WriteContext; -import org.opentripplanner.framework.transaction.internal.TransactionFactory; -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.Entity; -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.EntityIdProvider; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.internal.CustomerRepositoryLifecycle; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.internal.DefaultCustomerRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.model.Customer; -import org.opentripplanner.framework.transaction.moduletest.candyshop.event.CustomerEventHandler; -import org.opentripplanner.framework.transaction.moduletest.candyshop.event.CustomerOrderDomainEvent; -import org.opentripplanner.framework.transaction.moduletest.candyshop.event.OrderEventHandler; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderService; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.internal.DefaultOrderRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.internal.OrderRepositoryLifecycle; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.model.Order; +import org.opentripplanner.core.framework.transaction.internal.TransactionFactory; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.Entity; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.EntityIdProvider; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.internal.CustomerRepositoryLifecycle; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.internal.DefaultCustomerRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.model.Customer; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.event.CustomerEventHandler; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.event.CustomerOrderDomainEvent; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.event.OrderEventHandler; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderService; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.internal.DefaultOrderRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.internal.OrderRepositoryLifecycle; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.model.Order; +import org.opentripplanner.core.model.transaction.RepositoryHandle; +import org.opentripplanner.core.model.transaction.RepositoryRegistry; +import org.opentripplanner.core.model.transaction.TransactionScope; +import org.opentripplanner.core.model.transaction.UpdateManager; +import org.opentripplanner.core.model.transaction.WriteContext; /** * This test demonstrates how the snapshot framework can be used with two repositories. The example diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/Entity.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/Entity.java new file mode 100644 index 00000000000..2cc5f2146f9 --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/Entity.java @@ -0,0 +1,5 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.base; + +public interface Entity { + Integer id(); +} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java similarity index 81% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java index 60119489cdd..51ba2dfa88f 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityIdProvider.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.base; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.base; import java.util.Collection; diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityMap.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityMap.java similarity index 90% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityMap.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityMap.java index e41a3d56d71..6f79864231c 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/base/EntityMap.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/base/EntityMap.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.base; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.base; import java.util.Collection; import java.util.Collections; diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java new file mode 100644 index 00000000000..07524d3e934 --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepository.java @@ -0,0 +1,7 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer; + +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.model.Customer; + +public interface CustomerRepository { + Customer save(Customer customer); +} diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java new file mode 100644 index 00000000000..b1a7fb70b93 --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/CustomerRepositorySnapshot.java @@ -0,0 +1,5 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer; + +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.EntityIdProvider; + +public interface CustomerRepositorySnapshot extends EntityIdProvider {} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java similarity index 66% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java index aea61b893a2..fa93e1a203f 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/CustomerRepositoryLifecycle.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.customer.internal; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.internal; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; /** * This life-cycle will create a new mutable repository for each transaction and freeze it into a diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java similarity index 70% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java index d155bd8fb3c..b9b05354d26 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/internal/DefaultCustomerRepository.java @@ -1,10 +1,10 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.customer.internal; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.internal; import java.util.Collection; -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.EntityMap; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.model.Customer; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.EntityMap; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepositorySnapshot; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.model.Customer; /** * The repository implementation implements both the {@link CustomerRepository} and diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/model/Customer.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/model/Customer.java new file mode 100644 index 00000000000..accd6cd12da --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/customer/model/Customer.java @@ -0,0 +1,5 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.model; + +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.Entity; + +public record Customer(Integer id, String name) implements Entity {} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java similarity index 55% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java index d039d4d3080..70ca179ded8 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerEventHandler.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.event; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.event; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.CustomerRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.customer.model.Customer; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.CustomerRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.customer.model.Customer; +import org.opentripplanner.core.model.event.EventHandler; public class CustomerEventHandler implements EventHandler diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java similarity index 51% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java index b0fee0baf41..93f7f362aee 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/CustomerOrderDomainEvent.java @@ -1,6 +1,6 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.event; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.event; -import org.opentripplanner.framework.event.DomainEvent; +import org.opentripplanner.core.model.event.DomainEvent; public record CustomerOrderDomainEvent( int orderId, diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java similarity index 54% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java index 19c44c93760..0dfc4758dd4 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/event/OrderEventHandler.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.event; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.event; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.model.Order; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.model.Order; +import org.opentripplanner.core.model.event.EventHandler; public class OrderEventHandler implements EventHandler { diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderRepository.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderRepository.java new file mode 100644 index 00000000000..1ae352c8d4a --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderRepository.java @@ -0,0 +1,7 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.order; + +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.model.Order; + +public interface OrderRepository { + Order save(Order order); +} diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderService.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderService.java similarity index 69% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderService.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderService.java index 8bf7b0c8f1c..8dfa48318fc 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/OrderService.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/OrderService.java @@ -1,6 +1,6 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.order; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.order; -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.EntityIdProvider; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.EntityIdProvider; /** * In this case we demonstrate that the service can also play the repository snapshot role. diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java similarity index 65% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java index 30e51627ff6..404bd46eeef 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/DefaultOrderRepository.java @@ -1,10 +1,10 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.order.internal; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.internal; import java.util.Collection; -import org.opentripplanner.framework.transaction.moduletest.candyshop.base.EntityMap; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderService; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.model.Order; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.EntityMap; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderService; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.model.Order; /** * The repository implementation implements both the {@link OrderRepository} and diff --git a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java similarity index 76% rename from application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java rename to core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java index 95e6cdc1f23..9f8aea7fb62 100644 --- a/application/src/test/java/org/opentripplanner/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/internal/OrderRepositoryLifecycle.java @@ -1,8 +1,8 @@ -package org.opentripplanner.framework.transaction.moduletest.candyshop.order.internal; +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.internal; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderRepository; -import org.opentripplanner.framework.transaction.moduletest.candyshop.order.OrderService; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderRepository; +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.OrderService; +import org.opentripplanner.core.model.transaction.RepositoryLifecycle; /** * This lifecycle implements the {@link RepositoryLifecycle} interface, but does not create a new diff --git a/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/model/Order.java b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/model/Order.java new file mode 100644 index 00000000000..c13331992ee --- /dev/null +++ b/core/framework/src/test/java/org/opentripplanner/core/framework/transaction/moduletest/candyshop/order/model/Order.java @@ -0,0 +1,5 @@ +package org.opentripplanner.core.framework.transaction.moduletest.candyshop.order.model; + +import org.opentripplanner.core.framework.transaction.moduletest.candyshop.base.Entity; + +public record Order(Integer id, String description) implements Entity {} diff --git a/core/model/pom.xml b/core/model/pom.xml new file mode 100644 index 00000000000..678d4d9a624 --- /dev/null +++ b/core/model/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + org.opentripplanner.core + core + 2.11.0-SNAPSHOT + + + model + OpenTripPlanner - Core Model + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + + + + + ${project.groupId} + utils + ${project.version} + + + + + javax.inject + javax.inject + 1 + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + + com.google.truth + truth + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params + test + + + \ No newline at end of file diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/accessibility/Accessibility.java b/core/model/src/main/java/org/opentripplanner/core/model/accessibility/Accessibility.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/accessibility/Accessibility.java rename to core/model/src/main/java/org/opentripplanner/core/model/accessibility/Accessibility.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/basic/Cost.java b/core/model/src/main/java/org/opentripplanner/core/model/basic/Cost.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/basic/Cost.java rename to core/model/src/main/java/org/opentripplanner/core/model/basic/Cost.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/basic/Distance.java b/core/model/src/main/java/org/opentripplanner/core/model/basic/Distance.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/basic/Distance.java rename to core/model/src/main/java/org/opentripplanner/core/model/basic/Distance.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/basic/NormalizedCost.java b/core/model/src/main/java/org/opentripplanner/core/model/basic/NormalizedCost.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/basic/NormalizedCost.java rename to core/model/src/main/java/org/opentripplanner/core/model/basic/NormalizedCost.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/basic/Ratio.java b/core/model/src/main/java/org/opentripplanner/core/model/basic/Ratio.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/basic/Ratio.java rename to core/model/src/main/java/org/opentripplanner/core/model/basic/Ratio.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorNoop.java b/core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorNoop.java similarity index 94% rename from domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorNoop.java rename to core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorNoop.java index ca44a25884e..6c76cf20f00 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorNoop.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorNoop.java @@ -1,4 +1,4 @@ -package org.opentripplanner.core.framework.deduplicator; +package org.opentripplanner.core.model.deduplicator; import java.util.BitSet; import java.util.List; diff --git a/domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorService.java b/core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorService.java similarity index 95% rename from domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorService.java rename to core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorService.java index 4593fb459ad..30f5db464d0 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/framework/deduplicator/DeduplicatorService.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/deduplicator/DeduplicatorService.java @@ -1,4 +1,4 @@ -package org.opentripplanner.core.framework.deduplicator; +package org.opentripplanner.core.model.deduplicator; import java.util.BitSet; import java.util.List; diff --git a/domain-core/src/main/java/org/opentripplanner/core/framework/di/TransitServicePeriod.java b/core/model/src/main/java/org/opentripplanner/core/model/di/TransitServicePeriod.java similarity index 86% rename from domain-core/src/main/java/org/opentripplanner/core/framework/di/TransitServicePeriod.java rename to core/model/src/main/java/org/opentripplanner/core/model/di/TransitServicePeriod.java index 33d60781297..827dd84639f 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/framework/di/TransitServicePeriod.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/di/TransitServicePeriod.java @@ -1,4 +1,4 @@ -package org.opentripplanner.core.framework.di; +package org.opentripplanner.core.model.di; import java.lang.annotation.ElementType; import java.lang.annotation.Target; diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/doc/DocumentedEnum.java b/core/model/src/main/java/org/opentripplanner/core/model/doc/DocumentedEnum.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/doc/DocumentedEnum.java rename to core/model/src/main/java/org/opentripplanner/core/model/doc/DocumentedEnum.java diff --git a/core/model/src/main/java/org/opentripplanner/core/model/event/DomainEvent.java b/core/model/src/main/java/org/opentripplanner/core/model/event/DomainEvent.java new file mode 100644 index 00000000000..3687b2aa55a --- /dev/null +++ b/core/model/src/main/java/org/opentripplanner/core/model/event/DomainEvent.java @@ -0,0 +1,3 @@ +package org.opentripplanner.core.model.event; + +public interface DomainEvent {} diff --git a/application/src/main/java/org/opentripplanner/framework/event/EventHandler.java b/core/model/src/main/java/org/opentripplanner/core/model/event/EventHandler.java similarity index 89% rename from application/src/main/java/org/opentripplanner/framework/event/EventHandler.java rename to core/model/src/main/java/org/opentripplanner/core/model/event/EventHandler.java index 80d48ab8c31..21e53ff6618 100644 --- a/application/src/main/java/org/opentripplanner/framework/event/EventHandler.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/event/EventHandler.java @@ -1,6 +1,6 @@ -package org.opentripplanner.framework.event; +package org.opentripplanner.core.model.event; -import org.opentripplanner.framework.transaction.api.WriteContext; +import org.opentripplanner.core.model.transaction.WriteContext; /** * A write-side event handler that receives a mutable repository at dispatch time. diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/I18NString.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/I18NString.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/I18NString.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/I18NString.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/I18NStringMapper.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/I18NStringMapper.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/I18NStringMapper.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/I18NStringMapper.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java similarity index 97% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java index 16b8f3dc9ae..293c18e7d2d 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/i18n/LocalizedString.java @@ -5,7 +5,7 @@ import java.util.Locale; import java.util.Objects; import java.util.regex.Pattern; -import org.opentripplanner.core.framework.resources.ResourceBundleSingleton; +import org.opentripplanner.core.model.resources.ResourceBundleSingleton; /** * This is used to localize strings for which localization are known beforehand. Those are local diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/LocalizedStringFormat.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/LocalizedStringFormat.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/LocalizedStringFormat.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/LocalizedStringFormat.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/NonLocalizedString.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/NonLocalizedString.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/NonLocalizedString.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/NonLocalizedString.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/i18n/TranslatedString.java b/core/model/src/main/java/org/opentripplanner/core/model/i18n/TranslatedString.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/i18n/TranslatedString.java rename to core/model/src/main/java/org/opentripplanner/core/model/i18n/TranslatedString.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/id/FeedScopedId.java b/core/model/src/main/java/org/opentripplanner/core/model/id/FeedScopedId.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/id/FeedScopedId.java rename to core/model/src/main/java/org/opentripplanner/core/model/id/FeedScopedId.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleAdaptor.java b/core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleAdaptor.java similarity index 96% rename from domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleAdaptor.java rename to core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleAdaptor.java index ff73f546dde..43f076ca65d 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleAdaptor.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleAdaptor.java @@ -1,4 +1,4 @@ -package org.opentripplanner.core.framework.resources; +package org.opentripplanner.core.model.resources; import java.util.Locale; import java.util.MissingResourceException; diff --git a/domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleSingleton.java b/core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleSingleton.java similarity index 95% rename from domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleSingleton.java rename to core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleSingleton.java index c541665bcf8..7ee7b2f644f 100644 --- a/domain-core/src/main/java/org/opentripplanner/core/framework/resources/ResourceBundleSingleton.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/resources/ResourceBundleSingleton.java @@ -1,4 +1,4 @@ -package org.opentripplanner.core.framework.resources; +package org.opentripplanner.core.model.resources; import java.util.Locale; import java.util.MissingResourceException; diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/time/LocalDateRange.java b/core/model/src/main/java/org/opentripplanner/core/model/time/LocalDateRange.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/time/LocalDateRange.java rename to core/model/src/main/java/org/opentripplanner/core/model/time/LocalDateRange.java diff --git a/domain-core/src/main/java/org/opentripplanner/core/model/time/TimePeriod.java b/core/model/src/main/java/org/opentripplanner/core/model/time/TimePeriod.java similarity index 100% rename from domain-core/src/main/java/org/opentripplanner/core/model/time/TimePeriod.java rename to core/model/src/main/java/org/opentripplanner/core/model/time/TimePeriod.java diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryHandle.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryHandle.java similarity index 87% rename from application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryHandle.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryHandle.java index f4609f710fd..340944d5870 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryHandle.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryHandle.java @@ -1,7 +1,4 @@ -package org.opentripplanner.framework.transaction.api; - -import org.opentripplanner.framework.transaction.RepositoryRegistry; -import org.opentripplanner.framework.transaction.UpdateManager; +package org.opentripplanner.core.model.transaction; /** * Application-scoped handle for a transactional repository. Obtained once at wiring time via diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryLifecycle.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryLifecycle.java similarity index 94% rename from application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryLifecycle.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryLifecycle.java index 1f4070e6081..5b080cd27a1 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/api/RepositoryLifecycle.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryLifecycle.java @@ -1,4 +1,4 @@ -package org.opentripplanner.framework.transaction.api; +package org.opentripplanner.core.model.transaction; /** * Strategy for the copy-on-write / freeze lifecycle of a repository snapshot. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/RepositoryRegistry.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryRegistry.java similarity index 91% rename from application/src/main/java/org/opentripplanner/framework/transaction/RepositoryRegistry.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryRegistry.java index ba40eab18ad..756f673ece6 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/RepositoryRegistry.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/RepositoryRegistry.java @@ -1,9 +1,6 @@ -package org.opentripplanner.framework.transaction; +package org.opentripplanner.core.model.transaction; import java.util.function.Consumer; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.RepositoryLifecycle; -import org.opentripplanner.framework.transaction.api.TransactionScope; /** * Application-scoped registry for transactional repositories. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/api/TransactionScope.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/TransactionScope.java similarity index 88% rename from application/src/main/java/org/opentripplanner/framework/transaction/api/TransactionScope.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/TransactionScope.java index e3af0d3ba72..4bc7084dfe7 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/api/TransactionScope.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/TransactionScope.java @@ -1,6 +1,4 @@ -package org.opentripplanner.framework.transaction.api; - -import org.opentripplanner.framework.transaction.RepositoryRegistry; +package org.opentripplanner.core.model.transaction; /** * Request-scoped consistent view over one or more repositories. diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/UpdateManager.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/UpdateManager.java similarity index 89% rename from application/src/main/java/org/opentripplanner/framework/transaction/UpdateManager.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/UpdateManager.java index 3e690510808..3cb78251b15 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/UpdateManager.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/UpdateManager.java @@ -1,12 +1,10 @@ -package org.opentripplanner.framework.transaction; +package org.opentripplanner.core.model.transaction; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.function.Consumer; -import org.opentripplanner.framework.event.DomainEvent; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.api.RepositoryHandle; -import org.opentripplanner.framework.transaction.api.WriteContext; +import org.opentripplanner.core.model.event.DomainEvent; +import org.opentripplanner.core.model.event.EventHandler; /** * Application-scoped manager for write operations against transactional repositories. @@ -31,7 +29,7 @@ public interface UpdateManager { * This method is NOT THREADSAFE and should not be called concurrently with or after event * publications. *

    - * When a {@link org.opentripplanner.framework.event.DomainEvent} matching + * When a {@link DomainEvent} matching * {@code handler.eventType()} is published, the {@link WriteContext} will call the * given event handler, injecting the mutable repository for {@code repoHandle} at dispatch time. * diff --git a/application/src/main/java/org/opentripplanner/framework/transaction/api/WriteContext.java b/core/model/src/main/java/org/opentripplanner/core/model/transaction/WriteContext.java similarity index 84% rename from application/src/main/java/org/opentripplanner/framework/transaction/api/WriteContext.java rename to core/model/src/main/java/org/opentripplanner/core/model/transaction/WriteContext.java index 8c8c290a2a7..9778db4223e 100644 --- a/application/src/main/java/org/opentripplanner/framework/transaction/api/WriteContext.java +++ b/core/model/src/main/java/org/opentripplanner/core/model/transaction/WriteContext.java @@ -1,8 +1,7 @@ -package org.opentripplanner.framework.transaction.api; +package org.opentripplanner.core.model.transaction; -import org.opentripplanner.framework.event.DomainEvent; -import org.opentripplanner.framework.event.EventHandler; -import org.opentripplanner.framework.transaction.UpdateManager; +import org.opentripplanner.core.model.event.DomainEvent; +import org.opentripplanner.core.model.event.EventHandler; /** * Task-scoped coordination point for write access during a single update. diff --git a/domain-core/src/main/resources/Message.properties b/core/model/src/main/resources/Message.properties similarity index 100% rename from domain-core/src/main/resources/Message.properties rename to core/model/src/main/resources/Message.properties diff --git a/domain-core/src/main/resources/Message_de.properties b/core/model/src/main/resources/Message_de.properties similarity index 100% rename from domain-core/src/main/resources/Message_de.properties rename to core/model/src/main/resources/Message_de.properties diff --git a/domain-core/src/main/resources/Message_es.properties b/core/model/src/main/resources/Message_es.properties similarity index 100% rename from domain-core/src/main/resources/Message_es.properties rename to core/model/src/main/resources/Message_es.properties diff --git a/domain-core/src/main/resources/Message_fr.properties b/core/model/src/main/resources/Message_fr.properties similarity index 100% rename from domain-core/src/main/resources/Message_fr.properties rename to core/model/src/main/resources/Message_fr.properties diff --git a/domain-core/src/main/resources/Message_hu.properties b/core/model/src/main/resources/Message_hu.properties similarity index 100% rename from domain-core/src/main/resources/Message_hu.properties rename to core/model/src/main/resources/Message_hu.properties diff --git a/domain-core/src/main/resources/Message_nl.properties b/core/model/src/main/resources/Message_nl.properties similarity index 100% rename from domain-core/src/main/resources/Message_nl.properties rename to core/model/src/main/resources/Message_nl.properties diff --git a/domain-core/src/main/resources/WayProperties.properties b/core/model/src/main/resources/WayProperties.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties.properties rename to core/model/src/main/resources/WayProperties.properties diff --git a/domain-core/src/main/resources/WayProperties_de.properties b/core/model/src/main/resources/WayProperties_de.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_de.properties rename to core/model/src/main/resources/WayProperties_de.properties diff --git a/domain-core/src/main/resources/WayProperties_fi.properties b/core/model/src/main/resources/WayProperties_fi.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_fi.properties rename to core/model/src/main/resources/WayProperties_fi.properties diff --git a/domain-core/src/main/resources/WayProperties_fr.properties b/core/model/src/main/resources/WayProperties_fr.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_fr.properties rename to core/model/src/main/resources/WayProperties_fr.properties diff --git a/domain-core/src/main/resources/WayProperties_hu.properties b/core/model/src/main/resources/WayProperties_hu.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_hu.properties rename to core/model/src/main/resources/WayProperties_hu.properties diff --git a/domain-core/src/main/resources/WayProperties_nl.properties b/core/model/src/main/resources/WayProperties_nl.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_nl.properties rename to core/model/src/main/resources/WayProperties_nl.properties diff --git a/domain-core/src/main/resources/WayProperties_no.properties b/core/model/src/main/resources/WayProperties_no.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_no.properties rename to core/model/src/main/resources/WayProperties_no.properties diff --git a/domain-core/src/main/resources/WayProperties_sv.properties b/core/model/src/main/resources/WayProperties_sv.properties similarity index 100% rename from domain-core/src/main/resources/WayProperties_sv.properties rename to core/model/src/main/resources/WayProperties_sv.properties diff --git a/domain-core/src/main/resources/internals.properties b/core/model/src/main/resources/internals.properties similarity index 100% rename from domain-core/src/main/resources/internals.properties rename to core/model/src/main/resources/internals.properties diff --git a/domain-core/src/main/resources/internals_de.properties b/core/model/src/main/resources/internals_de.properties similarity index 100% rename from domain-core/src/main/resources/internals_de.properties rename to core/model/src/main/resources/internals_de.properties diff --git a/domain-core/src/main/resources/internals_fi.properties b/core/model/src/main/resources/internals_fi.properties similarity index 100% rename from domain-core/src/main/resources/internals_fi.properties rename to core/model/src/main/resources/internals_fi.properties diff --git a/domain-core/src/main/resources/internals_fr.properties b/core/model/src/main/resources/internals_fr.properties similarity index 100% rename from domain-core/src/main/resources/internals_fr.properties rename to core/model/src/main/resources/internals_fr.properties diff --git a/domain-core/src/main/resources/internals_hu.properties b/core/model/src/main/resources/internals_hu.properties similarity index 100% rename from domain-core/src/main/resources/internals_hu.properties rename to core/model/src/main/resources/internals_hu.properties diff --git a/domain-core/src/main/resources/internals_no.properties b/core/model/src/main/resources/internals_no.properties similarity index 100% rename from domain-core/src/main/resources/internals_no.properties rename to core/model/src/main/resources/internals_no.properties diff --git a/domain-core/src/main/resources/internals_sv.properties b/core/model/src/main/resources/internals_sv.properties similarity index 100% rename from domain-core/src/main/resources/internals_sv.properties rename to core/model/src/main/resources/internals_sv.properties diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/i18n/I18NStringTest.java b/core/model/src/test/java/org/opentripplanner/core/model/i18n/I18NStringTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/i18n/I18NStringTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/i18n/I18NStringTest.java diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/i18n/LocalizedStringTest.java b/core/model/src/test/java/org/opentripplanner/core/model/i18n/LocalizedStringTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/i18n/LocalizedStringTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/i18n/LocalizedStringTest.java diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/i18n/TranslatedStringTest.java b/core/model/src/test/java/org/opentripplanner/core/model/i18n/TranslatedStringTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/i18n/TranslatedStringTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/i18n/TranslatedStringTest.java diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/id/FeedScopedIdTest.java b/core/model/src/test/java/org/opentripplanner/core/model/id/FeedScopedIdTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/id/FeedScopedIdTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/id/FeedScopedIdTest.java diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/time/LocalDateRangeTest.java b/core/model/src/test/java/org/opentripplanner/core/model/time/LocalDateRangeTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/time/LocalDateRangeTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/time/LocalDateRangeTest.java diff --git a/domain-core/src/test/java/org/opentripplanner/core/model/time/TimePeriodTest.java b/core/model/src/test/java/org/opentripplanner/core/model/time/TimePeriodTest.java similarity index 100% rename from domain-core/src/test/java/org/opentripplanner/core/model/time/TimePeriodTest.java rename to core/model/src/test/java/org/opentripplanner/core/model/time/TimePeriodTest.java diff --git a/core/pom.xml b/core/pom.xml new file mode 100644 index 00000000000..e37bc59a096 --- /dev/null +++ b/core/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + org.opentripplanner + otp + 2.11.0-SNAPSHOT + + + org.opentripplanner.core + core + OpenTripPlanner - Core + pom + + + model + framework + test-fixtures + utils + + diff --git a/core/test-fixtures/pom.xml b/core/test-fixtures/pom.xml new file mode 100644 index 00000000000..03085395a56 --- /dev/null +++ b/core/test-fixtures/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + org.opentripplanner.core + core + 2.11.0-SNAPSHOT + + + test-fixtures + OpenTripPlanner - Test Fixtures + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + + + + + org.junit.jupiter + junit-jupiter-api + + + diff --git a/application/src/test/java/org/opentripplanner/_support/asserts/AssertEqualsAndHashCode.java b/core/test-fixtures/src/main/java/org/opentripplanner/core/testfixtures/lang/AssertEqualsAndHashCode.java similarity index 95% rename from application/src/test/java/org/opentripplanner/_support/asserts/AssertEqualsAndHashCode.java rename to core/test-fixtures/src/main/java/org/opentripplanner/core/testfixtures/lang/AssertEqualsAndHashCode.java index 9f084c1b04b..aee85ec1a9d 100644 --- a/application/src/test/java/org/opentripplanner/_support/asserts/AssertEqualsAndHashCode.java +++ b/core/test-fixtures/src/main/java/org/opentripplanner/core/testfixtures/lang/AssertEqualsAndHashCode.java @@ -1,4 +1,4 @@ -package org.opentripplanner._support.asserts; +package org.opentripplanner.core.testfixtures.lang; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/utils/pom.xml b/core/utils/pom.xml similarity index 89% rename from utils/pom.xml rename to core/utils/pom.xml index 18b3ebd2094..184e2e47f2d 100644 --- a/utils/pom.xml +++ b/core/utils/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.opentripplanner - otp-root + org.opentripplanner.core + core 2.11.0-SNAPSHOT @@ -22,27 +22,27 @@ + com.google.code.findbugs jsr305 - - + - org.junit.jupiter - junit-jupiter-api + com.google.truth + truth test org.junit.jupiter - junit-jupiter-params + junit-jupiter-api test - com.google.truth - truth + org.junit.jupiter + junit-jupiter-params test diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/CollectionUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/CollectionUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/CollectionUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/CollectionUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/CollectionsView.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/CollectionsView.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/CollectionsView.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/CollectionsView.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/CompositeComparator.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/CompositeComparator.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/CompositeComparator.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/CompositeComparator.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/EnumSetUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/EnumSetUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/EnumSetUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/EnumSetUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/ListSection.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/ListSection.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/ListSection.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/ListSection.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/ListUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/ListUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/ListUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/ListUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/MapUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/MapUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/MapUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/MapUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/MinMap.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/MinMap.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/MinMap.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/MinMap.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/Pair.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/Pair.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/Pair.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/Pair.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/SetUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/SetUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/SetUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/SetUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/Split.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/Split.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/Split.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/Split.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/StreamUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/StreamUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/StreamUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/StreamUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/collection/TwoWayLinearSearch.java b/core/utils/src/main/java/org/opentripplanner/utils/collection/TwoWayLinearSearch.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/collection/TwoWayLinearSearch.java rename to core/utils/src/main/java/org/opentripplanner/utils/collection/TwoWayLinearSearch.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/ArrayUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/ArrayUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/ArrayUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/ArrayUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/BitSetUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/BitSetUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/BitSetUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/BitSetUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/Box.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/Box.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/Box.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/Box.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/DoubleRange.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/DoubleRange.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/DoubleRange.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/DoubleRange.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/DoubleUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/DoubleUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/DoubleUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/DoubleUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/IntBox.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/IntBox.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/IntBox.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/IntBox.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/IntRange.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/IntRange.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/IntRange.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/IntRange.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/IntUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/IntUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/IntUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/IntUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilder.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilder.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilder.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilder.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/ObjectUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/ObjectUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/ObjectUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/ObjectUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/OtpNumberFormat.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/OtpNumberFormat.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/OtpNumberFormat.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/OtpNumberFormat.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/RunnableUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/RunnableUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/RunnableUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/RunnableUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/Sandbox.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/Sandbox.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/Sandbox.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/Sandbox.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/StringUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/StringUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/StringUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/StringUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/lang/Units.java b/core/utils/src/main/java/org/opentripplanner/utils/lang/Units.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/lang/Units.java rename to core/utils/src/main/java/org/opentripplanner/utils/lang/Units.java diff --git a/utils/src/main/java/org/opentripplanner/utils/logging/PowerOfTwoThrottle.java b/core/utils/src/main/java/org/opentripplanner/utils/logging/PowerOfTwoThrottle.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/logging/PowerOfTwoThrottle.java rename to core/utils/src/main/java/org/opentripplanner/utils/logging/PowerOfTwoThrottle.java diff --git a/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTracker.java b/core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTracker.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/logging/ProgressTracker.java rename to core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTracker.java diff --git a/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerInputStream.java b/core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerInputStream.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerInputStream.java rename to core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerInputStream.java diff --git a/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerOutputStream.java b/core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerOutputStream.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerOutputStream.java rename to core/utils/src/main/java/org/opentripplanner/utils/logging/ProgressTrackerOutputStream.java diff --git a/utils/src/main/java/org/opentripplanner/utils/logging/Throttle.java b/core/utils/src/main/java/org/opentripplanner/utils/logging/Throttle.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/logging/Throttle.java rename to core/utils/src/main/java/org/opentripplanner/utils/logging/Throttle.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/CharacterEscapeFormatter.java b/core/utils/src/main/java/org/opentripplanner/utils/text/CharacterEscapeFormatter.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/CharacterEscapeFormatter.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/CharacterEscapeFormatter.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/FileSizeToTextConverter.java b/core/utils/src/main/java/org/opentripplanner/utils/text/FileSizeToTextConverter.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/FileSizeToTextConverter.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/FileSizeToTextConverter.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/HexString.java b/core/utils/src/main/java/org/opentripplanner/utils/text/HexString.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/HexString.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/HexString.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/MarkdownFormatter.java b/core/utils/src/main/java/org/opentripplanner/utils/text/MarkdownFormatter.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/MarkdownFormatter.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/MarkdownFormatter.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/Table.java b/core/utils/src/main/java/org/opentripplanner/utils/text/Table.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/Table.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/Table.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/TableBuilder.java b/core/utils/src/main/java/org/opentripplanner/utils/text/TableBuilder.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/TableBuilder.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/TableBuilder.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/TableRowFormatter.java b/core/utils/src/main/java/org/opentripplanner/utils/text/TableRowFormatter.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/TableRowFormatter.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/TableRowFormatter.java diff --git a/utils/src/main/java/org/opentripplanner/utils/text/TextVariablesSubstitution.java b/core/utils/src/main/java/org/opentripplanner/utils/text/TextVariablesSubstitution.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/text/TextVariablesSubstitution.java rename to core/utils/src/main/java/org/opentripplanner/utils/text/TextVariablesSubstitution.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/CountdownTimer.java b/core/utils/src/main/java/org/opentripplanner/utils/time/CountdownTimer.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/CountdownTimer.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/CountdownTimer.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/DateUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/time/DateUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/DateUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/DateUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/DurationUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/time/DurationUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/DurationUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/DurationUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/LocalDateUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/time/LocalDateUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/LocalDateUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/LocalDateUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/OffsetDateTimeParser.java b/core/utils/src/main/java/org/opentripplanner/utils/time/OffsetDateTimeParser.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/OffsetDateTimeParser.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/OffsetDateTimeParser.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/RelativeTime.java b/core/utils/src/main/java/org/opentripplanner/utils/time/RelativeTime.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/RelativeTime.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/RelativeTime.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/ServiceDateUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/time/ServiceDateUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/ServiceDateUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/ServiceDateUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/time/TimeUtils.java b/core/utils/src/main/java/org/opentripplanner/utils/time/TimeUtils.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/time/TimeUtils.java rename to core/utils/src/main/java/org/opentripplanner/utils/time/TimeUtils.java diff --git a/utils/src/main/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilder.java b/core/utils/src/main/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilder.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilder.java rename to core/utils/src/main/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilder.java diff --git a/utils/src/main/java/org/opentripplanner/utils/tostring/ToStringBuilder.java b/core/utils/src/main/java/org/opentripplanner/utils/tostring/ToStringBuilder.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/tostring/ToStringBuilder.java rename to core/utils/src/main/java/org/opentripplanner/utils/tostring/ToStringBuilder.java diff --git a/utils/src/main/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilder.java b/core/utils/src/main/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilder.java similarity index 100% rename from utils/src/main/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilder.java rename to core/utils/src/main/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilder.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/CollectionUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/CollectionUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/CollectionUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/CollectionUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/CollectionsViewTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/CollectionsViewTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/CollectionsViewTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/CollectionsViewTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/CompositeComparatorTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/CompositeComparatorTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/CompositeComparatorTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/CompositeComparatorTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/EnumSetUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/EnumSetUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/EnumSetUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/EnumSetUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/ListSectionTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/ListSectionTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/ListSectionTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/ListSectionTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/ListUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/ListUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/ListUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/ListUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/MapUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/MapUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/MapUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/MapUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/MinMapTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/MinMapTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/MinMapTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/MinMapTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/SetUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/SetUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/SetUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/SetUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/SplitTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/SplitTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/SplitTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/SplitTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/StreamUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/StreamUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/StreamUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/StreamUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/collection/TwoWayLinearSearchTest.java b/core/utils/src/test/java/org/opentripplanner/utils/collection/TwoWayLinearSearchTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/collection/TwoWayLinearSearchTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/collection/TwoWayLinearSearchTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/ArrayUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/ArrayUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/ArrayUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/ArrayUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/BitSetUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/BitSetUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/BitSetUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/BitSetUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/BoxTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/BoxTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/BoxTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/BoxTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/DoubleRangeTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/DoubleRangeTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/DoubleRangeTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/DoubleRangeTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/DoubleUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/DoubleUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/DoubleUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/DoubleUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/IntBoxTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/IntBoxTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/IntBoxTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/IntBoxTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/IntRangeTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/IntRangeTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/IntRangeTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/IntRangeTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/IntUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/IntUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/IntUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/IntUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilderTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilderTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilderTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/MemEfficientArrayBuilderTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/ObjectUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/ObjectUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/ObjectUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/ObjectUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/OtpNumberFormatTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/OtpNumberFormatTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/OtpNumberFormatTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/OtpNumberFormatTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/RunnableUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/RunnableUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/RunnableUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/RunnableUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/StringUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/StringUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/StringUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/StringUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/lang/UnitsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/lang/UnitsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/lang/UnitsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/lang/UnitsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/logging/PowerOfTwoThrottleTest.java b/core/utils/src/test/java/org/opentripplanner/utils/logging/PowerOfTwoThrottleTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/logging/PowerOfTwoThrottleTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/logging/PowerOfTwoThrottleTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/logging/ProgressTrackerTest.java b/core/utils/src/test/java/org/opentripplanner/utils/logging/ProgressTrackerTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/logging/ProgressTrackerTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/logging/ProgressTrackerTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/logging/ThrottleTest.java b/core/utils/src/test/java/org/opentripplanner/utils/logging/ThrottleTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/logging/ThrottleTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/logging/ThrottleTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/CharacterEscapeFormatterTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/CharacterEscapeFormatterTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/CharacterEscapeFormatterTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/CharacterEscapeFormatterTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/FileSizeToTextConverterTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/FileSizeToTextConverterTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/FileSizeToTextConverterTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/FileSizeToTextConverterTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/HexStringTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/HexStringTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/HexStringTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/HexStringTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/MarkdownFormatterTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/MarkdownFormatterTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/MarkdownFormatterTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/MarkdownFormatterTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/TableTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/TableTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/TableTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/TableTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/text/TextVariablesSubstitutionTest.java b/core/utils/src/test/java/org/opentripplanner/utils/text/TextVariablesSubstitutionTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/text/TextVariablesSubstitutionTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/text/TextVariablesSubstitutionTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/CountdownTimerTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/CountdownTimerTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/CountdownTimerTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/CountdownTimerTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/DateUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/DateUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/DateUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/DateUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/DurationUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/DurationUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/DurationUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/DurationUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/LocalDateUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/LocalDateUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/LocalDateUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/LocalDateUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/OffsetDateTimeParserTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/OffsetDateTimeParserTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/OffsetDateTimeParserTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/OffsetDateTimeParserTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/ServiceDateUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/ServiceDateUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/ServiceDateUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/ServiceDateUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/TimeUtilsTest.java b/core/utils/src/test/java/org/opentripplanner/utils/time/TimeUtilsTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/TimeUtilsTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/TimeUtilsTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/time/ZoneIds.java b/core/utils/src/test/java/org/opentripplanner/utils/time/ZoneIds.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/time/ZoneIds.java rename to core/utils/src/test/java/org/opentripplanner/utils/time/ZoneIds.java diff --git a/utils/src/test/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilderTest.java b/core/utils/src/test/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilderTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilderTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/tostring/MultiLineToStringBuilderTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/tostring/ToStringBuilderTest.java b/core/utils/src/test/java/org/opentripplanner/utils/tostring/ToStringBuilderTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/tostring/ToStringBuilderTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/tostring/ToStringBuilderTest.java diff --git a/utils/src/test/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilderTest.java b/core/utils/src/test/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilderTest.java similarity index 100% rename from utils/src/test/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilderTest.java rename to core/utils/src/test/java/org/opentripplanner/utils/tostring/ValueObjectToStringBuilderTest.java diff --git a/doc/user/Changelog.md b/doc/user/Changelog.md index 74cd96ce22d..10eae679a71 100644 --- a/doc/user/Changelog.md +++ b/doc/user/Changelog.md @@ -10,8 +10,13 @@ based on merged pull requests. Search GitHub issues and pull requests for smalle - Add vehicleRentalGeofencing sandbox loading GBFS geofencing zones during the graph build [#7887](https://github.com/opentripplanner/OpenTripPlanner/pull/7887) - Add snowAndIce to the Transmodel TransportMode enum [#7980](https://github.com/opentripplanner/OpenTripPlanner/pull/7980) - Limit growth of NeTEx stop time index [#7963](https://github.com/opentripplanner/OpenTripPlanner/pull/7963) -- Remove .idea files from version control [#7992](https://github.com/opentripplanner/OpenTripPlanner/pull/7992) - Deprecate serviceId in GTFS API and stop populating it [#7991](https://github.com/opentripplanner/OpenTripPlanner/pull/7991) +- Decode OSM PBF data in parallel [#8008](https://github.com/opentripplanner/OpenTripPlanner/pull/8008) +- Verify who labeled the PRs merged by the custom release script [#8018](https://github.com/opentripplanner/OpenTripPlanner/pull/8018) +- Use custom collections to speed up island pruning [#7990](https://github.com/opentripplanner/OpenTripPlanner/pull/7990) +- Treat negative `stair_count` as stairs in `PathwayEdge` [#8027](https://github.com/opentripplanner/OpenTripPlanner/pull/8027) +- Update NeTEx Java Model to v2.0.16 [#7257](https://github.com/opentripplanner/OpenTripPlanner/pull/7257) +- Avoid counting edges when logging the graph load status [#8037](https://github.com/opentripplanner/OpenTripPlanner/pull/8037) [](AUTOMATIC_CHANGELOG_PLACEHOLDER_DO_NOT_REMOVE) ## 2.10.0 (2026-09-09) diff --git a/gtfs-realtime-protobuf/pom.xml b/gtfs-realtime-protobuf/pom.xml index e9042c38b79..85ff9da1579 100644 --- a/gtfs-realtime-protobuf/pom.xml +++ b/gtfs-realtime-protobuf/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT gtfs-realtime-protobuf @@ -13,6 +13,7 @@ + com.google.protobuf protobuf-java diff --git a/otp-shaded/pom.xml b/otp-shaded/pom.xml index 85acf4d8058..fadff337cb2 100644 --- a/otp-shaded/pom.xml +++ b/otp-shaded/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT otp-shaded diff --git a/pom.xml b/pom.xml index d9dc73b502b..7fe34bd1dfb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT pom @@ -58,7 +58,7 @@ - 278 + 280 34.5 @@ -66,13 +66,13 @@ 2.22.2 4.0.9 3.1.12 - 6.1.2 + 6.1.3 1.14.1 5.6.0 1.6.3 10.5.0 1.17.1 - 2.0.15.4 + 2.0.16.1 5.6.0 4.36.1 2.0.6 @@ -100,15 +100,15 @@ - utils - domain-core - raptor + application astar + core gtfs-realtime-protobuf - application otp-shaded - test/integration + raptor street + test/integration + transit @@ -522,6 +522,8 @@ jib-maven-plugin 3.5.2 + + true org.opentripplanner.standalone.OTPMain /docker-entrypoint.sh @@ -622,6 +624,28 @@ 33.7.1-jre + + + com.azure + azure-core-http-netty + 1.16.6 + + + + + org.jspecify + jspecify + 1.0.1 + + org.slf4j @@ -704,7 +728,7 @@ com.tngtech.archunit archunit - 1.4.2 + 1.5.0 org.mockito diff --git a/raptor/data/pom.xml b/raptor/data/pom.xml new file mode 100644 index 00000000000..dfb526b814a --- /dev/null +++ b/raptor/data/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + + org.opentripplanner.raptor + raptor + 2.11.0-SNAPSHOT + + + data + OpenTripPlanner - Raptor Data + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + + + + + ${project.groupId} + router + ${project.version} + + + + + net.sf.trove4j + trove4j + + + org.slf4j + slf4j-api + + + + + com.google.truth + truth + test + + + org.junit.jupiter + junit-jupiter-api + test + + + diff --git a/raptor/pom.xml b/raptor/pom.xml index a08de319d08..d7e161ecd3c 100644 --- a/raptor/pom.xml +++ b/raptor/pom.xml @@ -5,64 +5,17 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT + org.opentripplanner.raptor raptor OpenTripPlanner - Raptor + pom - - - - com.diffplug.spotless - spotless-maven-plugin - - - - - - - - - ${project.groupId} - utils - ${project.version} - - - - - - - com.google.code.findbugs - jsr305 - - - net.sf.trove4j - trove4j - - - - org.slf4j - slf4j-api - - - - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-params - test - - - com.tngtech.archunit - archunit - test - - + + router + data + diff --git a/raptor/router/pom.xml b/raptor/router/pom.xml new file mode 100644 index 00000000000..e95168a9b42 --- /dev/null +++ b/raptor/router/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + org.opentripplanner.raptor + raptor + 2.11.0-SNAPSHOT + + + router + OpenTripPlanner - Raptor Router + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + + + + + org.opentripplanner.core + utils + ${project.version} + + + + + + com.google.code.findbugs + jsr305 + + + net.sf.trove4j + trove4j + + + + org.slf4j + slf4j-api + + + + + com.tngtech.archunit + archunit + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params + test + + + diff --git a/raptor/src/main/java/org/opentripplanner/raptor/RaptorService.java b/raptor/router/src/main/java/org/opentripplanner/raptor/RaptorService.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/RaptorService.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/RaptorService.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/RaptorTimeLine.svg b/raptor/router/src/main/java/org/opentripplanner/raptor/RaptorTimeLine.svg similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/RaptorTimeLine.svg rename to raptor/router/src/main/java/org/opentripplanner/raptor/RaptorTimeLine.svg diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugEvent.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugEvent.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugEvent.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugEvent.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugLogger.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugLogger.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugLogger.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugLogger.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugTopic.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugTopic.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/debug/DebugTopic.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/DebugTopic.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/debug/RaptorTimers.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/RaptorTimers.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/debug/RaptorTimers.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/debug/RaptorTimers.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecorator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecorator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecorator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecorator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/DominanceFunction.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/DominanceFunction.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/DominanceFunction.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/DominanceFunction.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunction.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunction.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunction.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunction.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorAccessEgress.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorAccessEgress.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorAccessEgress.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorAccessEgress.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorStartOnBoardAccess.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorStartOnBoardAccess.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorStartOnBoardAccess.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorStartOnBoardAccess.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPosition.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPosition.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPosition.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPosition.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValue.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValue.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValue.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValue.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueFormatter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueFormatter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueFormatter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueFormatter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueType.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueType.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueType.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RaptorValueType.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/model/RelaxFunction.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RelaxFunction.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/model/RelaxFunction.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/model/RelaxFunction.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/AccessPathLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/AccessPathLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/AccessPathLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/AccessPathLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/EgressPathLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/EgressPathLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/EgressPathLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/EgressPathLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/PathLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/PathLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/PathLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/PathLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/PathStringBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/PathStringBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/PathStringBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/PathStringBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/TransferPathLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/TransferPathLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/TransferPathLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/TransferPathLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/path/TransitPathLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/path/TransitPathLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/path/TransitPathLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/path/TransitPathLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/DebugRequest.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DebugRequest.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/DebugRequest.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DebugRequest.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/DebugRequestBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DebugRequestBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/DebugRequestBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DebugRequestBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/DynamicSearchWindowCoefficients.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DynamicSearchWindowCoefficients.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/DynamicSearchWindowCoefficients.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/DynamicSearchWindowCoefficients.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequest.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequest.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequest.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequest.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/Optimization.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/Optimization.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/Optimization.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/Optimization.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorProfile.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorProfile.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorProfile.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorProfile.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequestBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequestBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequestBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequestBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorTransitGroupPriorityCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorTransitGroupPriorityCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorTransitGroupPriorityCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorTransitGroupPriorityCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/SearchParams.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/SearchParams.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/SearchParams.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/SearchParams.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/SearchParamsBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/SearchParamsBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/SearchParamsBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/SearchParamsBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/AbstractViaLocationBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/AbstractViaLocationBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/AbstractViaLocationBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/AbstractViaLocationBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/PassThroughLocationBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/PassThroughLocationBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/PassThroughLocationBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/PassThroughLocationBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnection.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnection.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnection.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnection.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnection.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnection.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnection.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnection.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocation.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocation.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocation.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocation.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnection.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnection.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnection.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnection.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/ViaConnection.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/ViaConnection.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/ViaConnection.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/ViaConnection.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/request/via/ViaVisitLocationBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/ViaVisitLocationBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/request/via/ViaVisitLocationBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/request/via/ViaVisitLocationBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/response/RaptorResponse.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/response/RaptorResponse.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/response/RaptorResponse.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/response/RaptorResponse.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/response/StopArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/response/StopArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/response/StopArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/response/StopArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/AccessPathView.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/AccessPathView.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/AccessPathView.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/AccessPathView.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/EgressPathView.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/EgressPathView.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/EgressPathView.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/EgressPathView.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/PathLegType.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/PathLegType.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/PathLegType.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/PathLegType.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/PatternRideView.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/PatternRideView.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/PatternRideView.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/PatternRideView.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/TransitArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/TransitArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/TransitArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/TransitArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/api/view/TransitPathView.java b/raptor/router/src/main/java/org/opentripplanner/raptor/api/view/TransitPathView.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/api/view/TransitPathView.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/api/view/TransitPathView.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java b/raptor/router/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequest.java b/raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequest.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequest.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequest.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequestBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequestBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequestBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/api/RaptorDirectTransitRequestBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/configure/DirectTransitSearchFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/configure/DirectTransitSearchFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/configure/DirectTransitSearchFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/configure/DirectTransitSearchFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/extensions/extrasearch/ExtraMcRouterSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/extensions/extrasearch/ExtraMcRouterSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/extensions/extrasearch/ExtraMcRouterSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/extensions/extrasearch/ExtraMcRouterSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/package.md b/raptor/router/src/main/java/org/opentripplanner/raptor/package.md similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/package.md rename to raptor/router/src/main/java/org/opentripplanner/raptor/package.md diff --git a/raptor/src/main/java/org/opentripplanner/raptor/path/Path.java b/raptor/router/src/main/java/org/opentripplanner/raptor/path/Path.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/path/Path.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/path/Path.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/path/PathBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/path/PathBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/path/PathBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/path/PathBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/path/PathBuilderLeg.java b/raptor/router/src/main/java/org/opentripplanner/raptor/path/PathBuilderLeg.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/path/PathBuilderLeg.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/path/PathBuilderLeg.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/CompositeResult.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/CompositeResult.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/CompositeResult.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/CompositeResult.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/ConcurrentCompositeRaptorRouter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/ConcurrentCompositeRaptorRouter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/ConcurrentCompositeRaptorRouter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/ConcurrentCompositeRaptorRouter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/DefaultRangeRaptorWorker.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/DefaultRangeRaptorWorker.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/DefaultRangeRaptorWorker.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/DefaultRangeRaptorWorker.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptorWorkerComposite.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptorWorkerComposite.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptorWorkerComposite.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptorWorkerComposite.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/SystemErrDebugLogger.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/SystemErrDebugLogger.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/SystemErrDebugLogger.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/SystemErrDebugLogger.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContext.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContext.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContext.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContext.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextBuilder.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextBuilder.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextBuilder.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextBuilder.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextViaSegments.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextViaSegments.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextViaSegments.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextViaSegments.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/AbstractDebugHandlerAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/AbstractDebugHandlerAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/AbstractDebugHandlerAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/AbstractDebugHandlerAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPathAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPathAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPathAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPathAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPatternRideAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPatternRideAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPatternRideAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerPatternRideAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerStopArrivalAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerStopArrivalAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerStopArrivalAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/DebugHandlerStopArrivalAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/ParetoSetDebugHandlerAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/ParetoSetDebugHandlerAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/ParetoSetDebugHandlerAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/debug/ParetoSetDebugHandlerAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/DebugHandler.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/DebugHandler.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/DebugHandler.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/DebugHandler.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/HeuristicAtStop.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/HeuristicAtStop.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/HeuristicAtStop.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/HeuristicAtStop.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/Heuristics.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/Heuristics.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/Heuristics.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/Heuristics.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/OnTripAccessArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetCost.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetCost.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetCost.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetCost.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetTime.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetTime.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetTime.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/ParetoSetTime.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RangeRaptorWorker.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RangeRaptorWorker.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RangeRaptorWorker.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RangeRaptorWorker.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouterResult.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouterResult.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouterResult.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorRouterResult.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorWorkerState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorWorkerState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorWorkerState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RaptorWorkerState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RoutingStrategy.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RoutingStrategy.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RoutingStrategy.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/RoutingStrategy.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SingleCriteriaStopArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SingleCriteriaStopArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SingleCriteriaStopArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SingleCriteriaStopArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SlackProvider.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SlackProvider.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SlackProvider.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/SlackProvider.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/WorkerLifeCycle.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/WorkerLifeCycle.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/WorkerLifeCycle.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/internalapi/WorkerLifeCycle.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleEventPublisher.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleEventPublisher.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleEventPublisher.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleEventPublisher.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleSubscriptions.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleSubscriptions.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleSubscriptions.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/lifecycle/LifeCycleSubscriptions.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRangeRaptorWorkerState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRangeRaptorWorkerState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRangeRaptorWorkerState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRangeRaptorWorkerState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRaptorRouterResult.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRaptorRouterResult.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRaptorRouterResult.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/McRaptorRouterResult.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/MultiCriteriaRoutingStrategy.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/MultiCriteriaRoutingStrategy.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/MultiCriteriaRoutingStrategy.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/MultiCriteriaRoutingStrategy.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ViaConnectionStopArrivalEventListener.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ViaConnectionStopArrivalEventListener.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ViaConnectionStopArrivalEventListener.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ViaConnectionStopArrivalEventListener.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/CalculateTransferToDestination.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/CalculateTransferToDestination.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/CalculateTransferToDestination.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/CalculateTransferToDestination.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/DebugStopArrivalsStatistics.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/DebugStopArrivalsStatistics.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/DebugStopArrivalsStatistics.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/DebugStopArrivalsStatistics.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McArrivalsEventListenerFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McArrivalsEventListenerFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McArrivalsEventListenerFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McArrivalsEventListenerFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McStopArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McStopArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McStopArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/McStopArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolver.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolver.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolver.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolver.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AbstractStopArrivalC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AbstractStopArrivalC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AbstractStopArrivalC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AbstractStopArrivalC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrivalFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrivalFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrivalFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/McStopArrivalFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/configure/McRangeRaptorConfig.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/configure/McRangeRaptorConfig.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/configure/McRangeRaptorConfig.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/configure/McRangeRaptorConfig.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/heuristic/HeuristicsProvider.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/heuristic/HeuristicsProvider.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/heuristic/HeuristicsProvider.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/heuristic/HeuristicsProvider.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/AbstractPatternRide.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/AbstractPatternRide.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/AbstractPatternRide.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/AbstractPatternRide.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/TransitGroupPriorityRideFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/TransitGroupPriorityRideFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/TransitGroupPriorityRideFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/TransitGroupPriorityRideFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/BoardAndAlightTimeSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/BoardAndAlightTimeSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/BoardAndAlightTimeSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/BoardAndAlightTimeSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrival.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrival.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrival.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrival.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalPaths.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalPaths.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalPaths.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalPaths.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ForwardPathMapper.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ForwardPathMapper.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ForwardPathMapper.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ForwardPathMapper.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathMapper.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathMapper.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathMapper.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathMapper.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparators.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparators.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparators.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparators.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ReversePathMapper.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ReversePathMapper.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ReversePathMapper.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/ReversePathMapper.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/configure/PathConfig.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/configure/PathConfig.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/path/configure/PathConfig.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/path/configure/PathConfig.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/ArrivalTimeRoutingStrategy.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/ArrivalTimeRoutingStrategy.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/ArrivalTimeRoutingStrategy.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/ArrivalTimeRoutingStrategy.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/MinTravelDurationRoutingStrategy.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/MinTravelDurationRoutingStrategy.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/MinTravelDurationRoutingStrategy.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/MinTravelDurationRoutingStrategy.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRangeRaptorWorkerState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRangeRaptorWorkerState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRangeRaptorWorkerState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRangeRaptorWorkerState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRaptorRouterResult.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRaptorRouterResult.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRaptorRouterResult.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdRaptorRouterResult.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruning.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruning.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruning.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruning.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdWorkerState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdWorkerState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdWorkerState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/StdWorkerState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimes.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimes.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimes.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimes.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimesOnlyStopArrivalsState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimesOnlyStopArrivalsState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimesOnlyStopArrivalsState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/BestTimesOnlyStopArrivalsState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheck.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheck.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheck.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheck.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleBestNumberOfTransfers.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleBestNumberOfTransfers.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleBestNumberOfTransfers.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleBestNumberOfTransfers.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPath.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPath.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPath.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPath.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathFactory.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathFactory.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathFactory.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathFactory.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/StdRangeRaptorConfig.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/StdRangeRaptorConfig.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/StdRangeRaptorConfig.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/StdRangeRaptorConfig.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/VerifyRequestIsValid.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/VerifyRequestIsValid.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/VerifyRequestIsValid.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/configure/VerifyRequestIsValid.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/DebugStopArrivalsState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/DebugStopArrivalsState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/DebugStopArrivalsState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/DebugStopArrivalsState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/StateDebugger.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/StateDebugger.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/StateDebugger.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/debug/StateDebugger.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/heuristics/HeuristicsAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/heuristics/HeuristicsAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/heuristics/HeuristicsAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/heuristics/HeuristicsAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/ArrivedAtDestinationCheck.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/ArrivedAtDestinationCheck.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/ArrivedAtDestinationCheck.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/ArrivedAtDestinationCheck.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/BestNumberOfTransfers.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/BestNumberOfTransfers.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/BestNumberOfTransfers.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/BestNumberOfTransfers.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/DestinationArrivalListener.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/DestinationArrivalListener.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/DestinationArrivalListener.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/DestinationArrivalListener.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/StopArrivalsState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/StopArrivalsState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/StopArrivalsState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/internalapi/StopArrivalsState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/AccessStopArrivalState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/AccessStopArrivalState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/AccessStopArrivalState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/AccessStopArrivalState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/DefaultStopArrivalState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/DefaultStopArrivalState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/DefaultStopArrivalState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/DefaultStopArrivalState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/EgressStopArrivalState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/EgressStopArrivalState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/EgressStopArrivalState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/EgressStopArrivalState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivalsState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivalsState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivalsState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StdStopArrivalsState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StopArrivalState.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StopArrivalState.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StopArrivalState.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/StopArrivalState.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/path/EgressArrivalToPathAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/path/EgressArrivalToPathAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/path/EgressArrivalToPathAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/path/EgressArrivalToPathAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Access.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Access.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Access.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Access.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopArrivalViewAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopArrivalViewAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopArrivalViewAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopArrivalViewAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopsCursor.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopsCursor.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopsCursor.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/StopsCursor.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transfer.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transfer.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transfer.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transfer.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transit.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transit.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transit.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/standard/stoparrivals/view/Transit.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/RouterResultPathAggregator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/RouterResultPathAggregator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/RouterResultPathAggregator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/RouterResultPathAggregator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctions.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctions.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctions.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctions.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPaths.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPaths.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPaths.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPaths.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenalty.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenalty.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenalty.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenalty.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPaths.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPaths.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPaths.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPaths.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenalty.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenalty.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenalty.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenalty.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorTransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorTransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorTransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorTransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTracker.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTracker.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTracker.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTracker.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TimeCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TimeCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TimeCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TimeCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TransitCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TransitCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TransitCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TransitCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ViaConnections.java b/raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ViaConnections.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ViaConnections.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/rangeraptor/transit/ViaConnections.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/DebugHeuristics.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/DebugHeuristics.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/DebugHeuristics.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/DebugHeuristics.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/DefaultStopArrivals.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/DefaultStopArrivals.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/DefaultStopArrivals.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/DefaultStopArrivals.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/DestinationNotReachedException.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/DestinationNotReachedException.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/DestinationNotReachedException.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/DestinationNotReachedException.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/HeuristicSearchTask.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/HeuristicSearchTask.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/HeuristicSearchTask.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/HeuristicSearchTask.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/HeuristicToRunResolver.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/HeuristicToRunResolver.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/HeuristicToRunResolver.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/HeuristicToRunResolver.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/BitSetIterator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/BitSetIterator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/BitSetIterator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/BitSetIterator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEvent.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEvent.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEvent.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEvent.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/Flyweight.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/Flyweight.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/Flyweight.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/Flyweight.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/IntIterator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/IntIterator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/IntIterator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/IntIterator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/IntIterators.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/IntIterators.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/IntIterators.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/IntIterators.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorBoardOrAlightEvent.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorBoardOrAlightEvent.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorBoardOrAlightEvent.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorBoardOrAlightEvent.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstants.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstants.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstants.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstants.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedBoardingSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedBoardingSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedBoardingSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedBoardingSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedTransfer.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedTransfer.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedTransfer.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorConstrainedTransfer.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorCostCalculator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorCostCalculator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorCostCalculator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorCostCalculator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorCostConverter.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorCostConverter.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorCostConverter.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorCostConverter.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorPathConstrainedTransferSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorPathConstrainedTransferSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorPathConstrainedTransferSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorPathConstrainedTransferSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorRoute.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorRoute.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorRoute.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorRoute.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorSlackProvider.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorSlackProvider.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorSlackProvider.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorSlackProvider.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorStopNameResolver.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorStopNameResolver.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorStopNameResolver.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorStopNameResolver.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTimeTable.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTimeTable.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTimeTable.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTimeTable.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransfer.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransfer.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransfer.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransfer.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransferConstraint.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransferConstraint.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransferConstraint.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransferConstraint.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransitDataProvider.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransitDataProvider.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTransitDataProvider.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTransitDataProvider.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripPattern.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripPattern.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripPattern.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripPattern.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripSchedule.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripSchedule.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripSchedule.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripSchedule.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReference.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReference.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReference.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReference.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleSearch.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleSearch.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleSearch.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/RaptorTripScheduleSearch.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/spi/SearchDirection.java b/raptor/router/src/main/java/org/opentripplanner/raptor/spi/SearchDirection.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/spi/SearchDirection.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/spi/SearchDirection.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/CompareIntArrays.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/CompareIntArrays.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/CompareIntArrays.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/CompareIntArrays.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/composite/CompositeUtil.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/composite/CompositeUtil.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/composite/CompositeUtil.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/composite/CompositeUtil.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoComparator.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoComparator.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoComparator.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoComparator.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoDominance.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoDominance.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoDominance.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoDominance.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSet.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSet.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSet.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSet.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListener.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListener.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListener.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListener.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerComposite.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerComposite.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerComposite.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerComposite.java diff --git a/raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithListener.java b/raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithListener.java similarity index 100% rename from raptor/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithListener.java rename to raptor/router/src/main/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithListener.java diff --git a/raptor/src/test-fixtures/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParser.java b/raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParser.java similarity index 100% rename from raptor/src/test-fixtures/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParser.java rename to raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParser.java diff --git a/raptor/src/test-fixtures/java/org/opentripplanner/raptor/api/request/TestGroupPriorityCalculator.java b/raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/api/request/TestGroupPriorityCalculator.java similarity index 100% rename from raptor/src/test-fixtures/java/org/opentripplanner/raptor/api/request/TestGroupPriorityCalculator.java rename to raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/api/request/TestGroupPriorityCalculator.java diff --git a/raptor/src/test-fixtures/java/org/opentripplanner/raptor/configure/RaptorTestFactory.java b/raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/configure/RaptorTestFactory.java similarity index 100% rename from raptor/src/test-fixtures/java/org/opentripplanner/raptor/configure/RaptorTestFactory.java rename to raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/configure/RaptorTestFactory.java diff --git a/raptor/src/test-fixtures/java/org/opentripplanner/raptor/spi/TestSlackProvider.java b/raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/spi/TestSlackProvider.java similarity index 100% rename from raptor/src/test-fixtures/java/org/opentripplanner/raptor/spi/TestSlackProvider.java rename to raptor/router/src/test-fixtures/java/org/opentripplanner/raptor/spi/TestSlackProvider.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/RaptorArchitectureTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/RaptorArchitectureTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/RaptorArchitectureTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/RaptorArchitectureTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/RaptorTestConstants.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/RaptorTestConstants.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/RaptorTestConstants.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/RaptorTestConstants.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/api/PathUtils.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/PathUtils.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/api/PathUtils.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/PathUtils.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilder.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilder.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilder.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilder.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilderTestRaptor.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilderTestRaptor.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilderTestRaptor.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestPathBuilderTestRaptor.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestRaptorPath.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestRaptorPath.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/api/TestRaptorPath.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/api/TestRaptorPath.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AbstractStopArrival.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AbstractStopArrival.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AbstractStopArrival.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AbstractStopArrival.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Access.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Access.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Access.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Access.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AccessAndEgressWithOpeningHoursPathTestCase.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AccessAndEgressWithOpeningHoursPathTestCase.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AccessAndEgressWithOpeningHoursPathTestCase.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/AccessAndEgressWithOpeningHoursPathTestCase.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/BasicPathTestCase.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/BasicPathTestCase.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/BasicPathTestCase.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/BasicPathTestCase.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Egress.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Egress.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Egress.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Egress.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/TestArrivals.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/TestArrivals.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/TestArrivals.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/TestArrivals.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transfer.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transfer.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transfer.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transfer.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transit.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transit.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transit.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/stoparrival/Transit.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/BoardAlightRestrictions.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/BoardAlightRestrictions.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/BoardAlightRestrictions.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/BoardAlightRestrictions.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestAccessEgress.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestAccessEgress.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestAccessEgress.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestAccessEgress.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedBoardingSearch.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedBoardingSearch.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedBoardingSearch.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedBoardingSearch.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedTransfer.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedTransfer.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedTransfer.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestConstrainedTransfer.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestCostCalculator.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestCostCalculator.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestCostCalculator.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestCostCalculator.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestRaptorStartOnBoardAccess.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestRaptorStartOnBoardAccess.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestRaptorStartOnBoardAccess.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestRaptorStartOnBoardAccess.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestRoute.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestRoute.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestRoute.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestRoute.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransfer.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransfer.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransfer.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransfer.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransferConstraint.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransferConstraint.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransferConstraint.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransferConstraint.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransitData.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransitData.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransitData.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTransitData.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripPattern.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripPattern.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripPattern.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripPattern.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripSchedule.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripSchedule.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripSchedule.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripSchedule.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearch.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearch.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearch.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearch.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_data/transit/TestTripScheduleTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_support/arch/ArchComponent.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/ArchComponent.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_support/arch/ArchComponent.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/ArchComponent.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_support/arch/Module.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/Module.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_support/arch/Module.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/Module.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/_support/arch/Package.java b/raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/Package.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/_support/arch/Package.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/_support/arch/Package.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecoratorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecoratorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecoratorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/AbstractAccessEgressDecoratorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunctionTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunctionTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunctionTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/GeneralizedCostRelaxFunctionTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParserTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParserTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParserTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorAccessEgressToStringParserTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPositionTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPositionTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPositionTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorTripScheduleStopPositionTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueFormatterTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueFormatterTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueFormatterTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueFormatterTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/model/RaptorValueTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/path/PathTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/path/PathTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/path/PathTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/path/PathTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/path/RaptorPathTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/path/RaptorPathTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/path/RaptorPathTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/path/RaptorPathTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequestTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequestTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequestTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/MultiCriteriaRequestTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/RaptorRequestTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/RaptorRequestTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/RaptorRequestTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/RaptorRequestTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/SearchParamsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/SearchParamsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/SearchParamsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/SearchParamsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnectionTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnectionTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnectionTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorPassThroughViaConnectionTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnectionTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnectionTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnectionTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorTransferViaConnectionTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocationTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocationTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocationTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorViaLocationTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnectionTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnectionTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnectionTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/request/via/RaptorVisitStopViaConnectionTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/api/view/BoardAndAlightTimeTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/api/view/BoardAndAlightTimeTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/api/view/BoardAndAlightTimeTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/api/view/BoardAndAlightTimeTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/extensions/direct/service/DirectTransitSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/A01_SingleRouteTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/A01_SingleRouteTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/A01_SingleRouteTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/A01_SingleRouteTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/A04_BoardingTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/A04_BoardingTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/A04_BoardingTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/A04_BoardingTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/B01_AccessTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B01_AccessTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/B01_AccessTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B01_AccessTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/B02_EgressTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B02_EgressTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/B02_EgressTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B02_EgressTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/B03_AccessEgressTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B03_AccessEgressTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/B03_AccessEgressTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B03_AccessEgressTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/B04_AccessEgressBoardingTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B04_AccessEgressBoardingTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/B04_AccessEgressBoardingTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B04_AccessEgressBoardingTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/B05_EgressStopBoardAlightTransferCostTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B05_EgressStopBoardAlightTransferCostTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/B05_EgressStopBoardAlightTransferCostTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/B05_EgressStopBoardAlightTransferCostTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/C01_TransferBoardAndAlightSlackTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C01_TransferBoardAndAlightSlackTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/C01_TransferBoardAndAlightSlackTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C01_TransferBoardAndAlightSlackTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/C02_OnStreetTransfersTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C02_OnStreetTransfersTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/C02_OnStreetTransfersTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C02_OnStreetTransfersTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/C03_OnBoardArrivalDominateTransfersTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C03_OnBoardArrivalDominateTransfersTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/C03_OnBoardArrivalDominateTransfersTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/C03_OnBoardArrivalDominateTransfersTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/D01_SingeRouteBoardAlightRestrictionsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/D01_SingeRouteBoardAlightRestrictionsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/D01_SingeRouteBoardAlightRestrictionsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/D01_SingeRouteBoardAlightRestrictionsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/D02_EarlyBoardingMatters.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/D02_EarlyBoardingMatters.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/D02_EarlyBoardingMatters.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/D02_EarlyBoardingMatters.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/E01_StaySeatedTransferTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E01_StaySeatedTransferTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/E01_StaySeatedTransferTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E01_StaySeatedTransferTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/E02_GuaranteedWalkTransferTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E02_GuaranteedWalkTransferTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/E02_GuaranteedWalkTransferTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E02_GuaranteedWalkTransferTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/E03_NotAllowedConstrainedTransferTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E03_NotAllowedConstrainedTransferTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/E03_NotAllowedConstrainedTransferTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/E03_NotAllowedConstrainedTransferTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F01_AccessWithRidesTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F01_AccessWithRidesTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F01_AccessWithRidesTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F01_AccessWithRidesTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F02_EgressWithRidesTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F02_EgressWithRidesTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F02_EgressWithRidesTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F02_EgressWithRidesTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F03_AccessEgressWithRidesBoardAndAlightSlackTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F03_AccessEgressWithRidesBoardAndAlightSlackTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F03_AccessEgressWithRidesBoardAndAlightSlackTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F03_AccessEgressWithRidesBoardAndAlightSlackTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F04_AccessEgressWithRidesNoTransitTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F04_AccessEgressWithRidesNoTransitTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F04_AccessEgressWithRidesNoTransitTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F04_AccessEgressWithRidesNoTransitTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F05_OnBoardAccessEgressAndTransfersTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F05_OnBoardAccessEgressAndTransfersTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F05_OnBoardAccessEgressAndTransfersTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F05_OnBoardAccessEgressAndTransfersTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F11_AccessWithRidesMultipleOptimalPathsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F11_AccessWithRidesMultipleOptimalPathsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F11_AccessWithRidesMultipleOptimalPathsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F11_AccessWithRidesMultipleOptimalPathsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/F12_EgressWithRidesMultipleOptimalPathsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F12_EgressWithRidesMultipleOptimalPathsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/F12_EgressWithRidesMultipleOptimalPathsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/F12_EgressWithRidesMultipleOptimalPathsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G01_AccessWithOpeningHoursTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G01_AccessWithOpeningHoursTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G01_AccessWithOpeningHoursTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G01_AccessWithOpeningHoursTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G02_EgressWithOpeningHoursTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G02_EgressWithOpeningHoursTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G02_EgressWithOpeningHoursTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G02_EgressWithOpeningHoursTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G03_AccessWithOpeningHoursMultipleOptionsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G03_AccessWithOpeningHoursMultipleOptionsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G03_AccessWithOpeningHoursMultipleOptionsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G03_AccessWithOpeningHoursMultipleOptionsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G04_EgressWithOpeningHoursMultipleOptionsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G04_EgressWithOpeningHoursMultipleOptionsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G04_EgressWithOpeningHoursMultipleOptionsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G04_EgressWithOpeningHoursMultipleOptionsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G05_ClosedAccessOpeningHoursTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G05_ClosedAccessOpeningHoursTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G05_ClosedAccessOpeningHoursTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G05_ClosedAccessOpeningHoursTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/G06_ClosedEgressOpeningHoursTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G06_ClosedEgressOpeningHoursTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/G06_ClosedEgressOpeningHoursTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/G06_ClosedEgressOpeningHoursTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/H11_GuaranteedTransferWithFlexAccessTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/H11_GuaranteedTransferWithFlexAccessTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/H11_GuaranteedTransferWithFlexAccessTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/H11_GuaranteedTransferWithFlexAccessTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/I01_HeuristicTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/I01_HeuristicTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/I01_HeuristicTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/I01_HeuristicTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/I02_C2DestinationPruningTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/I02_C2DestinationPruningTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/I02_C2DestinationPruningTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/I02_C2DestinationPruningTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J01_PassThroughTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J01_PassThroughTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J01_PassThroughTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J01_PassThroughTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J02_ViaStopSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J02_ViaStopSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J02_ViaStopSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J02_ViaStopSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J03_ViaTransferSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J03_ViaTransferSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J03_ViaTransferSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J03_ViaTransferSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J04_ViaVisitWithAccessTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J04_ViaVisitWithAccessTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J04_ViaVisitWithAccessTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J04_ViaVisitWithAccessTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J05_ViaVisitWithEgressTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J05_ViaVisitWithEgressTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J05_ViaVisitWithEgressTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J05_ViaVisitWithEgressTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J06_TransitAndTransferArrivalAtViaConnectionStopTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J06_TransitAndTransferArrivalAtViaConnectionStopTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J06_TransitAndTransferArrivalAtViaConnectionStopTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J06_TransitAndTransferArrivalAtViaConnectionStopTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J07_PassThroughWithTransfersTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J07_PassThroughWithTransfersTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J07_PassThroughWithTransfersTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J07_PassThroughWithTransfersTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/J08_PassThroughWithConstrainedTransferTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J08_PassThroughWithConstrainedTransferTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/J08_PassThroughWithConstrainedTransferTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/J08_PassThroughWithConstrainedTransferTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/K01_TransitPriorityTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/K01_TransitPriorityTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/K01_TransitPriorityTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/K01_TransitPriorityTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/K02_TransitPriorityDestinationTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/K02_TransitPriorityDestinationTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/K02_TransitPriorityDestinationTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/K02_TransitPriorityDestinationTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyAccessTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyAccessTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyAccessTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyAccessTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyEgressTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyEgressTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyEgressTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/L01_TimePenaltyEgressTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/M01_DirectTransitWithRoutesWithinRelaxC1Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M01_DirectTransitWithRoutesWithinRelaxC1Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/M01_DirectTransitWithRoutesWithinRelaxC1Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M01_DirectTransitWithRoutesWithinRelaxC1Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/M02_DirectTransitWithTripsInSearchWindowTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M02_DirectTransitWithTripsInSearchWindowTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/M02_DirectTransitWithTripsInSearchWindowTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M02_DirectTransitWithTripsInSearchWindowTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/M03_DirectTransitSearchWindowTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M03_DirectTransitSearchWindowTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/M03_DirectTransitSearchWindowTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M03_DirectTransitSearchWindowTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/M04_DirectTransitCostLimitTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M04_DirectTransitCostLimitTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/M04_DirectTransitCostLimitTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M04_DirectTransitCostLimitTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/M05_DirectTransitBoardAlightRestrictionsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M05_DirectTransitBoardAlightRestrictionsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/M05_DirectTransitBoardAlightRestrictionsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/M05_DirectTransitBoardAlightRestrictionsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/N01_OnBoardAccessTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/N01_OnBoardAccessTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/N01_OnBoardAccessTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/N01_OnBoardAccessTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/F11.svg b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/F11.svg similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/F11.svg rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/F11.svg diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/F12.svg b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/F12.svg similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/F12.svg rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/F12.svg diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/Samples.excalidraw b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/Samples.excalidraw similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/images/Samples.excalidraw rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/images/Samples.excalidraw diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/package-info.md b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/package-info.md similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/package-info.md rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/package-info.md diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/ExpectedList.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/ExpectedList.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/ExpectedList.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/ExpectedList.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/GroupPriorityCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/GroupPriorityCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/GroupPriorityCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/GroupPriorityCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCase.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCase.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCase.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCase.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCaseFactory.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCaseFactory.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCaseFactory.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestCaseFactory.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfig.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfig.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfig.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfig.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfigSetBuilder.java b/raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfigSetBuilder.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfigSetBuilder.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/moduletests/support/RaptorModuleTestConfigSetBuilder.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/package-info.md b/raptor/router/src/test/java/org/opentripplanner/raptor/package-info.md similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/package-info.md rename to raptor/router/src/test/java/org/opentripplanner/raptor/package-info.md diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/context/SearchContextTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopArrivalStateParetoSetTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopArrivalStateParetoSetTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopArrivalStateParetoSetTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopArrivalStateParetoSetTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolverTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolverTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolverTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/StopsWithArriveByTransitCriteriaResolverTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalC2Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/AccessStopArrivalTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactoryTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactoryTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactoryTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/ArrivalParetoSetComparatorFactoryTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC1Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/StopArrivalFactoryC2Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TestStopArivalFactory.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TestStopArivalFactory.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TestStopArivalFactory.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TestStopArivalFactory.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalC2Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransferStopArrivalTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalC2Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/arrivals/stop/TransitStopArrivalTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC1Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2Test.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2Test.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2Test.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/multicriteria/ride/PatternRideC2Test.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/DestinationArrivalTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathMapperTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathMapperTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathMapperTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathMapperTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparatorsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparatorsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparatorsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/path/PathParetoSetComparatorsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruningTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruningTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruningTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/StdTransferEarlyPruningTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheckTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheckTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheckTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/SimpleArrivedAtDestinationCheckTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/standard/besttimes/UnknownPathTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivalsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivalsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivalsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/support/IntArraySingleCriteriaArrivalsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctionsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctionsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctionsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessEgressFunctionsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPathsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPathsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPathsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessPathsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenaltyTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenaltyTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenaltyTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/AccessWithPenaltyTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPathsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPathsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPathsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressPathsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenaltyTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenaltyTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenaltyTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/EgressWithPenaltyTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardRaptorTransitCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTimeCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ForwardTransitCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RaptorSearchWindowCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseRaptorTransitCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTimeCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/ReverseTransitCalculatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTrackerTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTrackerTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTrackerTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/RoundTrackerTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapterTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapterTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapterTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/SlackProviderAdapterTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripScheduleExactMatchSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearchTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearchTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearchTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/rangeraptor/transit/TripTimesSearchTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/service/HeuristicToRunResolverTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/service/HeuristicToRunResolverTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/service/HeuristicToRunResolverTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/service/HeuristicToRunResolverTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/BitSetIteratorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/BitSetIteratorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/BitSetIteratorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/BitSetIteratorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEventTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEventTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEventTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/EmptyBoardOrAlightEventTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/IntIteratorsTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/IntIteratorsTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/IntIteratorsTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/IntIteratorsTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorCostConverterTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorCostConverterTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorCostConverterTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorCostConverterTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorSlackProviderTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorSlackProviderTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorSlackProviderTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorSlackProviderTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripPatternTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripPatternTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripPatternTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripPatternTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReferenceTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReferenceTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReferenceTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleReferenceTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/spi/RaptorTripScheduleTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/PathStringBuilderTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/PathStringBuilderTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/PathStringBuilderTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/PathStringBuilderTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/composite/CompositeUtilTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/composite/CompositeUtilTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/composite/CompositeUtilTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/composite/CompositeUtilTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoComparatorTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoComparatorTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoComparatorTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoComparatorTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoDominanceTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoDominanceTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoDominanceTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoDominanceTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerCompositeTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerCompositeTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerCompositeTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerCompositeTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetEventListenerTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithMarkerTest.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithMarkerTest.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithMarkerTest.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/ParetoSetWithMarkerTest.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/TestParetoSetEventListener.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/TestParetoSetEventListener.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/TestParetoSetEventListener.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/TestParetoSetEventListener.java diff --git a/raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/TestVector.java b/raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/TestVector.java similarity index 100% rename from raptor/src/test/java/org/opentripplanner/raptor/util/paretoset/TestVector.java rename to raptor/router/src/test/java/org/opentripplanner/raptor/util/paretoset/TestVector.java diff --git a/renovate.json5 b/renovate.json5 index b8457d9ac53..c4c9434ff53 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -39,7 +39,7 @@ "matchFiles": ["client/package.json"], "matchUpdateTypes": ["patch", "minor"], "groupName": "Debug UI dependencies (non-major)", - "schedule": ["after 6pm on the 17th day of the month"], + "schedule": ["after 3pm on the 17th day of the month"], "minimumReleaseAge": "4 days", "reviewers": ["testower"], "postUpdateOptions": ["npmInstallTwice"] diff --git a/script/CUSTOM_RELEASE_README.md b/script/CUSTOM_RELEASE_README.md index 5e3efe611cf..3a41a995eb1 100644 --- a/script/CUSTOM_RELEASE_README.md +++ b/script/CUSTOM_RELEASE_README.md @@ -123,6 +123,7 @@ Add the `script/custom-release-env.json` file to your branch. The content of the "release_branch": "", "ser_ver_id_prefix": "", "include_prs_label": " Test", + "include_prs_labelers": [ "", "" ], "ext_branches" : [ ""], "otp_production_url" : "" } @@ -135,6 +136,7 @@ If you organization is _Curium_, then the file would look like this: "release_branch": "main", "ser_ver_id_prefix": "CU", "include_prs_label": "Curium Test", + "include_prs_labelers": [ "alice", "bob" ], "ext_branches" : [ "main_config"], "otp_production_url" : "https://otp.curium.org/otp" } @@ -146,6 +148,10 @@ Git clone. Use `git remote -v` to list all remote repos. The `otp_production_url` is optional. If provided, the release script will include a changelog diff in the release summary between the production and built version. +The `include_prs_labelers` is optional, but recommended. It lists the GitHub logins of the users +who are allowed to label PRs for your releases, see [Pending Pull Requests](#pending-pull-requests). +If it is omitted or empty, the script does not verify who set the label. + ``` # git remote -v curium https://github.com/curium/OpenTripPlanner.git (fetch) @@ -212,6 +218,20 @@ and merged in the upstream repo. We combine this with config, and sometimes the to turn _on_ new features in over test environment. When the new feature is tested ok, we can enable it by changing the config. +#### Who may label PRs for a release + +Anyone with triage access to the upstream repository can put a label on a PR, and a labeled PR is +merged, built and released without further review. To protect your release, list the GitHub logins +of the users you trust to label PRs in the `include_prs_labelers` config. For each PR the script +looks at who set the label _last_ - the label can be removed and set again - and stops the release +if that user is not in the list. The check runs before anything is merged. To resolve it, remove the +label from the PR or add the user to the list. The login of the labeler is also printed in the +release summary. + +The head commit of each PR is read together with the label. When the PR is fetched a moment later, +the script verifies that the head has not moved; if it has, the release stops and can be started +over. + ## How To Make The First Release diff --git a/script/custom-release.py b/script/custom-release.py index 854f1079168..7ede8aa0567 100755 --- a/script/custom-release.py +++ b/script/custom-release.py @@ -35,6 +35,7 @@ def __init__(self): self.release_branch = None self.ext_branches = None self.include_prs_label = None + self.include_prs_labelers = [] self.ser_ver_id_prefix = None self.otp_production_url = None @@ -51,7 +52,8 @@ def __str__(self): f"release_branch: '{self.release_branch}', " f"ext_branches: {self.ext_branches}, " f"include_prs_label: '{self.include_prs_label}', " - f"ser_ver_id_prefix: '{self.ser_ver_id_prefix}'" + f"include_prs_labelers: {self.include_prs_labelers}, " + f"ser_ver_id_prefix: '{self.ser_ver_id_prefix}', " f"otp_production_url: '{self.otp_production_url}'>") @@ -95,6 +97,8 @@ def __init__(self): self.title = None self.commit_hash = None self.labels = [] + # GitHub login of the user who set the 'include_prs_label' last + self.labeled_by = None def description(self): return f'{self.title} #{self.number}' @@ -103,7 +107,9 @@ def description_w_labels(self): return f'{self.description()} {self.labels}' def description_link(self): - return f"{self.title} [#{self.number}]({OTP_GITHUB_PULLREQUEST_URL}{self.number}) {self.labels}" + labeled_by = f' - labeled by {self.labeled_by}' if self.labeled_by else '' + return (f"{self.title} [#{self.number}]({OTP_GITHUB_PULLREQUEST_URL}{self.number}) " + f"{self.labels}{labeled_by}") def is_label_bump_ser_id_set(self): return LBL_BUMP_SER_VER_ID in self.labels @@ -218,7 +224,8 @@ def setup_and_verify(): resolve_version_number() resolve_next_version() resolve_latest_ser_ver_id() - read_pull_request_info_from_github() + read_pull_request_info() + verify_pr_labelers() check_if_prs_exist_in_latest_release() resolve_next_ser_ver_id() resolve_production_versions() @@ -243,10 +250,20 @@ def merge_in_labeled_prs(): temp_branch = f'pull-request-{pr.number}' if section_w_resume(temp_branch, f'Merge in PR {pr.description()}'): git('fetch', config.upstream_remote, f'pull/{pr.number}/head:{temp_branch}') + verify_pr_head_not_moved(pr, temp_branch) git('merge', temp_branch) git('branch', '-D', temp_branch) +# The PR head is fetched some time after it was read from GitHub, so make sure the code merged into +# the release is the code that was listed and verified. +def verify_pr_head_not_moved(pr, temp_branch): + fetched_hash = git_commit_hash(temp_branch) + if fetched_hash != pr.commit_hash: + error(f'The head of PR #{pr.number} has moved since it was read: expected {pr.commit_hash}, ' + f'but fetched {fetched_hash}. Start over to release the new head.') + + def merge_in_ext_branches(): if len(config.ext_branches) == 0: info('\nNo config branch configured, mering is skipped.') @@ -436,6 +453,7 @@ def load_config(): config.release_branch = doc['release_branch'] config.ext_branches = doc['ext_branches'] config.include_prs_label = doc['include_prs_label'] + config.include_prs_labelers = doc.get('include_prs_labelers', []) config.ser_ver_id_prefix = doc['ser_ver_id_prefix'] config.otp_production_url = doc['otp_production_url'] debug(f'Config loaded: {config}') @@ -443,6 +461,10 @@ def load_config(): if len(config.ser_ver_id_prefix) > 2: error(f"Configure the 'ser_ver_id_prefix'. The prefix must be maximum two characters long. " f"Value: <{config.ser_ver_id_prefix}>") + labelers = config.include_prs_labelers + if not isinstance(labelers, list) or not all(isinstance(it, str) and it for it in labelers): + error(f"Configure the 'include_prs_labelers'. It must be a list of GitHub logins. " + f"Value: <{labelers}>") def verify_script_run_from_root(): @@ -512,25 +534,39 @@ def resolve_latest_ser_ver_id(): state.latest_ser_ver_id = maxSId -def read_pull_request_info_from_github(): +def read_pull_request_info(): if options.skip_prs or (not config.include_prs_label): info('Skip merging in GitHub PRs.') - return - info('Get PRs to include and their labels from GitHub - This requires authentication ...') + else: + read_pull_request_info_from_github() +# Read the open upstream PRs labeled with the 'include_prs_label'. Together with the PR, the labeling +# events on it are read so that the login of the person who set the label can be verified, see +# 'verify_pr_labelers'. All labeling events are fetched, the filtering on label name is done here. +def read_pull_request_info_from_github(): + info('Get PRs to include and their labels from GitHub - This requires authentication ...') + query_text = ''' query ReadOpenPullRequests { repository(owner:\\"opentripplanner\\", name:\\"OpenTripPlanner\\") { pullRequests(first: 100, states: OPEN, labels: \\"''' + config.include_prs_label + '''\\") { nodes { - number, - title, + number, + title, headRefOid, labels(first: 20) { nodes { name } + }, + timelineItems(itemTypes: [LABELED_EVENT], last: 100) { + nodes { + ... on LabeledEvent { + actor { login }, + label { name } + } + } } } } @@ -551,25 +587,71 @@ def read_pull_request_info_from_github(): result = execute('curl', '-H', f'Authorization: Bearer {git_hub_access_token}', '-X', 'POST', '-d', post_body, 'https://api.github.com/graphql', error_msg='GitHub GraphQL Query failed!', quiet_err=True) + # The token is not needed after this point. Remove it from the environment so that it is not + # inherited by Maven, which runs the tests of the merged in - not yet reviewed - PRs. + del os.environ['CUSTOM_RELEASE_GIT_HUB_API_TOKEN'] # Example response - # {"data":{"repository":{"pullRequests":{"nodes":[{"number":2222,"labels":{"nodes":[{"name":"+Bump Serialization Id"},{"name":"Entur Test"}]}}]}}}} + # {"data":{"repository":{"pullRequests":{"nodes":[{"number":2222,"labels":{"nodes":[{"name":"+Bump Serialization Id"},{"name":"Entur Test"}]},"timelineItems":{"nodes":[{"actor":{"login":"octocat"},"label":{"name":"Entur Test"}}]}}]}}}} json_doc = json.loads(result.stdout) + for node in json_doc['data']['repository']['pullRequests']['nodes']: + label_names = [label['name'] for label in node['labels']['nodes']] + labeled_by = resolve_labeled_by(node['timelineItems']['nodes']) + add_pull_request(node['number'], node['title'], node['headRefOid'], label_names, labeled_by) + + +# Return the login of the user who set the 'include_prs_label' last. The label can be removed and +# set again, so only the last event counts. A user who no longer exists has no login, in which case +# 'unknown' is returned - the same if no event is found. +def resolve_labeled_by(labeled_events): + labeled_by = 'unknown' + for event in labeled_events: + if event.get('label', {}).get('name', '').lower() == config.include_prs_label.lower(): + actor = event.get('actor') + labeled_by = actor['login'] if actor and actor.get('login') else 'unknown' + return labeled_by + + +def add_pull_request(number, title, commit_hash, label_names, labeled_by): + if not re.fullmatch(r'[0-9a-f]{40}', str(commit_hash)): + error(f'PR #{number} does not have a full 40 character commit hash as head: {commit_hash}') + pr = PullRequest() + pr.number = int(number) + pr.title = title + pr.commit_hash = commit_hash + pr.labeled_by = labeled_by + # GitHub labels are not case-sensitive, hence using 'lower()' defined_labels = [LBL_BUMP_SER_VER_ID.lower(), config.include_prs_label.lower()] + pr.labels = [name for name in label_names if name.lower() in defined_labels] + pullRequests.append(pr) - for node in json_doc['data']['repository']['pullRequests']['nodes']: - pr = PullRequest() - pr.number = node['number'] - pr.title = node['title'] - pr.commit_hash = node['headRefOid'] - labels = node['labels']['nodes'] - # GitHub labels are not case-sensitive, hence using 'lower()' - for label in labels: - lbl_name = label['name'] - lbl_name_lc= lbl_name.lower() - if lbl_name_lc in defined_labels: - pr.labels.append(lbl_name) - pullRequests.append(pr) + +# Anyone with triage access to the upstream repository can label a PR, and a labeled PR is merged, +# built and released without review. If 'include_prs_labelers' is configured, only PRs labeled by +# one of the listed GitHub logins are accepted. The check runs before anything is merged. +def verify_pr_labelers(): + if not pullRequests: + return + if not config.include_prs_labelers: + warn(f"'include_prs_labelers' is not configured, so it is not verified who set the " + f"'{config.include_prs_label}' label on the PRs merged into this release.") + return + section(f'Verify who set the {config.include_prs_label} label on the PRs ...') + # GitHub logins are not case-sensitive, hence using 'lower()' + trusted = [login.lower() for login in config.include_prs_labelers] + untrusted = [] + for pr in pullRequests: + if pr.labeled_by and pr.labeled_by.lower() in trusted: + info(f' - PR #{pr.number} labeled by {pr.labeled_by} - OK') + else: + info(f' - PR #{pr.number} labeled by {pr.labeled_by} - NOT TRUSTED') + untrusted.append(pr) + if untrusted: + error('These PRs are labeled by a user not listed in the \'include_prs_labelers\':\n' + + ''.join(f" - PR #{pr.number} '{pr.title}' labeled by {pr.labeled_by}\n" + for pr in untrusted) + + "Remove the label, or add the login to 'include_prs_labelers' in the " + "'script/custom-release-env.json' file.") def check_if_prs_exist_in_latest_release(): @@ -675,19 +757,22 @@ def print_setup(): - Dry run .................... : {options.dry_run} - Debugging ................... : {options.debugging} - Release ..................... : {options.release_only} + - Skip PRs .................... : {options.skip_prs} Config - Upstream git repo remote name : {config.upstream_remote} - Release to remote git repo .. : {config.release_remote} - Release branch .............. : {config.release_branch} - Configuration branches ...... : {config.ext_branches} + - PRs label ................... : {config.include_prs_label} + - PRs trusted labelers ........ : {config.include_prs_labelers} - Ser.ver.id prefix ........... : {config.ser_ver_id_prefix} - Otp production url .......... : {config.otp_production_url} ''') if config.include_prs_label: info(f'PRs to merge') for pr in pullRequests: - info(f' - {pr.description_w_labels()}') + info(f' - {pr.description_w_labels()} labeled by {pr.labeled_by}') info(f''' Release info - Project major version ....... : {state.major_version} @@ -908,7 +993,9 @@ def print_help(): Release process overview 1. The configured release-branch is reset hard to the script argument. - 2. Then the labeled PRs are merged into the release-branch [if configured]. + 2. Then the labeled PRs are merged into the release-branch [if configured]. If the + 'include_prs_labelers' is configured, only PRs labeled by one of the listed GitHub + users are accepted - the release stops if any other user has set the label. 3. The config-branches are merged into the release-branch [if configured]. 4. The pom.xml file is updated with a new version and serialization version id [if required]. 5. The release is tested, tagged and pushed to Git repo. diff --git a/street/pom.xml b/street/pom.xml index f593a1f312e..8005517ca88 100644 --- a/street/pom.xml +++ b/street/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT @@ -22,32 +22,35 @@ + ${project.groupId} - domain-core + astar ${project.version} - ${project.groupId} - astar + org.opentripplanner.core + model ${project.version} + - org.slf4j - slf4j-api - ${slf4j.version} + com.google.dagger + dagger + ${google.dagger.version} - org.junit.jupiter - junit-jupiter - ${junit.version} - test + com.google.guava + guava - com.google.dagger - dagger - ${google.dagger.version} + de.grundid.opendatalab + geojson-jackson + + + net.sf.trove4j + trove4j - - - - org.geotools - gt-coverage - - - org.geotools - gt-geotiff - org.geotools - gt-api + gt-geojson-core - org.geotools - gt-geojson-core + org.slf4j + slf4j-api + ${slf4j.version} + + - de.grundid.opendatalab - geojson-jackson + com.google.truth + truth + test - net.sf.trove4j - trove4j + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test - com.google.truth - truth + org.junit.jupiter + junit-jupiter-params + ${junit.version} test - - - \ No newline at end of file diff --git a/street/src/main/java/org/opentripplanner/street/model/edge/PathwayEdge.java b/street/src/main/java/org/opentripplanner/street/model/edge/PathwayEdge.java index 314708d4de9..cc045d720e9 100644 --- a/street/src/main/java/org/opentripplanner/street/model/edge/PathwayEdge.java +++ b/street/src/main/java/org/opentripplanner/street/model/edge/PathwayEdge.java @@ -25,7 +25,7 @@ public class PathwayEdge extends Edge implements BikeWalkableEdge, WheelchairTra private final int traversalTime; private final double distance; - private final int steps; + private final int stairCount; private final double slope; private final boolean wheelchairAccessible; @@ -36,21 +36,21 @@ private PathwayEdge( @Nullable I18NString signpostedAs, int traversalTime, double distance, - int steps, + int stairCount, double slope, boolean wheelchairAccessible ) { super(fromv, tov); this.signpostedAs = signpostedAs; this.traversalTime = traversalTime; - this.steps = steps; + this.stairCount = stairCount; this.slope = slope; this.wheelchairAccessible = wheelchairAccessible; this.distance = distance; } /** - * Create a PathwayEdge that doesn't have a traversal time, distance or steps. + * Create a PathwayEdge that doesn't have a traversal time, distance or stairCount. *

    * These are for edges which have an implied cost of almost zero just like a FreeEdge has. */ @@ -68,7 +68,7 @@ public static PathwayEdge createPathwayEdge( I18NString signpostedAs, int traversalTime, double distance, - int steps, + int stairCount, double slope, boolean wheelchairAccessible ) { @@ -79,7 +79,7 @@ public static PathwayEdge createPathwayEdge( signpostedAs, traversalTime, distance, - steps, + stairCount, slope, wheelchairAccessible ) @@ -102,7 +102,7 @@ public State[] traverse(State s0) { time_ms = (long) ((1000.0 * distance) / request.walk().speed()); } else if (isStairs()) { // 1 step corresponds to 20cm, doubling that to compensate for elevation; - time_ms = (long) ((1000.0 * 0.4 * Math.abs(steps)) / request.walk().speed()); + time_ms = (long) ((1000.0 * 0.4 * Math.abs(stairCount)) / request.walk().speed()); } } @@ -126,7 +126,7 @@ public State[] traverse(State s0) { s1.incrementTimeInMilliseconds(time_ms); s1.incrementWeight(weight); } else { - // elevators often don't have a traversal time, distance or steps, so we need to add + // elevators often don't have a traversal time, distance or stairCount, so we need to add // _some_ cost. the real cost is added in ElevatorHopEdge. // adding a cost of 1 is analogous to FreeEdge s1.incrementWeight(1); @@ -174,8 +174,8 @@ public double getEffectiveWalkDistance() { } } - public int getSteps() { - return steps; + public int getStairCount() { + return stairCount; } @Override @@ -184,6 +184,6 @@ public boolean isWheelchairAccessible() { } private boolean isStairs() { - return steps > 0; + return stairCount != 0; } } diff --git a/street/src/main/java/org/opentripplanner/street/model/openinghours/OHCalendarBuilder.java b/street/src/main/java/org/opentripplanner/street/model/openinghours/OHCalendarBuilder.java index 3ac794c66dc..6019b0b3bab 100644 --- a/street/src/main/java/org/opentripplanner/street/model/openinghours/OHCalendarBuilder.java +++ b/street/src/main/java/org/opentripplanner/street/model/openinghours/OHCalendarBuilder.java @@ -13,7 +13,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; public class OHCalendarBuilder { diff --git a/street/src/main/java/org/opentripplanner/street/model/openinghours/OpeningHoursCalendarService.java b/street/src/main/java/org/opentripplanner/street/model/openinghours/OpeningHoursCalendarService.java index f6028c786d7..28bf4257bc9 100644 --- a/street/src/main/java/org/opentripplanner/street/model/openinghours/OpeningHoursCalendarService.java +++ b/street/src/main/java/org/opentripplanner/street/model/openinghours/OpeningHoursCalendarService.java @@ -5,8 +5,8 @@ import java.time.LocalDate; import java.time.ZoneId; import java.util.Objects; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; -import org.opentripplanner.core.framework.di.TransitServicePeriod; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.di.TransitServicePeriod; import org.opentripplanner.core.model.time.LocalDateRange; public class OpeningHoursCalendarService implements Serializable { diff --git a/street/src/main/java/org/opentripplanner/street/search/request/RentalPeriod.java b/street/src/main/java/org/opentripplanner/street/search/request/RentalPeriod.java index 1acf2a17249..822c1c13423 100644 --- a/street/src/main/java/org/opentripplanner/street/search/request/RentalPeriod.java +++ b/street/src/main/java/org/opentripplanner/street/search/request/RentalPeriod.java @@ -3,7 +3,6 @@ import java.time.Duration; import java.time.Instant; import java.util.Objects; -import javax.annotation.Nonnull; /** * Represent the period, on which rental vehicle should be available in direct car street routing. @@ -14,7 +13,7 @@ public final class RentalPeriod { private final Instant end; - public RentalPeriod(@Nonnull Instant start, @Nonnull Instant end) { + public RentalPeriod(Instant start, Instant end) { this.start = Objects.requireNonNull(start); this.end = Objects.requireNonNull(end); } diff --git a/street/src/test/java/org/opentripplanner/street/model/edge/PathwayEdgeTest.java b/street/src/test/java/org/opentripplanner/street/model/edge/PathwayEdgeTest.java index c4c79471b34..a0f88a111b8 100644 --- a/street/src/test/java/org/opentripplanner/street/model/edge/PathwayEdgeTest.java +++ b/street/src/test/java/org/opentripplanner/street/model/edge/PathwayEdgeTest.java @@ -21,6 +21,8 @@ class PathwayEdgeTest { + private static final NonLocalizedString PATHWAY_NAME = new NonLocalizedString("pathway"); + Vertex from = intersectionVertex(10, 10); Vertex to = intersectionVertex(10.001, 10.001); @@ -28,48 +30,21 @@ class PathwayEdgeTest { void zeroLength() { // if elevators have a traversal time and distance of 0 we cannot interpolate the distance // from the vertices as they most likely have identical coordinates - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 0, - 0, - 0, - 0, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 0, 0, 0, true); assertThatEdgeIsTraversable(edge); } @Test void zeroLengthWithSteps() { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 0, - 0, - 2, - 0, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 0, 2, 0, true); assertThatEdgeIsTraversable(edge); } @Test void traversalTime() { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 60, - 0, - 0, - 0, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 60, 0, 0, 0, true); var state = assertThatEdgeIsTraversable(edge); assertEquals(60, state.getElapsedTimeSeconds()); @@ -78,16 +53,7 @@ void traversalTime() { @Test void traversalTimeOverridesLength() { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 60, - 1000, - 0, - 0, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 60, 1000, 0, 0, true); assertEquals(1000, edge.getDistanceMeters()); @@ -98,16 +64,7 @@ void traversalTimeOverridesLength() { @Test void distance() { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 0, - 60, - 0, - 0, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 60, 0, 0, true); var state = assertThatEdgeIsTraversable(edge); assertEquals(6, state.getElapsedTimeSeconds()); @@ -116,22 +73,24 @@ void distance() { @Test void wheelchair() { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 0, - 60, - 0, - 0, - false - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 60, 0, 0, false); var state = assertThatEdgeIsTraversable(edge, true); assertEquals(6, state.getElapsedTimeSeconds()); assertEquals(300.0, state.getWeight()); } + @Test + void wheelchairNegativeStepsTreatedAsStairs() { + var down = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 0, -10, 0, true); + var up = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 0, 0, 10, 0, true); + + var downState = assertThatEdgeIsTraversable(down, true); + var upState = assertThatEdgeIsTraversable(up, true); + + assertEquals(upState.getWeight(), downState.getWeight()); + } + static Stream slopeCases() { return Stream.of( // no extra cost @@ -159,16 +118,7 @@ static Stream slopeCases() { @ParameterizedTest(name = "slope of {0} should lead to traversal costs of {1}") @MethodSource("slopeCases") void shouldScaleCostWithMaxSlope(double slope, long expectedCost) { - var edge = PathwayEdge.createPathwayEdge( - from, - to, - new NonLocalizedString("pathway"), - 60, - 100, - 0, - slope, - true - ); + var edge = PathwayEdge.createPathwayEdge(from, to, PATHWAY_NAME, 60, 100, 0, slope, true); var state = assertThatEdgeIsTraversable(edge, true); assertEquals(60, state.getElapsedTimeSeconds()); diff --git a/street/src/test/java/org/opentripplanner/street/model/openinghours/OHCalendarTest.java b/street/src/test/java/org/opentripplanner/street/model/openinghours/OHCalendarTest.java index 24cc2ca7324..09e077b87c0 100644 --- a/street/src/test/java/org/opentripplanner/street/model/openinghours/OHCalendarTest.java +++ b/street/src/test/java/org/opentripplanner/street/model/openinghours/OHCalendarTest.java @@ -12,7 +12,7 @@ import java.time.Month; import java.time.ZoneId; import org.junit.jupiter.api.Test; -import org.opentripplanner.core.framework.deduplicator.DeduplicatorService; +import org.opentripplanner.core.model.deduplicator.DeduplicatorService; class OHCalendarTest { diff --git a/test/integration/pom.xml b/test/integration/pom.xml index 2ee513f9176..13dff1d25c1 100644 --- a/test/integration/pom.xml +++ b/test/integration/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT ../../pom.xml @@ -14,12 +14,7 @@ integration-test - - ${project.groupId} - application - ${project.version} - test - + org.junit.jupiter junit-jupiter-api @@ -32,6 +27,12 @@ ${junit.version} test + + ${project.groupId} + application + ${project.version} + test + diff --git a/domain-core/pom.xml b/transit/pom.xml similarity index 74% rename from domain-core/pom.xml rename to transit/pom.xml index ff4d933371e..5b82c8a70f7 100644 --- a/domain-core/pom.xml +++ b/transit/pom.xml @@ -5,12 +5,12 @@ 4.0.0 org.opentripplanner - otp-root + otp 2.11.0-SNAPSHOT - domain-core - OpenTripPlanner - Domain Core + transit + OpenTripPlanner - Transit @@ -22,34 +22,31 @@ + - ${project.groupId} - utils + org.opentripplanner.core + model ${project.version} + org.slf4j slf4j-api - ${slf4j.version} - - - org.junit.jupiter - junit-jupiter - ${junit.version} - test + + com.google.truth truth test - - javax.inject - javax.inject - 1 + org.junit.jupiter + junit-jupiter + ${junit.version} + test - - \ No newline at end of file + +