From 0a732869e92e33e47de9a1fb47219d32db9b651b Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Wed, 17 Mar 2021 11:15:54 +0100 Subject: [PATCH] KotlinToolingMetadata: Add schemaVersion property --- .../kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt | 1 + .../kotlin/org/jetbrains/kotlin/tooling/JsonConversion.kt | 2 ++ .../org/jetbrains/kotlin/tooling/KotlinToolingMetadata.kt | 5 ++++- .../org/jetbrains/kotlin/tooling/DeserializeStringTest.kt | 4 +++- .../jetbrains/kotlin/tooling/SerializeAndDeserializeTest.kt | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt index cc6da4d5d79..27e365ca4b2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt @@ -77,6 +77,7 @@ open class BuildKotlinToolingMetadataTask : DefaultTask() { private fun KotlinProjectExtension.getKotlinToolingMetadata(): KotlinToolingMetadata { return KotlinToolingMetadata( + schemaVersion = KotlinToolingMetadata.currentSchemaVersion, buildSystem = "Gradle", buildSystemVersion = project.gradle.gradleVersion, buildPlugin = project.plugins.withType(KotlinBasePluginWrapper::class.java).joinToString(";") { it.javaClass.canonicalName }, diff --git a/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/JsonConversion.kt b/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/JsonConversion.kt index dfed5b137b1..7459455974e 100644 --- a/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/JsonConversion.kt +++ b/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/JsonConversion.kt @@ -16,6 +16,7 @@ fun KotlinToolingMetadata.toJsonString(): String { internal fun KotlinToolingMetadata.toJsonObject(): JsonObject { return JsonObject().apply { + addProperty("schemaVersion", schemaVersion) addProperty("buildSystem", buildSystem) addProperty("buildSystemVersion", buildSystemVersion) addProperty("buildPlugin", buildPlugin) @@ -118,6 +119,7 @@ fun KotlinToolingMetadata.Companion.parseJsonOrThrow(value: String): KotlinTooli private fun JsonObject.toKotlinToolingMetadataOrThrow(): KotlinToolingMetadata { return KotlinToolingMetadata( + schemaVersion = getOrThrow("schemaVersion").asString, buildSystem = getOrThrow("buildSystem").asString, buildSystemVersion = getOrThrow("buildSystemVersion").asString, buildPlugin = getOrThrow("buildPlugin").asString, diff --git a/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/KotlinToolingMetadata.kt b/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/KotlinToolingMetadata.kt index 46b675ff370..c54ca3c7c96 100644 --- a/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/KotlinToolingMetadata.kt +++ b/libraries/tools/kotlin-tooling-metadata/src/main/kotlin/org/jetbrains/kotlin/tooling/KotlinToolingMetadata.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.tooling data class KotlinToolingMetadata( + val schemaVersion: String, /** * Build System used (e.g. Gradle, Maven, ...) */ @@ -66,7 +67,9 @@ data class KotlinToolingMetadata( ) } - companion object + companion object { + const val currentSchemaVersion: String = "1.0.0" + } } diff --git a/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/DeserializeStringTest.kt b/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/DeserializeStringTest.kt index 9c2db963bf7..9bca4a1f986 100644 --- a/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/DeserializeStringTest.kt +++ b/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/DeserializeStringTest.kt @@ -21,9 +21,10 @@ import kotlin.test.assertNull class DeserializeStringTest { @Test - fun sample1() { + fun `schemaVersion 1 0 0`() { @Language("JSON") val json = """ { + "schemaVersion": "1.0.0", "buildSystem": "Gradle", "buildSystemVersion": "6.7", "buildPlugin": "org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper", @@ -83,6 +84,7 @@ class DeserializeStringTest { """.trimIndent() val metadata = KotlinToolingMetadata.parseJsonOrThrow(json) + assertEquals("1.0.0", metadata.schemaVersion) assertEquals("Gradle", metadata.buildSystem) assertEquals("6.7", metadata.buildSystemVersion) assertEquals("org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper", metadata.buildPlugin) diff --git a/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/SerializeAndDeserializeTest.kt b/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/SerializeAndDeserializeTest.kt index d5e112ac993..a1f32907ac5 100644 --- a/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/SerializeAndDeserializeTest.kt +++ b/libraries/tools/kotlin-tooling-metadata/src/test/kotlin/org/jetbrains/kotlin/tooling/SerializeAndDeserializeTest.kt @@ -84,6 +84,7 @@ private fun assertDeserializedMatchesOrigin(origin: KotlinToolingMetadata) { private fun defaultKotlinToolingMetadata(): KotlinToolingMetadata { return KotlinToolingMetadata( + schemaVersion = KotlinToolingMetadata.currentSchemaVersion, buildSystem = "generic build system", buildSystemVersion = "v1.0 (build system)", buildPlugin = "generic build plugin",