Skip to content

Commit ffcbd5d

Browse files
committed
revert
1 parent db24bab commit ffcbd5d

File tree

7 files changed

+7
-122
lines changed

7 files changed

+7
-122
lines changed

src/commonMain/kotlin/spp.protocol/instrument/LiveInstrument.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package spp.protocol.instrument
22

33
import kotlinx.serialization.Contextual
44
import kotlinx.serialization.Serializable
5-
import kotlinx.serialization.json.JsonClassDiscriminator
65

76
/**
87
* todo: description.
@@ -11,7 +10,6 @@ import kotlinx.serialization.json.JsonClassDiscriminator
1110
* @author [Brandon Fergerson](mailto:bfergerson@apache.org)
1211
*/
1312
@Serializable
14-
@JsonClassDiscriminator("type")
1513
abstract class LiveInstrument {
1614
abstract val location: LiveSourceLocation
1715
abstract val condition: String?

src/commonMain/kotlin/spp.protocol/instrument/breakpoint/LiveBreakpoint.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package spp.protocol.instrument.breakpoint
22

33
import kotlinx.serialization.Contextual
4-
import kotlinx.serialization.SerialName
54
import kotlinx.serialization.Serializable
6-
import kotlinx.serialization.json.JsonClassDiscriminator
75
import spp.protocol.instrument.InstrumentThrottle
86
import spp.protocol.instrument.LiveInstrument
97
import spp.protocol.instrument.LiveInstrumentType
@@ -16,8 +14,6 @@ import spp.protocol.instrument.LiveSourceLocation
1614
* @author [Brandon Fergerson](mailto:bfergerson@apache.org)
1715
*/
1816
@Serializable
19-
@SerialName("BREAKPOINT")
20-
@JsonClassDiscriminator("type")
2117
data class LiveBreakpoint(
2218
override val location: LiveSourceLocation,
2319
override val condition: String? = null,

src/commonMain/kotlin/spp.protocol/instrument/log/LiveLog.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import spp.protocol.instrument.LiveInstrument
55
import spp.protocol.instrument.LiveInstrumentType
66
import spp.protocol.instrument.LiveSourceLocation
77
import kotlinx.serialization.Contextual
8-
import kotlinx.serialization.SerialName
98
import kotlinx.serialization.Serializable
109

1110
/**
@@ -15,7 +14,6 @@ import kotlinx.serialization.Serializable
1514
* @author [Brandon Fergerson](mailto:bfergerson@apache.org)
1615
*/
1716
@Serializable
18-
@SerialName("LOG")
1917
data class LiveLog(
2018
val logFormat: String,
2119
val logArguments: List<String> = emptyList(),

src/commonMain/kotlin/spp.protocol/instrument/meter/LiveMeter.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package spp.protocol.instrument.meter
22

33
import kotlinx.serialization.Contextual
4-
import kotlinx.serialization.SerialName
54
import kotlinx.serialization.Serializable
65
import spp.protocol.instrument.InstrumentThrottle
76
import spp.protocol.instrument.LiveInstrument
@@ -14,7 +13,6 @@ import spp.protocol.instrument.LiveSourceLocation
1413
* @author [Brandon Fergerson](mailto:bfergerson@apache.org)
1514
*/
1615
@Serializable
17-
@SerialName("METER")
1816
data class LiveMeter(
1917
val meterName: String,
2018
val meterType: MeterType,

src/jvmMain/kotlin/spp/protocol/ProtocolMarshaller.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,7 @@ object ProtocolMarshaller {
9494

9595
@JvmStatic
9696
fun serializeLiveInstrument(value: LiveInstrument): JsonObject {
97-
val valueObject = when (value) {
98-
is LiveBreakpoint -> JsonObject(KSerializers.json.encodeToString(LiveBreakpoint.serializer(), value))
99-
is LiveLog -> JsonObject(KSerializers.json.encodeToString(LiveLog.serializer(), value))
100-
is LiveMeter -> JsonObject(KSerializers.json.encodeToString(LiveMeter.serializer(), value))
101-
else -> throw IllegalArgumentException("Unknown LiveInstrument type: ${value::class.java.name}")
102-
}
103-
97+
val valueObject = JsonObject(Json.encode(value))
10498
//force persistence of "type" as graalvm's native-image drops it for some reason
10599
when (value) {
106100
is LiveBreakpoint -> valueObject.put("type", LiveInstrumentType.BREAKPOINT.name)
@@ -114,11 +108,11 @@ object ProtocolMarshaller {
114108
@JvmStatic
115109
fun deserializeLiveInstrument(value: JsonObject): LiveInstrument {
116110
return if (value.getString("type") == "BREAKPOINT") {
117-
KSerializers.json.decodeFromString(LiveBreakpoint.serializer(), value.toString())
111+
value.mapTo(LiveBreakpoint::class.java)
118112
} else if (value.getString("type") == "LOG") {
119-
KSerializers.json.decodeFromString(LiveLog.serializer(), value.toString())
113+
value.mapTo(LiveLog::class.java)
120114
} else if (value.getString("type") == "METER") {
121-
KSerializers.json.decodeFromString(LiveMeter.serializer(), value.toString())
115+
value.mapTo(LiveMeter::class.java)
122116
} else {
123117
throw UnsupportedOperationException("Live instrument type: " + value.getString("type"))
124118
}
@@ -161,7 +155,7 @@ object ProtocolMarshaller {
161155

162156
@JvmStatic
163157
fun deserializeLiveSourceLocation(value: JsonObject): LiveSourceLocation {
164-
return kotlinx.serialization.json.Json.decodeFromString(LiveSourceLocation.serializer(), value.toString())
158+
return value.mapTo(LiveSourceLocation::class.java)
165159
}
166160

167161
@JvmStatic

src/jvmMain/kotlin/spp/protocol/probe/command/LiveInstrumentContext.kt

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,8 @@ package spp.protocol.probe.command
33
import com.fasterxml.jackson.annotation.JsonIgnore
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
55
import io.vertx.core.json.Json
6-
import kotlinx.serialization.encodeToString
76
import spp.protocol.instrument.LiveInstrument
87
import spp.protocol.instrument.LiveSourceLocation
9-
import spp.protocol.instrument.breakpoint.LiveBreakpoint
10-
import spp.protocol.instrument.log.LiveLog
11-
import spp.protocol.instrument.meter.LiveMeter
12-
import spp.protocol.util.KSerializers
138
import java.io.Serializable
149
import java.util.stream.Collectors
1510

@@ -25,17 +20,7 @@ data class LiveInstrumentContext(
2520
get() = instruments.toList()
2621

2722
fun addLiveInstrument(liveInstrument: LiveInstrument): LiveInstrumentContext {
28-
when (liveInstrument) {
29-
is LiveBreakpoint -> {
30-
instruments.add(KSerializers.json.encodeToString(liveInstrument))
31-
}
32-
is LiveLog -> {
33-
instruments.add(KSerializers.json.encodeToString(LiveLog.serializer(), liveInstrument))
34-
}
35-
is LiveMeter -> {
36-
instruments.add(KSerializers.json.encodeToString(LiveMeter.serializer(), liveInstrument))
37-
}
38-
}
23+
instruments.add(Json.encode(liveInstrument))
3924
return this
4025
}
4126

@@ -54,7 +39,7 @@ data class LiveInstrumentContext(
5439
}
5540

5641
fun addLocation(location: LiveSourceLocation) {
57-
locations.add(KSerializers.json.encodeToString(LiveSourceLocation.serializer(), location))
42+
locations.add(Json.encode(location))
5843
}
5944

6045
fun <T> getLocationsCast(clazz: Class<T>): List<T> {

src/jvmMain/kotlin/spp/protocol/util/KSerializers.kt

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,6 @@ import com.fasterxml.jackson.core.JsonGenerator
44
import com.fasterxml.jackson.core.JsonParser
55
import com.fasterxml.jackson.databind.*
66
import kotlinx.datetime.Instant
7-
import kotlinx.serialization.ContextualSerializer
8-
import kotlinx.serialization.KSerializer
9-
import kotlinx.serialization.builtins.serializer
10-
import kotlinx.serialization.descriptors.PrimitiveKind
11-
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
12-
import kotlinx.serialization.descriptors.SerialDescriptor
13-
import kotlinx.serialization.encoding.Decoder
14-
import kotlinx.serialization.encoding.Encoder
15-
import kotlinx.serialization.json.*
16-
import kotlinx.serialization.modules.SerializersModule
17-
import spp.protocol.instrument.LiveVariable
18-
import java.util.concurrent.atomic.AtomicInteger
197

208
/**
219
* Used to serialize/deserialize Kotlin classes.
@@ -24,18 +12,6 @@ import java.util.concurrent.atomic.AtomicInteger
2412
*/
2513
object KSerializers {
2614

27-
val json = Json {
28-
encodeDefaults = true
29-
serializersModule = SerializersModule {
30-
contextual(LiveVariable::class, LiveVariable.serializer())
31-
contextual(String::class, String.serializer())
32-
contextual(Long::class, Long.serializer())
33-
contextual(Int::class, Int.serializer())
34-
contextual(AtomicInteger::class, AtomicIntegerKSerializer())
35-
contextual(Any::class, AnySerializer())
36-
}
37-
}
38-
3915
class KotlinInstantSerializer : JsonSerializer<Instant>() {
4016
override fun serialize(value: Instant, jgen: JsonGenerator, provider: SerializerProvider) =
4117
jgen.writeNumber(value.toEpochMilliseconds())
@@ -45,64 +21,4 @@ object KSerializers {
4521
override fun deserialize(p: JsonParser, p1: DeserializationContext): Instant =
4622
Instant.fromEpochMilliseconds((p.codec.readTree(p) as JsonNode).longValue())
4723
}
48-
49-
class AtomicIntegerKSerializer : KSerializer<AtomicInteger> {
50-
override val descriptor = PrimitiveSerialDescriptor(
51-
"spp.protocol.util.AtomicIntegerKSerializer",
52-
PrimitiveKind.INT
53-
)
54-
55-
override fun deserialize(decoder: Decoder) = AtomicInteger(decoder.decodeInt())
56-
override fun serialize(encoder: Encoder, value: AtomicInteger) = encoder.encodeInt(value.get())
57-
}
58-
59-
class AnySerializer : KSerializer<Any> {
60-
override val descriptor: SerialDescriptor =
61-
ContextualSerializer(Any::class, null, emptyArray()).descriptor
62-
63-
override fun deserialize(decoder: Decoder): Any {
64-
val json = decoder as? JsonDecoder
65-
?: throw IllegalStateException("Only JsonDecoder is supported.")
66-
return fromJson(json.decodeJsonElement())!!
67-
}
68-
69-
override fun serialize(encoder: Encoder, value: Any) {
70-
val json = encoder as? JsonEncoder
71-
?: throw IllegalStateException("Only JsonEncoder is supported.")
72-
json.encodeJsonElement(toJson(value))
73-
}
74-
75-
fun toJson(item: Any?): JsonElement = when (item) {
76-
null -> JsonNull
77-
is String -> JsonPrimitive(item)
78-
is Number -> JsonPrimitive(item)
79-
is Boolean -> JsonPrimitive(item)
80-
is Map<*, *> -> {
81-
val content = item.map { (k, v) -> k.toString() to toJson(v) }
82-
JsonObject(content.toMap())
83-
}
84-
is List<*> -> {
85-
val content = item.map { toJson(it) }
86-
JsonArray(content)
87-
}
88-
is JsonElement -> item
89-
is LiveVariable -> json.encodeToJsonElement(LiveVariable.serializer(), item)
90-
else -> throw IllegalArgumentException("Unable to encode $item")
91-
}
92-
93-
fun fromJson(item: JsonElement): Any? = when (item) {
94-
JsonNull -> null
95-
is JsonPrimitive -> when {
96-
item.isString -> item.content
97-
item.content == "true" || item.content == "false" -> {
98-
item.content == "true"
99-
}
100-
item.content.contains('.') -> item.content.toDouble()
101-
else -> item.content.toLong()
102-
}
103-
is JsonObject -> item.mapValues { fromJson(it.value) }
104-
is JsonArray -> item.map { fromJson(it) }
105-
else -> throw IllegalArgumentException("Unable to decode $item")
106-
}
107-
}
10824
}

0 commit comments

Comments
 (0)