| 4402 | } |
| 4403 | |
| 4404 | void GeneratorKotlin::GenerateFBEJson(const std::string& domain, const std::string& package) |
| 4405 | { |
| 4406 | CppCommon::Path path = CppCommon::Path(_output) / CreatePackagePath(domain, package); |
| 4407 | |
| 4408 | // Generate the file |
| 4409 | CppCommon::Path file = path / "Json.kt"; |
| 4410 | WriteBegin(); |
| 4411 | |
| 4412 | // Generate headers |
| 4413 | GenerateHeader("FBE"); |
| 4414 | GenerateImports(domain, package); |
| 4415 | |
| 4416 | std::string code = R"CODE( |
| 4417 | internal class BytesJson : com.google.gson.JsonSerializer<ByteArray>, com.google.gson.JsonDeserializer<ByteArray> |
| 4418 | { |
| 4419 | override fun serialize(src: ByteArray, typeOfSrc: java.lang.reflect.Type, context: com.google.gson.JsonSerializationContext): com.google.gson.JsonElement |
| 4420 | { |
| 4421 | return com.google.gson.JsonPrimitive(java.util.Base64.getEncoder().encodeToString(src)) |
| 4422 | } |
| 4423 | |
| 4424 | @Throws(com.google.gson.JsonParseException::class) |
| 4425 | override fun deserialize(json: com.google.gson.JsonElement, type: java.lang.reflect.Type, context: com.google.gson.JsonDeserializationContext): ByteArray |
| 4426 | { |
| 4427 | return java.util.Base64.getDecoder().decode(json.asString) |
| 4428 | } |
| 4429 | } |
| 4430 | |
| 4431 | internal class CharacterJson : com.google.gson.JsonSerializer<Char>, com.google.gson.JsonDeserializer<Char> |
| 4432 | { |
| 4433 | override fun serialize(src: Char, typeOfSrc: java.lang.reflect.Type, context: com.google.gson.JsonSerializationContext): com.google.gson.JsonElement |
| 4434 | { |
| 4435 | return com.google.gson.JsonPrimitive(src.code) |
| 4436 | } |
| 4437 | |
| 4438 | @Throws(com.google.gson.JsonParseException::class) |
| 4439 | override fun deserialize(json: com.google.gson.JsonElement, type: java.lang.reflect.Type, context: com.google.gson.JsonDeserializationContext): Char |
| 4440 | { |
| 4441 | return json.asLong.toInt().toChar() |
| 4442 | } |
| 4443 | } |
| 4444 | |
| 4445 | _TIMESTAMP_CLASS_ |
| 4446 | |
| 4447 | internal class BigDecimalJson : com.google.gson.JsonSerializer<java.math.BigDecimal>, com.google.gson.JsonDeserializer<java.math.BigDecimal> |
| 4448 | { |
| 4449 | override fun serialize(src: java.math.BigDecimal, typeOfSrc: java.lang.reflect.Type, context: com.google.gson.JsonSerializationContext): com.google.gson.JsonElement |
| 4450 | { |
| 4451 | return com.google.gson.JsonPrimitive(src.toPlainString()) |
| 4452 | } |
| 4453 | |
| 4454 | @Throws(com.google.gson.JsonParseException::class) |
| 4455 | override fun deserialize(json: com.google.gson.JsonElement, type: java.lang.reflect.Type, context: com.google.gson.JsonDeserializationContext): java.math.BigDecimal |
| 4456 | { |
| 4457 | return java.math.BigDecimal(json.asJsonPrimitive.asString) |
| 4458 | } |
| 4459 | } |
| 4460 | |
| 4461 | internal class UUIDJson : com.google.gson.JsonSerializer<java.util.UUID>, com.google.gson.JsonDeserializer<java.util.UUID> |