Skip to content

Commit f2ec0f5

Browse files
authored
Added serializer for java.util.currency and typeAlias (#143)
* Added serializer and typeAlias for java.util.currency * added example to MD, ran apiDump
1 parent 505cf02 commit f2ec0f5

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed

doc/jdk.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,4 @@
4444
| AtomicBoolean | AtomicBooleanSerializer | `true` |
4545
| AtomicLong | AtomicLongSerializer | `22` |
4646
| Locale | LocaleSerializer | `"en_US"` |
47+
| Currency | CurrencySerializer | `"AUD"` |

ks3-jdk/api/ks3-jdk.api

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,15 @@ public final class io/ks3/java/util/AtomicLongSerializer : kotlinx/serialization
178178
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/util/concurrent/atomic/AtomicLong;)V
179179
}
180180

181+
public final class io/ks3/java/util/CurrencySerializer : kotlinx/serialization/KSerializer {
182+
public static final field INSTANCE Lio/ks3/java/util/CurrencySerializer;
183+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
184+
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/util/Currency;
185+
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
186+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
187+
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/util/Currency;)V
188+
}
189+
181190
public final class io/ks3/java/util/LocaleSerializer : kotlinx/serialization/KSerializer {
182191
public static final field INSTANCE Lio/ks3/java/util/LocaleSerializer;
183192
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;

ks3-jdk/src/jvmMain/kotlin/io/ks3/java/typealiases/Typealiases.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import io.ks3.java.time.LocalDateTimeAsStringSerializer
1212
import io.ks3.java.time.LocalTimeAsStringSerializer
1313
import io.ks3.java.time.OffsetDateTimeAsStringSerializer
1414
import io.ks3.java.time.YearMonthAsStringSerializer
15+
import io.ks3.java.util.CurrencySerializer
1516
import io.ks3.java.util.LocaleSerializer
1617
import io.ks3.java.util.UuidSerializer
1718
import kotlinx.serialization.Serializable
@@ -24,6 +25,7 @@ import java.time.LocalDateTime
2425
import java.time.LocalTime
2526
import java.time.OffsetDateTime
2627
import java.time.YearMonth
28+
import java.util.Currency
2729
import java.util.Locale
2830
import java.util.UUID
2931

@@ -78,3 +80,7 @@ typealias LocaleAsString =
7880
typealias UuidAsString =
7981
@Serializable(with = UuidSerializer::class)
8082
UUID
83+
84+
typealias CurrencyAsString =
85+
@Serializable(with = CurrencySerializer::class)
86+
Currency
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.ks3.java.util
2+
3+
import io.ks3.standard.stringSerializer
4+
import kotlinx.serialization.KSerializer
5+
import java.util.Currency
6+
7+
object CurrencySerializer : KSerializer<Currency> by stringSerializer(Currency::getInstance)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.ks3.java.util
2+
3+
import io.kotest.core.spec.style.FreeSpec
4+
import io.kotest.matchers.shouldBe
5+
import io.kotest.property.Arb
6+
import io.kotest.property.arbitrary.map
7+
import io.kotest.property.arbitrary.of
8+
import io.ks3.test.generateSerializerTests
9+
import kotlinx.serialization.json.Json
10+
import java.util.Currency
11+
12+
class CurrencySerializerTest :
13+
FreeSpec(
14+
{
15+
include(
16+
generateSerializerTests(
17+
CurrencySerializer,
18+
Arb.of(Currency.getAvailableCurrencies()).map { it },
19+
),
20+
)
21+
"sample" {
22+
Json.encodeToString(CurrencySerializer, Currency.getInstance("AUD")) shouldBe "\"AUD\""
23+
}
24+
},
25+
)

0 commit comments

Comments
 (0)