Skip to content

Commit fd87cfa

Browse files
committed
Upgrade to Micronaut v4
1 parent 6807150 commit fd87cfa

File tree

8 files changed

+45
-30
lines changed

8 files changed

+45
-30
lines changed

Diff for: build.gradle.kts

+31-13
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ plugins {
55
id("org.jetbrains.kotlin.jvm") version kotlinVersion
66
id("org.jetbrains.kotlin.kapt") version kotlinVersion
77
id("org.jetbrains.kotlin.plugin.allopen") version kotlinVersion
8-
id("org.jetbrains.kotlin.plugin.jpa") version kotlinVersion
9-
id("io.micronaut.application") version "3.7.10"
8+
id("io.micronaut.application") version "4.1.0"
109
id("com.diffplug.spotless") version "6.19.0"
1110
id("io.gitlab.arturbosch.detekt") version "1.23.1"
1211
id("com.github.spotbugs") version "5.1.3"
@@ -22,12 +21,14 @@ group = "recce.server"
2221
// the Gradle DSL properly. Here we pick one of the versions where multiple artifacts are released at the same time
2322
// and use this to bump the others consistently.
2423
val depDescriptors = mapOf(
25-
"micronaut" to "io.micronaut:micronaut-core:4.0.2",
24+
"micronautPlatform" to "io.micronaut.platform:micronaut-platform:4.1.1",
25+
"micronautCore" to "io.micronaut:micronaut-core-bom:4.1.5",
2626
"restAssured" to "io.rest-assured:rest-assured:4.5.1"
2727
)
2828
val depVersions = depDescriptors.mapValues { (_, v) -> v.split(':').last() } + mapOf(
2929
"javaMajor" to "17",
30-
"reactorToolsVersionExpected" to "3.5.10"
30+
"kotlin" to "1.9.0",
31+
"reactorToolsExpected" to "3.5.10"
3132
)
3233

3334
repositories {
@@ -42,10 +43,15 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach
4243
kotlinOptions {
4344
allWarningsAsErrors = true
4445
}
46+
compilerOptions {
47+
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
48+
}
4549
}
4650

4751
micronaut {
48-
version(depVersions["micronaut"])
52+
version(depVersions["micronautPlatform"])
53+
coreVersion.set(depVersions["micronautCore"])
54+
4955
runtime("netty")
5056
testRuntime("junit5")
5157
processing {
@@ -77,15 +83,27 @@ configurations.all {
7783
}
7884

7985
dependencies {
80-
kapt("io.micronaut:micronaut-http-validation")
8186
kapt("io.micronaut.data:micronaut-data-processor")
82-
implementation("io.micronaut:micronaut-runtime")
83-
implementation("io.micronaut:micronaut-validation")
87+
kapt("io.micronaut:micronaut-http-validation")
88+
kapt("io.micronaut.serde:micronaut-serde-processor")
89+
90+
implementation("io.micronaut.serde:micronaut-serde-jackson")
91+
implementation("jakarta.validation:jakarta.validation-api")
92+
implementation("org.jetbrains.kotlin:kotlin-reflect:${depVersions["kotlin"]}")
93+
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${depVersions["kotlin"]}")
94+
implementation("io.micronaut.serde:micronaut-serde-jackson")
95+
runtimeOnly("org.yaml:snakeyaml")
96+
97+
kapt("io.micronaut.validation:micronaut-validation-processor")
98+
implementation("io.micronaut.validation:micronaut-validation")
99+
implementation("jakarta.validation:jakarta.validation-api")
100+
84101
implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
85102
implementation("io.micronaut.security:micronaut-security-jwt")
86-
implementation("javax.annotation:javax.annotation-api")
103+
implementation("jakarta.annotation:jakarta.annotation-api")
87104
implementation("com.google.guava:guava:32.1.2-jre") {
88105
// see https://github.com/google/guava/pull/6606
106+
exclude(module = "listenablefuture")
89107
exclude(module = "error_prone_annotations")
90108
exclude(module = "checker-qual")
91109
exclude(module = "jsr305")
@@ -277,7 +295,7 @@ jib {
277295
ports = listOf("8080")
278296
environment = mapOf("version" to version.toString())
279297
labels.set(mapOf("org.opencontainers.image.source" to "https://github.com/$githubRepoOwner/recce"))
280-
jvmFlags = listOf("-javaagent:/app/libs/reactor-tools-${depVersions["reactorToolsVersionExpected"]}.jar")
298+
jvmFlags = listOf("-javaagent:/app/libs/reactor-tools-${depVersions["reactorToolsExpected"]}.jar")
281299
}
282300
}
283301

@@ -286,10 +304,10 @@ val checkJibDependencies = tasks.register("checkJibDependencies") {
286304
val resolvedReactorToolsVersion =
287305
project.configurations.runtimeClasspath.get()
288306
.resolvedConfiguration.resolvedArtifacts.find { it.name == "reactor-tools" }?.moduleVersion?.id?.version
289-
if (depVersions["reactorToolsVersionExpected"] != resolvedReactorToolsVersion) {
307+
if (depVersions["reactorToolsExpected"] != resolvedReactorToolsVersion) {
290308
throw GradleException(
291-
"Jib docker build expected reactor-tools [${depVersions["reactorToolsVersionExpected"]}] but found " +
292-
"[$resolvedReactorToolsVersion] in dependencies. Update reactorToolsVersionExpected!"
309+
"Jib docker build expected reactor-tools [${depVersions["reactorToolsExpected"]}] but found " +
310+
"[$resolvedReactorToolsVersion] in dependencies. Update reactorToolsExpected!"
293311
)
294312
}
295313
}

Diff for: src/main/kotlin/recce/server/RecConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import io.micronaut.context.annotation.ConfigurationInject
55
import io.micronaut.context.annotation.ConfigurationProperties
66
import io.micronaut.context.annotation.Context
77
import io.micronaut.core.bind.annotation.Bindable
8+
import jakarta.annotation.PostConstruct
89
import mu.KotlinLogging
910
import recce.server.dataset.DatasetConfiguration
1011
import recce.server.dataset.HashingStrategy
1112
import java.nio.file.Path
12-
import javax.annotation.PostConstruct
1313
import kotlin.io.path.Path
1414

1515
private val logger = KotlinLogging.logger {}

Diff for: src/main/kotlin/recce/server/api/DatasetRecRunController.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import io.swagger.v3.oas.annotations.Operation
1010
import io.swagger.v3.oas.annotations.media.Schema
1111
import io.swagger.v3.oas.annotations.responses.ApiResponse
1212
import jakarta.inject.Inject
13+
import jakarta.validation.Valid
14+
import jakarta.validation.constraints.Max
15+
import jakarta.validation.constraints.NotBlank
16+
import jakarta.validation.constraints.PositiveOrZero
1317
import mu.KotlinLogging
1418
import reactor.core.publisher.Flux
1519
import reactor.core.publisher.Mono
@@ -18,10 +22,6 @@ import reactor.kotlin.core.util.function.component2
1822
import recce.server.dataset.DatasetRecRunner
1923
import recce.server.recrun.RecRecordRepository
2024
import recce.server.recrun.RecRunRepository
21-
import javax.validation.Valid
22-
import javax.validation.constraints.Max
23-
import javax.validation.constraints.NotBlank
24-
import javax.validation.constraints.PositiveOrZero
2525

2626
private val logger = KotlinLogging.logger {}
2727

@@ -38,7 +38,7 @@ class DatasetRecRunController(
3838
@Introspected
3939
data class IndividualRunQueryParams(
4040
@field:Schema(description = "The identifier of the reconciliation run to retrieve")
41-
@field:PathVariable
41+
@field:PathVariable("runId")
4242
val runId: Int,
4343

4444
@field:Schema(
@@ -53,7 +53,6 @@ class DatasetRecRunController(
5353
)
5454

5555
@Get(uri = "/{runId}{?includeSampleKeys}")
56-
@Suppress("MnUnresolvedPathVariable")
5756
@Operation(
5857
summary = "Retrieve details of an individual run by ID for a dataset",
5958
tags = ["Reconciliation Runs"],

Diff for: src/main/kotlin/recce/server/auth/AuthConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package recce.server.auth
33
import io.micronaut.context.annotation.ConfigurationInject
44
import io.micronaut.context.annotation.ConfigurationProperties
55
import jakarta.inject.Singleton
6-
import javax.validation.constraints.NotBlank
6+
import jakarta.validation.constraints.NotBlank
77

88
@Singleton
99
@ConfigurationProperties("auth")

Diff for: src/main/kotlin/recce/server/auth/BasicAuthenticationProvider.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import reactor.core.publisher.Flux
1111
import reactor.core.publisher.FluxSink
1212

1313
@Singleton
14-
class BasicAuthenticationProvider(private val authConfiguration: AuthConfiguration) : AuthenticationProvider {
14+
class BasicAuthenticationProvider(private val authConfiguration: AuthConfiguration) :
15+
AuthenticationProvider<HttpRequest<*>> {
1516
override fun authenticate(
1617
httpRequest: HttpRequest<*>?,
1718
authenticationRequest: AuthenticationRequest<*, *>

Diff for: src/main/kotlin/recce/server/dataset/DataLoadDefinition.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import io.micronaut.context.exceptions.ConfigurationException
66
import io.micronaut.data.r2dbc.operations.R2dbcOperations
77
import io.micronaut.inject.qualifiers.Qualifiers
88
import io.r2dbc.spi.Result
9+
import jakarta.validation.constraints.NotBlank
910
import org.jetbrains.annotations.TestOnly
1011
import reactor.core.publisher.Flux
1112
import reactor.kotlin.core.util.function.component1
@@ -14,7 +15,6 @@ import recce.server.DefaultsProvider
1415
import recce.server.PostConstructable
1516
import java.nio.file.Path
1617
import java.util.*
17-
import javax.validation.constraints.NotBlank
1818
import kotlin.io.path.readText
1919

2020
class DataLoadDefinition

Diff for: src/main/kotlin/recce/server/dataset/DatasetConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import io.micronaut.context.BeanLocator
44
import io.micronaut.core.annotation.Nullable
55
import io.micronaut.core.bind.annotation.Bindable
66
import io.micronaut.scheduling.cron.CronExpression
7+
import jakarta.validation.constraints.NotNull
78
import org.jetbrains.annotations.TestOnly
89
import recce.server.DefaultsProvider
910
import recce.server.PostConstructable
1011
import java.time.ZonedDateTime
1112
import java.util.*
12-
import javax.validation.constraints.NotNull
1313

1414
class DatasetConfiguration(
1515
@NotNull val source: DataLoadDefinition,

Diff for: src/test/kotlin/recce/server/dataset/datasource/FlywayMigrator.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package recce.server.dataset.datasource
22

3-
import io.micronaut.transaction.annotation.TransactionalAdvice
3+
import io.micronaut.transaction.annotation.Transactional
44
import jakarta.inject.Inject
55
import jakarta.inject.Named
66
import jakarta.inject.Singleton
@@ -9,7 +9,6 @@ import org.flywaydb.core.api.configuration.FluentConfiguration
99
import java.nio.file.Files
1010
import java.nio.file.Path
1111
import javax.sql.DataSource
12-
import javax.transaction.Transactional
1312

1413
@Singleton
1514
open class FlywayMigrator {
@@ -36,17 +35,15 @@ open class FlywayMigrator {
3635
@field:Named("target-h2-sync")
3736
lateinit var targetDataSource: DataSource
3837

39-
@Transactional
40-
@TransactionalAdvice(transactionManager = "source-h2-sync")
38+
@Transactional(transactionManager = "source-h2-sync")
4139
open fun cleanMigrateSource(
4240
tempDir: Path,
4341
sql: String = createTable + (0..2).joinToString("\n", transform = insertUser)
4442
) {
4543
flywayCleanMigrate(tempDir, sql) { it.dataSource(sourceDataSource) }
4644
}
4745

48-
@Transactional
49-
@TransactionalAdvice(transactionManager = "target-h2-sync")
46+
@Transactional(transactionManager = "target-h2-sync")
5047
open fun cleanMigrateTarget(
5148
tempDir: Path,
5249
sql: String = createTable + ((0..1) + (3..4)).joinToString("\n", transform = insertUser)

0 commit comments

Comments
 (0)