Skip to content

Commit 7f899df

Browse files
authored
[Kotlin Server] Update Ktor to latest version; move config to kts (#19727)
* [Kotlin Server] Update Ktor to latest version; move config to kts * Bump gradle version for kotlin server samples * Replace deprecated gradle API * Bump gradle to 7.6.4
1 parent 368b9b7 commit 7f899df

File tree

34 files changed

+355
-352
lines changed

34 files changed

+355
-352
lines changed

.github/workflows/samples-kotlin-server.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ on:
1717
# - samples/server/petstore/kotlin-spring-default/**
1818

1919
env:
20-
GRADLE_VERSION: 6.9
20+
GRADLE_VERSION: 7.6.4
2121

2222
jobs:
2323
build:

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,21 +272,21 @@ public void processOpts() {
272272

273273
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
274274

275-
if (library.equals(Constants.KTOR)) {
275+
if (isKtor()) {
276276
supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile"));
277277
}
278278

279279
String gradleBuildFile = "build.gradle";
280280

281-
if (isJavalin()) {
281+
if (isJavalin() || isKtor()) {
282282
gradleBuildFile = "build.gradle.kts";
283283
}
284284

285285
supportingFiles.add(new SupportingFile(gradleBuildFile + ".mustache", "", gradleBuildFile));
286286
supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle"));
287287
supportingFiles.add(new SupportingFile("gradle.properties", "", "gradle.properties"));
288288

289-
if (library.equals(Constants.KTOR)) {
289+
if (isKtor()) {
290290
supportingFiles.add(new SupportingFile("AppMain.kt.mustache", packageFolder, "AppMain.kt"));
291291
supportingFiles.add(new SupportingFile("Configuration.kt.mustache", packageFolder, "Configuration.kt"));
292292

@@ -300,6 +300,11 @@ public void processOpts() {
300300
final String infrastructureFolder = (sourceFolder + File.separator + packageName + File.separator + "infrastructure").replace(".", File.separator);
301301

302302
supportingFiles.add(new SupportingFile("ApiKeyAuth.kt.mustache", infrastructureFolder, "ApiKeyAuth.kt"));
303+
304+
if (!getOmitGradleWrapper()) {
305+
supportingFiles.add(new SupportingFile("gradle-wrapper.properties", "gradle" + File.separator + "wrapper", "gradle-wrapper.properties"));
306+
}
307+
303308
} else if (isJavalin()) {
304309
supportingFiles.add(new SupportingFile("Main.kt.mustache", packageFolder, "Main.kt"));
305310
apiTemplateFiles.put("service.mustache", "Service.kt");
@@ -412,4 +417,8 @@ public void setReturnContainer(final String returnContainer) {
412417
private boolean isJavalin() {
413418
return Constants.JAVALIN5.equals(library) || Constants.JAVALIN6.equals(library);
414419
}
420+
421+
private boolean isKtor() {
422+
return Constants.KTOR.equals(library);
423+
}
415424
}

modules/openapi-generator/src/main/resources/kotlin-server/libraries/jaxrs-spec/build.gradle.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ group "{{groupId}}"
22
version "{{artifactVersion}}"
33

44
wrapper {
5-
gradleVersion = '6.9'
5+
gradleVersion = '7.3'
66
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
77
}
88

modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/README.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ Generated by OpenAPI Generator {{generatorVersion}}{{^hideGenerationTimestamp}}
88

99
## Requires
1010

11-
* Kotlin 1.7.20
12-
* Gradle 7.4.2
11+
* Kotlin 2.0.20
12+
* Gradle 8.10.2
1313

1414
## Build
1515

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
2+
val kotlin_version: String by project
3+
val logback_version: String by project
4+
5+
group = "{{groupId}}"
6+
version = "{{artifactVersion}}"
7+
8+
plugins {
9+
kotlin("jvm") version "2.0.20"
10+
id("io.ktor.plugin") version "2.3.12"
11+
}
12+
13+
application {
14+
mainClass.set("io.ktor.server.netty.EngineMain")
15+
16+
val isDevelopment: Boolean = project.ext.has("development")
17+
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
18+
}
19+
20+
repositories {
21+
mavenCentral()
22+
}
23+
24+
dependencies {
25+
implementation("ch.qos.logback:logback-classic:$logback_version")
26+
{{#hasAuthMethods}}
27+
implementation("com.typesafe:config:1.4.1")
28+
{{/hasAuthMethods}}
29+
implementation("io.ktor:ktor-server-auth")
30+
{{#hasAuthMethods}}
31+
implementation("io.ktor:ktor-client-apache")
32+
{{/hasAuthMethods}}
33+
{{#featureAutoHead}}
34+
implementation("io.ktor:ktor-server-auto-head-response")
35+
{{/featureAutoHead}}
36+
implementation("io.ktor:ktor-server-default-headers")
37+
implementation("io.ktor:ktor-server-content-negotiation")
38+
implementation("io.ktor:ktor-serialization-gson")
39+
{{#featureResources}}
40+
implementation("io.ktor:ktor-server-resources")
41+
{{/featureResources}}
42+
{{#featureHSTS}}
43+
implementation("io.ktor:ktor-server-hsts")
44+
{{/featureHSTS}}
45+
{{#featureCORS}}
46+
implementation("io.ktor:ktor-server-cors")
47+
{{/featureCORS}}
48+
{{#featureConditionalHeaders}}
49+
implementation("io.ktor:ktor-server-conditional-headers")
50+
{{/featureConditionalHeaders}}
51+
{{#featureCompression}}
52+
implementation("io.ktor:ktor-server-compression")
53+
{{/featureCompression}}
54+
{{#featureMetrics}}
55+
implementation("io.dropwizard.metrics:metrics-core:4.1.18")
56+
implementation("io.ktor:ktor-server-metrics")
57+
{{/featureMetrics}}
58+
implementation("io.ktor:ktor-server-netty")
59+
60+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
61+
}

modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/build.gradle.mustache

Lines changed: 0 additions & 96 deletions
This file was deleted.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
org.gradle.caching=true
1+
kotlin.code.style=official
2+
ktor_version=2.3.12
3+
kotlin_version=2.0.20
4+
logback_version=1.4.14

modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,33 +37,33 @@ plugins {
3737

3838
dependencies {
3939
{{#reactive}} val kotlinxCoroutinesVersion = "1.6.1"
40-
{{/reactive}} compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
41-
compile("org.jetbrains.kotlin:kotlin-reflect"){{^reactive}}
42-
compile("org.springframework.boot:spring-boot-starter-web"){{/reactive}}{{#reactive}}
43-
compile("org.springframework.boot:spring-boot-starter-webflux")
44-
compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
45-
compile("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion"){{/reactive}}{{#springDocDocumentationProvider}}{{#useSwaggerUI}}
46-
compile("org.springdoc:springdoc-openapi-{{#reactive}}webflux-{{/reactive}}ui:1.6.8"){{/useSwaggerUI}}{{^useSwaggerUI}}
47-
compile("org.springdoc:springdoc-openapi-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-core:1.6.8"){{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#springFoxDocumentationProvider}}
48-
compile("io.springfox:springfox-swagger2:2.9.2"){{/springFoxDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
49-
compile("org.webjars:swagger-ui:4.10.3")
50-
compile("org.webjars:webjars-locator-core"){{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springFoxDocumentationProvider}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
51-
compile("io.swagger:swagger-annotations:1.6.6"){{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
52-
compile("io.swagger.core.v3:swagger-annotations:2.2.0"){{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}{{/springFoxDocumentationProvider}}
40+
{{/reactive}} implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
41+
implementation("org.jetbrains.kotlin:kotlin-reflect"){{^reactive}}
42+
implementation("org.springframework.boot:spring-boot-starter-web"){{/reactive}}{{#reactive}}
43+
implementation("org.springframework.boot:spring-boot-starter-webflux")
44+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
45+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion"){{/reactive}}{{#springDocDocumentationProvider}}{{#useSwaggerUI}}
46+
implementation("org.springdoc:springdoc-openapi-{{#reactive}}webflux-{{/reactive}}ui:1.6.8"){{/useSwaggerUI}}{{^useSwaggerUI}}
47+
implementation("org.springdoc:springdoc-openapi-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-core:1.6.8"){{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#springFoxDocumentationProvider}}
48+
implementation("io.springfox:springfox-swagger2:2.9.2"){{/springFoxDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
49+
implementation("org.webjars:swagger-ui:4.10.3")
50+
implementation("org.webjars:webjars-locator-core"){{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springFoxDocumentationProvider}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
51+
implementation("io.swagger:swagger-annotations:1.6.6"){{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
52+
implementation("io.swagger.core.v3:swagger-annotations:2.2.0"){{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}{{/springFoxDocumentationProvider}}
5353

54-
compile("com.google.code.findbugs:jsr305:3.0.2")
55-
compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
56-
compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
57-
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
58-
compile("com.fasterxml.jackson.module:jackson-module-kotlin")
54+
implementation("com.google.code.findbugs:jsr305:3.0.2")
55+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
56+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
57+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
58+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
5959
{{#useBeanValidation}}
60-
compile("javax.validation:validation-api"){{/useBeanValidation}}
61-
compile("javax.annotation:javax.annotation-api:1.3.2")
62-
testCompile("org.jetbrains.kotlin:kotlin-test-junit5")
63-
testCompile("org.springframework.boot:spring-boot-starter-test") {
60+
implementation("javax.validation:validation-api"){{/useBeanValidation}}
61+
implementation("javax.annotation:javax.annotation-api:1.3.2")
62+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
63+
testImplementation("org.springframework.boot:spring-boot-starter-test") {
6464
exclude(module = "junit")
6565
}
6666
{{#reactive}}
67-
testCompile("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion")
67+
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion")
6868
{{/reactive}}
6969
}

samples/server/others/kotlin-server/jaxrs-spec-array-response/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ group "org.openapitools"
22
version "1.0.0"
33

44
wrapper {
5-
gradleVersion = '6.9'
5+
gradleVersion = '7.3'
66
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
77
}
88

0 commit comments

Comments
 (0)