Skip to content

Commit 5ac507c

Browse files
committed
Added kotlinx.serialization
^KTL-114 Fixed
1 parent 03ca5d5 commit 5ac507c

File tree

12 files changed

+95
-16
lines changed

12 files changed

+95
-16
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ fun generateProperties(prefix: String = "") = """
108108
libraries.folder.wasm=${prefix + libWasm}
109109
libraries.folder.compose-wasm=${prefix + libComposeWasm}
110110
libraries.folder.compose-wasm-compiler-plugins=${prefix + libComposeWasmCompilerPlugins}
111+
libraries.folder.compiler-plugins=${prefix + compilerPluginsForJVM}
111112
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
112113
server.compression.enabled=true
113114
server.compression.mime-types=application/json,text/javascript,application/wasm
@@ -147,6 +148,7 @@ val buildLambda by tasks.creating(Zip::class) {
147148
from(libWasmFolder) { into(libWasm) }
148149
from(libComposeWasmFolder) { into(libComposeWasm) }
149150
from(libJVMFolder) { into(libJVM) }
151+
from(compilerPluginsForJVMFolder) {into(compilerPluginsForJVM)}
150152
from(libComposeWasmCompilerPluginsFolder) { into(libComposeWasmCompilerPlugins) }
151153
into("lib") {
152154
from(configurations.compileClasspath) { exclude("tomcat-embed-*") }

buildSrc/src/main/kotlin/properties.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ val indexesComposeWasm: String by System.getProperties()
1212
val Project.kotlinVersion
1313
get() = the<LibrariesForLibs>().versions.kotlin.get()
1414

15+
16+
val Project.libJVM
17+
get() = kotlinVersion
18+
val Project.compilerPluginsForJVM
19+
get() = "$kotlinVersion-compiler-plugins"
1520
val Project.libJS
1621
get() = "$kotlinVersion-js"
1722
val Project.libWasm
@@ -20,8 +25,12 @@ val Project.libComposeWasm
2025
get() = "$kotlinVersion-compose-wasm"
2126
val Project.libComposeWasmCompilerPlugins
2227
get() = "$kotlinVersion-compose-wasm-compiler-plugins"
23-
val Project.libJVM
24-
get() = kotlinVersion
28+
29+
val Project.libJVMFolder
30+
get() = rootProject.layout.projectDirectory.dir(libJVM)
31+
32+
val Project.compilerPluginsForJVMFolder
33+
get() = rootProject.layout.projectDirectory.dir(compilerPluginsForJVM)
2534

2635
val Project.libJSFolder
2736
get() = rootProject.layout.projectDirectory.dir(libJS)
@@ -33,7 +42,4 @@ val Project.libComposeWasmFolder
3342
get() = rootProject.layout.projectDirectory.dir(libComposeWasm)
3443

3544
val Project.libComposeWasmCompilerPluginsFolder
36-
get() = rootProject.layout.projectDirectory.dir(libComposeWasmCompilerPlugins)
37-
38-
val Project.libJVMFolder
39-
get() = rootProject.layout.projectDirectory.dir(libJVM)
45+
get() = rootProject.layout.projectDirectory.dir(libComposeWasmCompilerPlugins)

common/src/main/kotlin/component/KotlinEnvironment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class KotlinEnvironment(
3131
additionalWasmClasspath: List<File>,
3232
additionalComposeWasmClasspath: List<File>,
3333
composeWasmCompilerPlugins: List<File>,
34-
composeWasmCompilerPluginsOptions: List<CompilerPluginOption>
34+
val compilerPlugins: List<File> = emptyList(),
35+
composeWasmCompilerPluginsOptions: List<CompilerPluginOption>,
3536
) {
3637
companion object {
3738
/**

dependencies/build.gradle.kts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ val kotlinDependency: Configuration by configurations.creating {
66
isTransitive = false
77
}
88

9+
val kotlinCompilerPluginDependency: Configuration by configurations.creating {
10+
isTransitive = false
11+
isCanBeResolved = true
12+
isCanBeConsumed = false
13+
}
14+
915
val kotlinJsDependency: Configuration by configurations.creating {
1016
isCanBeResolved = true
1117
isCanBeConsumed = false
@@ -64,6 +70,12 @@ val copyDependencies by tasks.creating(Copy::class) {
6470
from(kotlinDependency)
6571
into(libJVMFolder)
6672
}
73+
74+
val copyCompilerPluginDependencies by tasks.creating(Copy::class) {
75+
from(kotlinCompilerPluginDependency)
76+
into(compilerPluginsForJVMFolder)
77+
}
78+
6779
val copyJSDependencies by tasks.creating(Copy::class) {
6880
from(kotlinJsDependency)
6981
into(libJSFolder)
@@ -97,8 +109,11 @@ dependencies {
97109
kotlinDependency(libs.kotlin.test)
98110
kotlinDependency(libs.kotlinx.coroutines.core.jvm)
99111
kotlinDependency(libs.kotlinx.coroutines.test)
100-
kotlinDependency(libs.kotlinx.io.core)
101112
kotlinDependency(libs.kotlinx.datetime)
113+
kotlinDependency(libs.kotlinx.io.core)
114+
kotlinDependency(libs.kotlinx.serialization.json.jvm)
115+
kotlinDependency(libs.kotlinx.serialization.core.jvm)
116+
kotlinCompilerPluginDependency(libs.kotlin.serialization.plugin)
102117
kotlinJsDependency(libs.kotlin.stdlib.js)
103118
kotlinJsDependency(libs.kotlin.dom.api.compat)
104119
kotlinWasmDependency(libs.kotlin.stdlib.wasm.js)

gradle/libs.versions.toml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ logstash-logback-encoder = "7.3"
1111
trove4j = "1.0.20221201"
1212
kotlinx-coroutines = "1.7.3"
1313
kotlinx-coroutines-test = "1.6.4"
14+
kotlinx-datetime = "0.6.0-RC.2"
15+
kotlinx-io-core = "0.5.1"
16+
kotlinx-serialization = "1.7.1"
1417
skiko = "0.7.90"
1518
# don't forget to update jackson version in `executor.policy` file.
1619
jackson = "2.14.0"
1720
hamcrest = "2.2"
1821
compose = "1.6.0"
19-
kotlinx-datetime = "0.6.0-RC.2"
20-
kotlinx-io-core = "0.5.1"
2122

2223
[libraries]
2324
kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
@@ -40,6 +41,8 @@ kotlinx-coroutines-core-jvm = { group = "org.jetbrains.kotlinx", name = "kotlinx
4041
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test" }
4142
kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinx-datetime" }
4243
kotlinx-io-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-io-core", version.ref = "kotlinx-io-core" }
44+
kotlinx-serialization-json-jvm = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json-jvm", version.ref = "kotlinx-serialization" }
45+
kotlinx-serialization-core-jvm = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core-jvm", version.ref = "kotlinx-serialization" }
4346
springfox-boot-starter = { group = "io.springfox", name = "springfox-boot-starter", version.ref = "springfox-boot-starter" }
4447
aws-springboot-container = { group = "com.amazonaws.serverless", name = "aws-serverless-java-container-springboot2", version.ref = "aws-serverless-java-container-springboot2" }
4548
junit = { group = "junit", name = "junit", version.ref = "junit" }
@@ -57,7 +60,7 @@ compose-animation-graphics = { group = "org.jetbrains.compose.animation", name =
5760
compose-foundation = { group = "org.jetbrains.compose.foundation", name = "foundation", version.ref = "compose" }
5861
compose-material = { group = "org.jetbrains.compose.material", name = "material", version.ref = "compose" }
5962
compose-components-resources = { group = "org.jetbrains.compose.components", name = "components-resources", version.ref = "compose" }
60-
63+
kotlin-serialization-plugin = {group= "org.jetbrains.kotlin", name="kotlin-serialization-compiler-plugin", version.ref = "kotlin"}
6164

6265
[bundles]
6366
kotlin-stdlib = ["kotlin-stdlib", "kotlin-stdlib-jdk7", "kotlin-stdlib-jdk8"]

indexation/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ application {
1717
tasks.withType<JavaExec> {
1818
dependsOn(":executors:jar")
1919
dependsOn(":dependencies:copyDependencies")
20+
dependsOn(":dependencies:copyCompilerPluginDependencies")
2021
dependsOn(":dependencies:copyJSDependencies")
2122
dependsOn(":dependencies:copyWasmDependencies")
2223
dependsOn(":dependencies:copyComposeWasmCompilerPlugins")
@@ -29,6 +30,7 @@ tasks.withType<JavaExec> {
2930

3031
// Adding classpath directories as task input for up-to-date checks
3132
inputs.dir(libJVMFolder)
33+
inputs.dir(compilerPluginsForJVMFolder)
3234
inputs.dir(libJSFolder)
3335
inputs.dir(libWasmFolder)
3436
inputs.dir(libComposeWasmFolder)

indexation/src/main/kotlin/KotlinEnvironmentConfiguration.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class KotlinEnvironmentConfiguration(
3232
additionalWasmClasspath,
3333
additionalComposeWasmClasspath,
3434
composeWasmCompilerPlugins,
35+
emptyList(),
3536
listOf(
3637
CompilerPluginOption(
3738
"androidx.compose.compiler.plugins.kotlin",

src/main/kotlin/com/compiler/server/compiler/components/KotlinCompiler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ class KotlinCompiler(
9797
"-module-name", "web-module",
9898
"-no-stdlib", "-no-reflect",
9999
"-progressive",
100-
"-d", outputDir.absolutePathString()
101-
)
100+
"-d", outputDir.absolutePathString(),
101+
) + kotlinEnvironment.compilerPlugins.map { plugin -> "-Xplugin=${plugin.absolutePath}" }
102102
K2JVMCompiler().tryCompilation(inputDir, ioFiles, arguments) {
103103
val outputFiles = buildMap {
104104
outputDir.visitFileTree {

src/main/kotlin/com/compiler/server/compiler/components/KotlinEnvironment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import org.springframework.context.annotation.Configuration
99

1010
@Configuration
1111
class KotlinEnvironmentConfiguration(
12-
val versionInfo: VersionInfo,
1312
val librariesFile: LibrariesFile
1413
) {
1514
@Bean
@@ -25,13 +24,15 @@ class KotlinEnvironmentConfiguration(
2524
val additionalWasmClasspath = librariesFile.wasm.listFiles()?.toList() ?: emptyList()
2625
val additionalComposeWasmClasspath = librariesFile.composeWasm.listFiles()?.toList() ?: emptyList()
2726
val composeWasmCompilerPlugins = librariesFile.composeWasmComposeCompiler.listFiles()?.toList() ?: emptyList()
27+
val compilerPlugins = librariesFile.compilerPlugins.listFiles()?.toList() ?: emptyList()
2828

2929
return KotlinEnvironment(
3030
classPath,
3131
additionalJsClasspath,
3232
additionalWasmClasspath,
3333
additionalComposeWasmClasspath,
3434
composeWasmCompilerPlugins,
35+
compilerPlugins,
3536
listOf(
3637
CompilerPluginOption(
3738
"androidx.compose.compiler.plugins.kotlin",

src/main/kotlin/com/compiler/server/configuration/ApplicationConfiguration.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class ApplicationConfiguration(
3333
File(librariesFolderProperties.js),
3434
File(librariesFolderProperties.wasm),
3535
File(librariesFolderProperties.composeWasm),
36-
File(librariesFolderProperties.composeWasmCompilerPlugins)
36+
File(librariesFolderProperties.composeWasmCompilerPlugins),
37+
File(librariesFolderProperties.compilerPlugins)
3738
)
3839
}
3940

@@ -44,4 +45,5 @@ class LibrariesFolderProperties {
4445
lateinit var wasm: String
4546
lateinit var composeWasm: String
4647
lateinit var composeWasmCompilerPlugins: String
48+
lateinit var compilerPlugins: String
4749
}

0 commit comments

Comments
 (0)