Skip to content

v6.0.0#61

Open
lbkulinski wants to merge 35 commits into
mainfrom
v6.0.0
Open

v6.0.0#61
lbkulinski wants to merge 35 commits into
mainfrom
v6.0.0

Conversation

@lbkulinski

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings June 27, 2026 17:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR appears to be the v6.0.0 release cut of the SDK, primarily refactoring bus/train client internals (configuration + JSON parsing), standardizing null-safety/annotation usage, and introducing typed Bus Tracker wire envelopes/errors to support consistent error-handling behavior.

Changes:

  • Replace *ApiContext (incl. embedded ObjectMapper) with slimmer *ApiConfig records and shift parsing to JsonMapper.shared().
  • Rework Bus “bustime-response” wire modeling to use typed Cta<Feature>BustimeResponse + typed Cta<Feature>Error records, aligning implementations with a consistent “data vs errors vs not-found” decision flow (plus warn logging for empty responses).
  • Apply broad formatting/annotation updates (@NullMarked, annotation ordering) and update version/docs for the major release.

Reviewed changes

Copilot reviewed 108 out of 108 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/main/java/com/cta4j/train/station/model/Station.java Formatting + compact-constructor null-safety adjustments for station model.
src/main/java/com/cta4j/train/station/model/Location.java Formatting of nullable component and record layout.
src/main/java/com/cta4j/train/station/model/HumanAddress.java Formatting-only changes for record layout.
src/main/java/com/cta4j/train/station/internal/wire/CtaStation.java Standardize annotation order + compact record formatting for train stations wire DTO.
src/main/java/com/cta4j/train/station/internal/wire/CtaLocation.java Standardize annotation order + formatting for train station location wire DTO.
src/main/java/com/cta4j/train/station/internal/impl/StationsApiImpl.java Switch from context to config + JsonMapper.shared() for station list parsing.
src/main/java/com/cta4j/train/location/model/TrainLocations.java Formatting + compact-constructor null-safety adjustments for train locations model.
src/main/java/com/cta4j/train/location/model/LocationTrain.java Formatting of nullable component and record layout.
src/main/java/com/cta4j/train/location/internal/wire/CtaRoute.java Annotation order + formatting for location route wire DTO.
src/main/java/com/cta4j/train/location/internal/wire/CtaLocationTrain.java Annotation order + formatting for location train wire DTO.
src/main/java/com/cta4j/train/location/internal/wire/CtaLocationResponse.java Annotation order + formatting for location response wire DTO.
src/main/java/com/cta4j/train/location/internal/impl/LocationsApiImpl.java Switch from context to config + JsonMapper.shared() + endpoint formatting updates.
src/main/java/com/cta4j/train/follow/model/FollowTrain.java Formatting + compact-constructor null-safety adjustments for follow response model.
src/main/java/com/cta4j/train/follow/internal/wire/CtaPosition.java Annotation order + compact formatting for follow position wire DTO.
src/main/java/com/cta4j/train/follow/internal/wire/CtaFollowResponse.java Annotation order + formatting for follow response wire DTO.
src/main/java/com/cta4j/train/follow/internal/mapper/FollowTrainMapper.java Reformat MapStruct @Mapper annotation for readability/consistency.
src/main/java/com/cta4j/train/follow/internal/impl/FollowApiImpl.java Switch from context to config + JsonMapper.shared() + endpoint formatting updates.
src/main/java/com/cta4j/train/common/model/ArrivalMetadata.java Formatting of nullable components and record layout.
src/main/java/com/cta4j/train/common/model/Arrival.java Formatting-only changes for record layout.
src/main/java/com/cta4j/train/common/internal/wire/CtaResponse.java Annotation order normalization for train outer response DTO.
src/main/java/com/cta4j/train/common/internal/wire/CtaError.java Annotation placement/order adjustment on train error type.
src/main/java/com/cta4j/train/common/internal/wire/CtaArrival.java Annotation order + formatting for train arrival wire DTO.
src/main/java/com/cta4j/train/common/internal/util/ApiUtils.java String formatting modernization (formatted) + @NullMarked placement.
src/main/java/com/cta4j/train/common/internal/mapper/Qualifiers.java Use JsonMapper.shared() for embedded JSON parsing + string formatting updates + annotation placement.
src/main/java/com/cta4j/train/common/internal/impl/TrainApiImpl.java Remove injectable ObjectMapper from constructor; construct APIs using TrainApiConfig.
src/main/java/com/cta4j/train/common/internal/config/TrainApiConfig.java Rename/move from context → config and drop ObjectMapper from stored config.
src/main/java/com/cta4j/train/arrival/query/StopArrivalQuery.java Formatting of nullable components and record layout.
src/main/java/com/cta4j/train/arrival/query/MapArrivalQuery.java Formatting of nullable components and record layout.
src/main/java/com/cta4j/train/arrival/internal/wire/CtaArrivalsResponse.java Annotation order + formatting for arrivals response wire DTO.
src/main/java/com/cta4j/train/arrival/internal/impl/ArrivalsApiImpl.java Switch from context to config + JsonMapper.shared() + endpoint formatting updates.
src/main/java/com/cta4j/exception/Cta4jException.java Mark exception final and add @NullMarked.
src/main/java/com/cta4j/common/internal/json/Cta4jObjectMapper.java Remove internal singleton ObjectMapper utility (replaced by JsonMapper.shared()).
src/main/java/com/cta4j/common/internal/http/HttpClient.java Annotation placement + String#formatted updates for error messages.
src/main/java/com/cta4j/common/geo/GeoConstants.java Formatting-only cleanup.
src/main/java/com/cta4j/common/geo/Coordinates.java String#formatted modernization for validation messages + formatting cleanup.
src/main/java/com/cta4j/bus/vehicle/VehiclesApi.java Javadoc clarifications about error cases; string formatting modernization.
src/main/java/com/cta4j/bus/vehicle/model/VehicleMetadata.java Formatting of nullable components and record layout.
src/main/java/com/cta4j/bus/vehicle/model/Vehicle.java Formatting-only changes for record layout.
src/main/java/com/cta4j/bus/vehicle/model/TransitMode.java Add @NullMarked + string formatting modernization for error message.
src/main/java/com/cta4j/bus/vehicle/internal/wire/CtaVehicleError.java New typed vehicle error wire record implementing CtaError.
src/main/java/com/cta4j/bus/vehicle/internal/wire/CtaVehicleBustimeResponse.java New typed bustime-response wrapper for vehicles endpoint.
src/main/java/com/cta4j/bus/vehicle/internal/wire/CtaVehicle.java Annotation order + formatting for vehicle wire DTO.
src/main/java/com/cta4j/bus/vehicle/internal/impl/VehiclesApiImpl.java Switch to config + typed bustime response + warn logging + new not-found handling logic + JsonMapper.shared().
src/main/java/com/cta4j/bus/stop/StopsApi.java Javadoc clarifications and expanded exception documentation.
src/main/java/com/cta4j/bus/stop/model/Stop.java Formatting of nullable components and record layout.
src/main/java/com/cta4j/bus/stop/internal/wire/CtaStopError.java New typed stop error wire record implementing CtaError.
src/main/java/com/cta4j/bus/stop/internal/wire/CtaStopBustimeResponse.java New typed bustime-response wrapper for stops endpoint.
src/main/java/com/cta4j/bus/stop/internal/wire/CtaStop.java Annotation order + formatting for stop wire DTO.
src/main/java/com/cta4j/bus/stop/internal/impl/StopsApiImpl.java Switch to config + typed bustime response + warn logging + not-found handling + JsonMapper.shared().
src/main/java/com/cta4j/bus/route/RoutesApi.java Add exception documentation and clarify empty-list behavior.
src/main/java/com/cta4j/bus/route/model/Route.java Formatting of nullable component and record layout.
src/main/java/com/cta4j/bus/route/internal/wire/CtaRouteError.java New typed route error wire record implementing CtaError.
src/main/java/com/cta4j/bus/route/internal/wire/CtaRouteBustimeResponse.java New typed bustime-response wrapper for routes endpoint.
src/main/java/com/cta4j/bus/route/internal/wire/CtaRoute.java Annotation order + formatting for route wire DTO.
src/main/java/com/cta4j/bus/route/internal/impl/RoutesApiImpl.java Switch to config + typed bustime response + warn logging + JsonMapper.shared().
src/main/java/com/cta4j/bus/prediction/query/VehiclesPredictionsQuery.java Add max-IDs validation, builder API tweak, and tighten input constraints.
src/main/java/com/cta4j/bus/prediction/query/StopsPredictionsQuery.java Add max-IDs validation, builder API tweak, and tighten input constraints.
src/main/java/com/cta4j/bus/prediction/PredictionsApi.java Add exception documentation for parse/error responses.
src/main/java/com/cta4j/bus/prediction/model/PredictionType.java Add @NullMarked.
src/main/java/com/cta4j/bus/prediction/model/PredictionMetadata.java Formatting + small Javadoc wording adjustment.
src/main/java/com/cta4j/bus/prediction/model/Prediction.java Formatting of nullable component and record layout.
src/main/java/com/cta4j/bus/prediction/model/PassengerLoad.java Add @NullMarked.
src/main/java/com/cta4j/bus/prediction/model/FlagStop.java Add @NullMarked + string formatting modernization for error message.
src/main/java/com/cta4j/bus/prediction/model/DynamicAction.java Add @NullMarked + string formatting modernization for error message.
src/main/java/com/cta4j/bus/prediction/internal/wire/CtaPredictionError.java New typed prediction error wire record implementing CtaError.
src/main/java/com/cta4j/bus/prediction/internal/wire/CtaPredictionBustimeResponse.java New typed bustime-response wrapper for predictions endpoint.
src/main/java/com/cta4j/bus/prediction/internal/wire/CtaPrediction.java Annotation order + formatting for prediction wire DTO.
src/main/java/com/cta4j/bus/prediction/internal/impl/PredictionsApiImpl.java Switch to config + typed bustime response + warn logging + not-found handling + JsonMapper.shared().
src/main/java/com/cta4j/bus/pattern/PatternsApi.java Javadoc clarifications and expanded exception documentation.
src/main/java/com/cta4j/bus/pattern/model/RoutePattern.java Formatting + compact-constructor null-safety adjustments for pattern model.
src/main/java/com/cta4j/bus/pattern/model/PatternPointType.java Add @NullMarked.
src/main/java/com/cta4j/bus/pattern/model/PatternPoint.java Formatting + Javadoc wording refinement.
src/main/java/com/cta4j/bus/pattern/internal/wire/CtaPoint.java Annotation order + formatting for pattern point wire DTO.
src/main/java/com/cta4j/bus/pattern/internal/wire/CtaPatternError.java New typed pattern error wire record implementing CtaError.
src/main/java/com/cta4j/bus/pattern/internal/wire/CtaPatternBustimeResponse.java New typed bustime-response wrapper for patterns endpoint.
src/main/java/com/cta4j/bus/pattern/internal/wire/CtaPattern.java Annotation order + formatting + nullable detour fields for pattern wire DTO.
src/main/java/com/cta4j/bus/pattern/internal/impl/PatternsApiImpl.java Switch to config + typed bustime response + warn logging + not-found handling + JsonMapper.shared().
src/main/java/com/cta4j/bus/locale/model/SupportedLocale.java Formatting + small Javadoc wording refinement.
src/main/java/com/cta4j/bus/locale/LocalesApi.java Clarify empty-list behavior, add exception docs, and tighten parameter docs.
src/main/java/com/cta4j/bus/locale/internal/wire/CtaLocaleError.java New typed locale error wire record implementing CtaError.
src/main/java/com/cta4j/bus/locale/internal/wire/CtaLocaleBustimeResponse.java New typed bustime-response wrapper for locales endpoint.
src/main/java/com/cta4j/bus/locale/internal/wire/CtaLocale.java Annotation order + formatting for locale wire DTO.
src/main/java/com/cta4j/bus/locale/internal/impl/LocalesApiImpl.java Switch to config + typed bustime response + warn logging + JsonMapper.shared().
src/main/java/com/cta4j/bus/direction/internal/wire/CtaDirectionError.java New typed direction error wire record implementing CtaError.
src/main/java/com/cta4j/bus/direction/internal/wire/CtaDirectionBustimeResponse.java New typed bustime-response wrapper for directions endpoint.
src/main/java/com/cta4j/bus/direction/internal/wire/CtaDirection.java Annotation order + formatting for direction wire DTO.
src/main/java/com/cta4j/bus/direction/internal/impl/DirectionsApiImpl.java Switch to config + typed bustime response + warn logging + not-found handling + JsonMapper.shared().
src/main/java/com/cta4j/bus/direction/DirectionsApi.java Clarify empty-list behavior and add exception docs.
src/main/java/com/cta4j/bus/detour/model/DetourRouteDirection.java Formatting + minor Javadoc wording refinement.
src/main/java/com/cta4j/bus/detour/model/Detour.java Formatting + compact-constructor null-safety adjustments for detour model.
src/main/java/com/cta4j/bus/detour/internal/wire/CtaDetourRouteDirection.java Fix naming (CtaDetourRouteDirection) + annotation order + formatting.
src/main/java/com/cta4j/bus/detour/internal/wire/CtaDetourError.java New typed detour error wire record implementing CtaError.
src/main/java/com/cta4j/bus/detour/internal/wire/CtaDetourBustimeResponse.java New typed bustime-response wrapper for detours endpoint.
src/main/java/com/cta4j/bus/detour/internal/wire/CtaDetour.java Update route-directions DTO type + annotation order + formatting.
src/main/java/com/cta4j/bus/detour/internal/mapper/DetourMapper.java Update mapper signature to renamed detour route-direction DTO.
src/main/java/com/cta4j/bus/detour/internal/impl/DetoursApiImpl.java Switch to config + typed bustime response + warn logging + not-found handling + JsonMapper.shared().
src/main/java/com/cta4j/bus/detour/DetoursApi.java Clarify empty-list behavior and add exception docs.
src/main/java/com/cta4j/bus/common/internal/wire/CtaTimeError.java New typed system-time error wire record implementing CtaError.
src/main/java/com/cta4j/bus/common/internal/wire/CtaTimeBustimeResponse.java New typed bustime-response wrapper for system time endpoint.
src/main/java/com/cta4j/bus/common/internal/wire/CtaResponse.java Change envelope to CtaResponse<T> with typed bustimeResponse payload.
src/main/java/com/cta4j/bus/common/internal/wire/CtaError.java Replace generic error record with CtaError interface (msg() contract).
src/main/java/com/cta4j/bus/common/internal/util/ApiUtils.java Accept List<? extends CtaError> + defensive copying + string formatting modernization.
src/main/java/com/cta4j/bus/common/internal/mapper/Qualifiers.java String formatting modernization for mapper validation errors + annotation placement.
src/main/java/com/cta4j/bus/common/internal/impl/BusApiImpl.java Remove injectable ObjectMapper, adopt BusApiConfig, parse typed time response, and adjust error handling.
src/main/java/com/cta4j/bus/common/internal/config/BusApiConfig.java Rename/move from context → config and drop ObjectMapper from stored config.
src/main/java/com/cta4j/bus/BusApi.java Add exception documentation for systemTime() + builder null-guard doc.
pom.xml Bump project version to 6.0.0.
CLAUDE.md Add repository-level contributor guidance (API surface, wire conventions, error-handling pattern, null-safety rules).
Comments suppressed due to low confidence (1)

src/main/java/com/cta4j/bus/detour/model/Detour.java:60

  • routeDirections is required (non-@nullable) but is no longer explicitly guarded with Objects.requireNonNull(...) even though the Javadoc documents it as null-intolerant. To align with the repo’s null-safety convention (CLAUDE.md:85) and provide clearer parameter validation, add an explicit null guard before List.copyOf(routeDirections).
        Objects.requireNonNull(description);
        Objects.requireNonNull(startTime);
        Objects.requireNonNull(endTime);

        routeDirections = List.copyOf(routeDirections);

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/com/cta4j/train/station/model/Station.java
Comment thread src/main/java/com/cta4j/train/location/model/TrainLocations.java
Comment thread src/main/java/com/cta4j/train/follow/model/FollowTrain.java
Comment thread src/main/java/com/cta4j/bus/pattern/model/RoutePattern.java
lbkulinski and others added 4 commits June 27, 2026 12:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 199 out of 199 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

src/main/java/com/cta4j/bus/detour/model/Detour.java:60

  • routeDirections is a non-@nullable record component and the Javadoc says it must be non-null, but the compact constructor no longer explicitly guards it. List.copyOf(routeDirections) will throw a NullPointerException if null, but the repo’s null-safety guidance calls for explicit Objects.requireNonNull checks for public inputs (CLAUDE.md:83-86).
        Objects.requireNonNull(description);
        Objects.requireNonNull(startTime);
        Objects.requireNonNull(endTime);

        routeDirections = List.copyOf(routeDirections);

Comment thread src/main/java/com/cta4j/train/station/model/Station.java
Comment thread src/main/java/com/cta4j/train/location/model/TrainLocations.java
Comment thread src/main/java/com/cta4j/bus/pattern/model/RoutePattern.java
Comment thread src/main/java/com/cta4j/train/follow/model/FollowTrain.java

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 202 out of 202 changed files in this pull request and generated 7 comments.

Comments suppressed due to low confidence (1)

src/main/java/com/cta4j/bus/detour/model/Detour.java:60

  • The compact constructor defensively copies routeDirections, but it no longer explicitly enforces the non-null contract with Objects.requireNonNull(routeDirections) as documented. This diverges from the repo guideline to guard public parameters with Objects.requireNonNull (CLAUDE.md:83-86).
        Objects.requireNonNull(description);
        Objects.requireNonNull(startTime);
        Objects.requireNonNull(endTime);

        routeDirections = List.copyOf(routeDirections);

Comment thread src/main/java/com/cta4j/train/station/model/Station.java
Comment thread src/main/java/com/cta4j/train/location/model/TrainLocations.java
Comment thread src/main/java/com/cta4j/train/follow/model/FollowTrain.java
Comment thread src/main/java/com/cta4j/bus/pattern/model/RoutePattern.java
Comment thread src/main/java/com/cta4j/bus/common/internal/util/ApiUtils.java

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 202 out of 202 changed files in this pull request and generated no new comments.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 205 out of 205 changed files in this pull request and generated no new comments.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 214 out of 214 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants