Skip to content

Upgrade to Kotlin 2.3, Jackson 3, and Gradle 9#22

Open
WilliamAGH wants to merge 2 commits into
Doorbit:mainfrom
WilliamAGH:main
Open

Upgrade to Kotlin 2.3, Jackson 3, and Gradle 9#22
WilliamAGH wants to merge 2 commits into
Doorbit:mainfrom
WilliamAGH:main

Conversation

@WilliamAGH

Copy link
Copy Markdown

Updates build tooling and dependencies to current versions.

  • Gradle 8.5 → 9.2.1
  • Kotlin 1.9.22 → 2.3.0
  • Dokka 1.9.10 → 2.1.0
  • Jackson 2.16 → 3.0.3

Jackson 3 moves core packages to tools.jackson but keeps using 2.x annotations, so the mixed imports are intentional.

Modernize build infrastructure to Gradle 9.x for improved performance
and compatibility with modern JDKs. The native access warning is
suppressed via gradle.properties for JDK 24+.

- Upgrade Gradle wrapper from 8.5 to 9.2.1
- Add --enable-native-access=ALL-UNNAMED JVM arg for JDK 24+
- Update wrapper scripts to latest Gradle-generated versions
Modernize project dependencies to latest major versions. Jackson 3.x
relocates core packages from com.fasterxml.jackson to tools.jackson
while retaining 2.x annotations per JSTEP-1 decision.

- Upgrade Kotlin plugin from 1.9.22 to 2.3.0
- Upgrade Dokka plugin from 1.9.10 to 2.1.0
- Migrate to Jackson 3.0.3 BOM (tools.jackson namespace)
- Replace jacksonObjectMapper() with JsonMapper.builder() pattern
- Use KotlinModule.Builder().build() for Kotlin serialization support
- Update JsonNode API calls to Jackson 3 conventions

Note: com.fasterxml.jackson.annotation imports are intentional as
Jackson 3 officially reuses 2.x annotations module per JSTEP-1.
Copilot AI review requested due to automatic review settings January 14, 2026 22:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This pull request upgrades core build tooling and dependencies to their latest versions, including Gradle 8.5 → 9.2.1, Kotlin 1.9.22 → 2.3.0, Dokka 1.9.10 → 2.1.0, and Jackson 2.16 → 3.0.3. The migration includes updating Gradle wrapper scripts, adjusting Jackson package imports to reflect Jackson 3's new namespace (tools.jackson for core packages while keeping 2.x annotations), updating API methods (asText()stringValue()), and refactoring ObjectMapper configuration to use the new builder pattern.

Changes:

  • Updated Gradle wrapper to version 9.2.1 with improved POSIX compatibility and updated Windows batch script syntax
  • Migrated Jackson dependencies from 2.16 to 3.0.3, updating package imports and API calls
  • Upgraded Kotlin to 2.3.0 and Dokka to 2.1.0

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
gradlew Updated Gradle wrapper script with enhanced POSIX shell compatibility and improved documentation
gradlew.bat Updated Windows batch script with modernized syntax and improved error handling
gradle/wrapper/gradle-wrapper.properties Updated Gradle distribution URL to 9.2.1 and added network timeout and validation settings
gradle/wrapper/gradle-wrapper.jar Updated Gradle wrapper JAR binary to version 9.2.1
gradle.properties Added JDK 24+ native access warning suppression
apple-maps-server-kotlin/build.gradle.kts Updated Kotlin to 2.3.0, Dokka to 2.1.0, and migrated Jackson dependencies to 3.0.3 using BOM
apple-maps-server-kotlin/src/main/kotlin/com/doorbit/applemaps/AppleMaps.kt Updated Jackson imports to tools.jackson namespace and refactored ObjectMapper configuration
apple-maps-server-kotlin/src/main/kotlin/com/doorbit/applemaps/AppleMapsAuthorizationService.kt Updated Jackson imports to tools.jackson namespace and replaced asText() with stringValue()

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

Comment on lines +111 to +116
return JsonMapper.builder()
.addModule(KotlinModule.Builder().build())
.changeDefaultPropertyInclusion { incl ->
incl.withValueInclusion(JsonInclude.Include.NON_NULL)
}
.build()

Copilot AI Jan 14, 2026

Copy link

Choose a reason for hiding this comment

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

The removal of configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) may cause deserialization to fail when the Apple Maps API returns unexpected fields. In Jackson 3, the default behavior is to fail on unknown properties. Consider adding .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) to the builder chain to maintain backward compatibility and prevent potential runtime failures.

Copilot uses AI. Check for mistakes.
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