[Gradle] kgp-idea-proto: Add public API for extras serialisation
KT-55926
This commit is contained in:
committed by
Space Team
parent
54db04e0f4
commit
d0bb804e85
+5
@@ -1,3 +1,8 @@
|
||||
public final class org/jetbrains/kotlin/gradle/idea/proto/ExtrasKt {
|
||||
public static final fun Extras (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinSerializationContext;[B)Lorg/jetbrains/kotlin/tooling/core/MutableExtras;
|
||||
public static final fun toByteArray (Lorg/jetbrains/kotlin/tooling/core/Extras;Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinSerializationContext;)[B
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/idea/proto/kpm/KpmIdeaProto {
|
||||
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinSerializationContext;Ljava/io/InputStream;)Lorg/jetbrains/kotlin/gradle/idea/kpm/IdeaKpmProject;
|
||||
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinSerializationContext;Ljava/nio/ByteBuffer;)Lorg/jetbrains/kotlin/gradle/idea/kpm/IdeaKpmProject;
|
||||
|
||||
+16
@@ -8,12 +8,28 @@
|
||||
package org.jetbrains.kotlin.gradle.idea.proto
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import com.google.protobuf.InvalidProtocolBufferException
|
||||
import org.jetbrains.kotlin.gradle.idea.proto.generated.IdeaExtrasProto
|
||||
import org.jetbrains.kotlin.gradle.idea.proto.generated.ideaExtrasProto
|
||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
|
||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinSerializationContext
|
||||
import org.jetbrains.kotlin.tooling.core.*
|
||||
|
||||
fun Extras.toByteArray(context: IdeaKotlinSerializationContext): ByteArray {
|
||||
return context.IdeaExtrasProto(this).toByteArray()
|
||||
}
|
||||
|
||||
fun IdeaKotlinSerializationContext.Extras(data: ByteArray): MutableExtras? {
|
||||
return try {
|
||||
val proto = IdeaExtrasProto.parseFrom(data)
|
||||
Extras(proto)
|
||||
|
||||
} catch (e: InvalidProtocolBufferException) {
|
||||
logger.error("Failed to deserialize Extras", e)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unchecked_cast")
|
||||
internal fun IdeaKotlinSerializationContext.IdeaExtrasProto(extras: Extras): IdeaExtrasProto {
|
||||
val context = this
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.TestIdeaKotlinInstances
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.toMutableExtras
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.fail
|
||||
|
||||
class ExtrasSerializationTest : AbstractSerializationTest<MutableExtras>() {
|
||||
override fun serialize(value: MutableExtras): ByteArray = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray): MutableExtras = Extras(data) ?: fail()
|
||||
|
||||
@Test
|
||||
fun `sample - extrasWithIntAndStrings`() = testSerialization(TestIdeaKotlinInstances.extrasWithIntAndStrings.toMutableExtras())
|
||||
|
||||
@Test
|
||||
fun `sample - emptyExtras`() = testSerialization(mutableExtrasOf())
|
||||
}
|
||||
Reference in New Issue
Block a user