mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
[kotlin] Added Gson utilities and reduced code duplication
Follow-up to KTIJ-15746 GitOrigin-RevId: cf77b9d8f6b911741a944828e060c4dca080d030
This commit is contained in:
committed by
intellij-monorepo-bot
parent
579e81d436
commit
3bc44958d6
@@ -10,19 +10,18 @@ internal object GradleCompatibilityDataParser : IdeVersionedDataParser<GradleCom
|
||||
}
|
||||
|
||||
override fun parseJson(data: JsonObject): GradleCompatibilityState? {
|
||||
val supportedJavaVersionsArr = data["supportedJavaVersions"]?.takeIf { it.isJsonArray }?.asJsonArray ?: return null
|
||||
val supportedGradleVersionsArr = data["supportedGradleVersions"]?.takeIf { it.isJsonArray }?.asJsonArray ?: return null
|
||||
val compatibilityArr = data["compatibility"]?.takeIf { it.isJsonArray }?.asJsonArray ?: return null
|
||||
val supportedJavaVersionsArr = data["supportedJavaVersions"]?.asSafeJsonArray ?: return null
|
||||
val supportedGradleVersionsArr = data["supportedGradleVersions"]?.asSafeJsonArray ?: return null
|
||||
val compatibilityArr = data["compatibility"]?.asSafeJsonArray ?: return null
|
||||
|
||||
val supportedJavaVersions = supportedJavaVersionsArr.parseVersions()
|
||||
val supportedGradleVersions = supportedGradleVersionsArr.parseVersions()
|
||||
val versionMappings = compatibilityArr
|
||||
.filter { it.isJsonObject }
|
||||
.mapNotNull { element ->
|
||||
val obj = element.asJsonObject
|
||||
val obj = element.asSafeJsonObject ?: return@mapNotNull null
|
||||
val versionMapping = VersionMapping()
|
||||
versionMapping.javaVersionInfo = obj["java"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionMapping.gradleVersionInfo = obj["gradle"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionMapping.javaVersionInfo = obj["java"]?.asSafeString ?: return@mapNotNull null
|
||||
versionMapping.gradleVersionInfo = obj["gradle"]?.asSafeString ?: return@mapNotNull null
|
||||
versionMapping
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.jvmcompat
|
||||
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
|
||||
// Gson utility functions that return null if an element is not the correct type, rather than throwing an exception
|
||||
|
||||
val JsonElement.asSafeJsonObject: JsonObject?
|
||||
get() = takeIf { it.isJsonObject }?.asJsonObject
|
||||
|
||||
val JsonElement.asSafeJsonArray: JsonArray?
|
||||
get() = takeIf { it.isJsonArray }?.asJsonArray
|
||||
|
||||
val JsonElement.asSafeString: String?
|
||||
get() = runCatching { asString }.getOrNull()
|
||||
@@ -5,9 +5,7 @@ import com.google.gson.JsonObject
|
||||
import com.intellij.openapi.components.State
|
||||
import com.intellij.openapi.components.Storage
|
||||
import com.intellij.openapi.components.service
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataParser
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataState
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataStorage
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.*
|
||||
|
||||
class DependencyVersionState() : IdeVersionedDataState() {
|
||||
constructor(versions: Map<String, String>) : this() {
|
||||
@@ -23,11 +21,11 @@ class DependencyVersionState() : IdeVersionedDataState() {
|
||||
|
||||
internal object DependencyVersionParser : IdeVersionedDataParser<DependencyVersionState>() {
|
||||
override fun parseJson(data: JsonObject): DependencyVersionState? {
|
||||
val obj = data.takeIf { it.isJsonObject }?.asJsonObject ?: return null
|
||||
val obj = data.asSafeJsonObject ?: return null
|
||||
|
||||
val versions = obj.asMap().mapNotNull { (key, value) ->
|
||||
if (key == "ideVersion") return@mapNotNull null
|
||||
val version = value.takeIf { value.isJsonPrimitive }?.asString ?: return@mapNotNull null
|
||||
val version = value.asSafeString ?: return@mapNotNull null
|
||||
key to version
|
||||
}.toMap()
|
||||
|
||||
|
||||
@@ -9,9 +9,7 @@ import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.util.Version
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.IdeKotlinVersion
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataParser
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataState
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataStorage
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.*
|
||||
import org.jetbrains.plugins.gradle.util.Ranges
|
||||
|
||||
class KotlinGradleVersionMapping() : BaseState() {
|
||||
@@ -42,19 +40,19 @@ class KotlinGradleCompatibilityState() : IdeVersionedDataState() {
|
||||
|
||||
internal object KotlinGradleCompatibilityParser : IdeVersionedDataParser<KotlinGradleCompatibilityState>() {
|
||||
override fun parseJson(data: JsonObject): KotlinGradleCompatibilityState? {
|
||||
val kotlinVersionsArr = data["kotlinVersions"]?.takeIf { it.isJsonArray }?.asJsonArray ?: return null
|
||||
val kotlinVersionsArr = data["kotlinVersions"]?.asSafeJsonArray ?: return null
|
||||
val kotlinVersions = kotlinVersionsArr.mapNotNull { entry ->
|
||||
val str = entry.takeIf { it.isJsonPrimitive }?.asString ?: return@mapNotNull null
|
||||
val str = entry.asSafeString ?: return@mapNotNull null
|
||||
Version.parseVersion(str)?.toString()
|
||||
}
|
||||
|
||||
val compatibilityArr = data["compatibility"]?.takeIf { it.isJsonArray }?.asJsonArray ?: return null
|
||||
val compatibilityArr = data["compatibility"]?.asSafeJsonArray ?: return null
|
||||
|
||||
val compatibility = compatibilityArr.mapNotNull { entry ->
|
||||
val obj = entry.takeIf { it.isJsonObject }?.asJsonObject ?: return@mapNotNull null
|
||||
val kotlin = obj["kotlin"]?.takeIf { it.isJsonPrimitive }?.asString ?: return@mapNotNull null
|
||||
val gradle = obj["gradle"]?.takeIf { it.isJsonPrimitive }?.asString ?: return@mapNotNull null
|
||||
val comment = obj["comment"]?.takeIf { it.isJsonPrimitive }?.asString
|
||||
val obj = entry.asSafeJsonObject ?: return@mapNotNull null
|
||||
val kotlin = obj["kotlin"]?.asSafeString ?: return@mapNotNull null
|
||||
val gradle = obj["gradle"]?.asSafeString ?: return@mapNotNull null
|
||||
val comment = obj["comment"]?.asSafeString
|
||||
KotlinGradleVersionMapping(kotlin, gradle, comment)
|
||||
}
|
||||
|
||||
|
||||
@@ -5,24 +5,22 @@ import com.google.gson.JsonObject
|
||||
import com.intellij.openapi.components.State
|
||||
import com.intellij.openapi.components.Storage
|
||||
import com.intellij.openapi.components.service
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataParser
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataState
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.IdeVersionedDataStorage
|
||||
import org.jetbrains.plugins.gradle.jvmcompat.*
|
||||
|
||||
internal object KotlinWizardVersionParser : IdeVersionedDataParser<KotlinWizardVersionState>() {
|
||||
override fun parseJson(data: JsonObject): KotlinWizardVersionState? {
|
||||
val obj = data.takeIf { it.isJsonObject }?.asJsonObject ?: return null
|
||||
val obj = data.asSafeJsonObject ?: return null
|
||||
|
||||
val versionData = KotlinWizardVersionState()
|
||||
|
||||
versionData.kotlinPluginVersion = obj["kotlinVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.kotlinForComposeVersion = obj["kotlinForComposeVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.composeCompilerExtension = obj["composeCompilerExtension"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.minGradleFoojayVersion = obj["minGradleFoojayVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.gradleAndroidVersion = obj["gradleAndroidVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.foojayVersion = obj["foojayVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.failsafeVersion = obj["failsafeVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.surefireVersion = obj["surefireVersion"]?.takeIf { it.isJsonPrimitive }?.asString ?: return null
|
||||
versionData.kotlinPluginVersion = obj["kotlinVersion"]?.asSafeString ?: return null
|
||||
versionData.kotlinForComposeVersion = obj["kotlinForComposeVersion"]?.asSafeString ?: return null
|
||||
versionData.composeCompilerExtension = obj["composeCompilerExtension"]?.asSafeString ?: return null
|
||||
versionData.minGradleFoojayVersion = obj["minGradleFoojayVersion"]?.asSafeString ?: return null
|
||||
versionData.gradleAndroidVersion = obj["gradleAndroidVersion"]?.asSafeString ?: return null
|
||||
versionData.foojayVersion = obj["foojayVersion"]?.asSafeString ?: return null
|
||||
versionData.failsafeVersion = obj["failsafeVersion"]?.asSafeString ?: return null
|
||||
versionData.surefireVersion = obj["surefireVersion"]?.asSafeString ?: return null
|
||||
|
||||
return versionData
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user