From 482b2bf104f4bd50b19b1d654d1f5a6225315d94 Mon Sep 17 00:00:00 2001 From: Dmitry Khalanskiy Date: Wed, 21 Apr 2021 15:34:45 +0300 Subject: [PATCH 1/3] Move serializers --- .../common/src}/DateTimePeriodSerializers.kt | 0 .../common/src}/DateTimeUnitSerializers.kt | 0 .../common/src}/DayOfWeekSerializers.kt | 0 .../common/src}/InstantSerializers.kt | 0 .../common/src}/LocalDateSerializers.kt | 0 .../common/src}/LocalDateTimeSerializers.kt | 0 .../serializers => serialization/common/src}/MonthSerializers.kt | 0 .../common/src}/TimeZoneSerializers.kt | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename {core/common/src/serializers => serialization/common/src}/DateTimePeriodSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/DateTimeUnitSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/DayOfWeekSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/InstantSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/LocalDateSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/LocalDateTimeSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/MonthSerializers.kt (100%) rename {core/common/src/serializers => serialization/common/src}/TimeZoneSerializers.kt (100%) diff --git a/core/common/src/serializers/DateTimePeriodSerializers.kt b/serialization/common/src/DateTimePeriodSerializers.kt similarity index 100% rename from core/common/src/serializers/DateTimePeriodSerializers.kt rename to serialization/common/src/DateTimePeriodSerializers.kt diff --git a/core/common/src/serializers/DateTimeUnitSerializers.kt b/serialization/common/src/DateTimeUnitSerializers.kt similarity index 100% rename from core/common/src/serializers/DateTimeUnitSerializers.kt rename to serialization/common/src/DateTimeUnitSerializers.kt diff --git a/core/common/src/serializers/DayOfWeekSerializers.kt b/serialization/common/src/DayOfWeekSerializers.kt similarity index 100% rename from core/common/src/serializers/DayOfWeekSerializers.kt rename to serialization/common/src/DayOfWeekSerializers.kt diff --git a/core/common/src/serializers/InstantSerializers.kt b/serialization/common/src/InstantSerializers.kt similarity index 100% rename from core/common/src/serializers/InstantSerializers.kt rename to serialization/common/src/InstantSerializers.kt diff --git a/core/common/src/serializers/LocalDateSerializers.kt b/serialization/common/src/LocalDateSerializers.kt similarity index 100% rename from core/common/src/serializers/LocalDateSerializers.kt rename to serialization/common/src/LocalDateSerializers.kt diff --git a/core/common/src/serializers/LocalDateTimeSerializers.kt b/serialization/common/src/LocalDateTimeSerializers.kt similarity index 100% rename from core/common/src/serializers/LocalDateTimeSerializers.kt rename to serialization/common/src/LocalDateTimeSerializers.kt diff --git a/core/common/src/serializers/MonthSerializers.kt b/serialization/common/src/MonthSerializers.kt similarity index 100% rename from core/common/src/serializers/MonthSerializers.kt rename to serialization/common/src/MonthSerializers.kt diff --git a/core/common/src/serializers/TimeZoneSerializers.kt b/serialization/common/src/TimeZoneSerializers.kt similarity index 100% rename from core/common/src/serializers/TimeZoneSerializers.kt rename to serialization/common/src/TimeZoneSerializers.kt From 87159c9630848813dfe46f74082bfe4860646b17 Mon Sep 17 00:00:00 2001 From: Dmitry Khalanskiy Date: Wed, 21 Apr 2021 15:34:54 +0300 Subject: [PATCH 2/3] Fix Native version having a dependency on serializers Looks like `compileOnly` doesn't, in fact, ensure that there is no runtime dependency, as Kotlin/Native does not support that. Thus, it looks like `compileOnly` transforms into something like `api` in a contrived manner, which leads to the tests implicitly acquiring a runtime dependency. Therefore, the changes: * There is now a separate artifact for serialization. * The datetime classes are no longer marked as @Serializable and don't have default serializers. * The package name for serializers is now "kotlinx.datetime.serialization", as it makes sense for it to be similar to the name of the artifact, and an artifact with the name "serializers" would look odd. --- core/build.gradle.kts | 1 - core/common/src/DateTimePeriod.kt | 5 --- core/common/src/DateTimeUnit.kt | 7 ---- core/common/src/Instant.kt | 3 -- core/common/src/LocalDate.kt | 4 --- core/common/src/LocalDateTime.kt | 4 --- core/common/src/TimeZone.kt | 6 ---- core/js/src/Instant.kt | 3 -- core/js/src/LocalDate.kt | 3 -- core/js/src/LocalDateTime.kt | 3 -- core/js/src/TimeZone.kt | 5 --- core/jvm/src/Instant.kt | 3 -- core/jvm/src/LocalDate.kt | 3 -- core/jvm/src/LocalDateTime.kt | 3 -- core/jvm/src/TimeZoneJvm.kt | 5 --- core/native/src/Instant.kt | 3 -- core/native/src/LocalDate.kt | 3 -- core/native/src/LocalDateTime.kt | 4 --- core/native/src/TimeZone.kt | 5 --- serialization/build.gradle.kts | 1 + .../common/src/DateTimePeriodSerializers.kt | 2 +- .../common/src/DateTimeUnitSerializers.kt | 2 +- .../common/src/DayOfWeekSerializers.kt | 2 +- .../common/src/InstantSerializers.kt | 2 +- .../common/src/LocalDateSerializers.kt | 2 +- .../common/src/LocalDateTimeSerializers.kt | 2 +- serialization/common/src/MonthSerializers.kt | 2 +- .../common/src/TimeZoneSerializers.kt | 2 +- .../test/DateTimePeriodSerializationTest.kt | 9 +---- .../test/DateTimeUnitSerializationTest.kt | 12 +------ .../common/test/DayOfWeekSerializationTest.kt | 2 +- .../common/test/InstantSerializationTest.kt | 8 +---- serialization/common/test/IntegrationTest.kt | 36 ++----------------- .../common/test/LocalDateSerializationTest.kt | 8 +---- .../test/LocalDateTimeSerializationTest.kt | 9 +---- .../common/test/MonthSerializationTest.kt | 2 +- .../common/test/TimeZoneSerializationTest.kt | 9 +---- 37 files changed, 19 insertions(+), 166 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index abf89e9c7..5902c3483 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -152,7 +152,6 @@ kotlin { commonMain { dependencies { api("org.jetbrains.kotlin:kotlin-stdlib-common") - compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-core:$serializationVersion") } } diff --git a/core/common/src/DateTimePeriod.kt b/core/common/src/DateTimePeriod.kt index 3ebc6d65a..fb896005c 100644 --- a/core/common/src/DateTimePeriod.kt +++ b/core/common/src/DateTimePeriod.kt @@ -5,14 +5,10 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.DatePeriodIso8601Serializer -import kotlinx.datetime.serializers.DateTimePeriodIso8601Serializer import kotlin.math.* import kotlin.time.Duration import kotlin.time.ExperimentalTime -import kotlinx.serialization.Serializable -@Serializable(with = DateTimePeriodIso8601Serializer::class) // TODO: could be error-prone without explicitly named params public sealed class DateTimePeriod { internal abstract val totalMonths: Int @@ -237,7 +233,6 @@ public sealed class DateTimePeriod { public fun String.toDateTimePeriod(): DateTimePeriod = DateTimePeriod.parse(this) -@Serializable(with = DatePeriodIso8601Serializer::class) public class DatePeriod internal constructor( internal override val totalMonths: Int, override val days: Int, diff --git a/core/common/src/DateTimeUnit.kt b/core/common/src/DateTimeUnit.kt index 5d7d8a67b..ee3cfa58f 100644 --- a/core/common/src/DateTimeUnit.kt +++ b/core/common/src/DateTimeUnit.kt @@ -5,16 +5,12 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.* -import kotlinx.serialization.Serializable import kotlin.time.* -@Serializable(with = DateTimeUnitSerializer::class) public sealed class DateTimeUnit { public abstract operator fun times(scalar: Int): DateTimeUnit - @Serializable(with = TimeBasedDateTimeUnitSerializer::class) public class TimeBased(public val nanoseconds: Long) : DateTimeUnit() { private val unitName: String private val unitScale: Long @@ -64,10 +60,8 @@ public sealed class DateTimeUnit { override fun toString(): String = formatToString(unitScale, unitName) } - @Serializable(with = DateBasedDateTimeUnitSerializer::class) public sealed class DateBased : DateTimeUnit() { // TODO: investigate how to move subclasses up to DateTimeUnit scope - @Serializable(with = DayBasedDateTimeUnitSerializer::class) public class DayBased(public val days: Int) : DateBased() { init { require(days > 0) { "Unit duration must be positive, but was $days days." } @@ -85,7 +79,6 @@ public sealed class DateTimeUnit { else formatToString(days, "DAY") } - @Serializable(with = MonthBasedDateTimeUnitSerializer::class) public class MonthBased(public val months: Int) : DateBased() { init { require(months > 0) { "Unit duration must be positive, but was $months months." } diff --git a/core/common/src/Instant.kt b/core/common/src/Instant.kt index 62fda985a..da33f0745 100644 --- a/core/common/src/Instant.kt +++ b/core/common/src/Instant.kt @@ -5,12 +5,9 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.InstantIso8601Serializer -import kotlinx.serialization.Serializable import kotlin.time.* @OptIn(ExperimentalTime::class) -@Serializable(with = InstantIso8601Serializer::class) public expect class Instant : Comparable { /** diff --git a/core/common/src/LocalDate.kt b/core/common/src/LocalDate.kt index bea808ef6..e7cf2dd67 100644 --- a/core/common/src/LocalDate.kt +++ b/core/common/src/LocalDate.kt @@ -5,10 +5,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateIso8601Serializer -import kotlinx.serialization.Serializable - -@Serializable(with = LocalDateIso8601Serializer::class) public expect class LocalDate : Comparable { public companion object { /** diff --git a/core/common/src/LocalDateTime.kt b/core/common/src/LocalDateTime.kt index a7d206533..60cf77ba6 100644 --- a/core/common/src/LocalDateTime.kt +++ b/core/common/src/LocalDateTime.kt @@ -5,10 +5,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateTimeIso8601Serializer -import kotlinx.serialization.Serializable - -@Serializable(with = LocalDateTimeIso8601Serializer::class) public expect class LocalDateTime : Comparable { public companion object { diff --git a/core/common/src/TimeZone.kt b/core/common/src/TimeZone.kt index a9e279fa9..da834c2fe 100644 --- a/core/common/src/TimeZone.kt +++ b/core/common/src/TimeZone.kt @@ -8,11 +8,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.TimeZoneSerializer -import kotlinx.datetime.serializers.ZoneOffsetSerializer -import kotlinx.serialization.Serializable - -@Serializable(with = TimeZoneSerializer::class) public expect open class TimeZone { /** * Returns the identifier string of the time zone. @@ -85,7 +80,6 @@ public expect open class TimeZone { public fun LocalDateTime.toInstant(): Instant } -@Serializable(with = ZoneOffsetSerializer::class) public expect class ZoneOffset : TimeZone { public val totalSeconds: Int } diff --git a/core/js/src/Instant.kt b/core/js/src/Instant.kt index ad39f22e1..551e68f5b 100644 --- a/core/js/src/Instant.kt +++ b/core/js/src/Instant.kt @@ -15,11 +15,8 @@ import kotlinx.datetime.internal.JSJoda.OffsetDateTime as jtOffsetDateTime import kotlinx.datetime.internal.JSJoda.Duration as jtDuration import kotlinx.datetime.internal.JSJoda.Clock as jtClock import kotlinx.datetime.internal.JSJoda.ChronoUnit -import kotlinx.datetime.serializers.InstantIso8601Serializer -import kotlinx.serialization.Serializable import kotlin.math.truncate -@Serializable(with = InstantIso8601Serializer::class) @OptIn(ExperimentalTime::class) public actual class Instant internal constructor(internal val value: jtInstant) : Comparable { diff --git a/core/js/src/LocalDate.kt b/core/js/src/LocalDate.kt index d27b9fdb5..4ab391ca3 100644 --- a/core/js/src/LocalDate.kt +++ b/core/js/src/LocalDate.kt @@ -6,11 +6,8 @@ package kotlinx.datetime import kotlinx.datetime.internal.JSJoda.ChronoUnit -import kotlinx.datetime.serializers.LocalDateIso8601Serializer -import kotlinx.serialization.Serializable import kotlinx.datetime.internal.JSJoda.LocalDate as jtLocalDate -@Serializable(with = LocalDateIso8601Serializer::class) public actual class LocalDate internal constructor(internal val value: jtLocalDate) : Comparable { public actual companion object { public actual fun parse(isoString: String): LocalDate = try { diff --git a/core/js/src/LocalDateTime.kt b/core/js/src/LocalDateTime.kt index 9bc99505e..62420928a 100644 --- a/core/js/src/LocalDateTime.kt +++ b/core/js/src/LocalDateTime.kt @@ -4,11 +4,8 @@ */ package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateTimeIso8601Serializer -import kotlinx.serialization.Serializable import kotlinx.datetime.internal.JSJoda.LocalDateTime as jtLocalDateTime -@Serializable(with = LocalDateTimeIso8601Serializer::class) public actual class LocalDateTime internal constructor(internal val value: jtLocalDateTime) : Comparable { public actual constructor(year: Int, monthNumber: Int, dayOfMonth: Int, hour: Int, minute: Int, second: Int, nanosecond: Int) : diff --git a/core/js/src/TimeZone.kt b/core/js/src/TimeZone.kt index da9187fcd..28d9f458b 100644 --- a/core/js/src/TimeZone.kt +++ b/core/js/src/TimeZone.kt @@ -5,12 +5,8 @@ package kotlinx.datetime import kotlinx.datetime.internal.JSJoda.ZoneId -import kotlinx.datetime.serializers.TimeZoneSerializer -import kotlinx.datetime.serializers.ZoneOffsetSerializer -import kotlinx.serialization.Serializable import kotlinx.datetime.internal.JSJoda.ZoneOffset as jtZoneOffset -@Serializable(with = TimeZoneSerializer::class) public actual open class TimeZone internal constructor(internal val zoneId: ZoneId) { public actual val id: String get() = zoneId.id() @@ -46,7 +42,6 @@ public actual open class TimeZone internal constructor(internal val zoneId: Zone } } -@Serializable(with = ZoneOffsetSerializer::class) public actual class ZoneOffset internal constructor(zoneOffset: jtZoneOffset): TimeZone(zoneOffset) { private val zoneOffset get() = zoneId as jtZoneOffset diff --git a/core/jvm/src/Instant.kt b/core/jvm/src/Instant.kt index a56d7f0fb..5badc8a5b 100644 --- a/core/jvm/src/Instant.kt +++ b/core/jvm/src/Instant.kt @@ -6,8 +6,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.InstantIso8601Serializer -import kotlinx.serialization.Serializable import java.time.DateTimeException import java.time.format.DateTimeParseException import java.time.temporal.ChronoUnit @@ -16,7 +14,6 @@ import java.time.Instant as jtInstant import java.time.OffsetDateTime as jtOffsetDateTime import java.time.Clock as jtClock -@Serializable(with = InstantIso8601Serializer::class) @OptIn(ExperimentalTime::class) public actual class Instant internal constructor(internal val value: jtInstant) : Comparable { diff --git a/core/jvm/src/LocalDate.kt b/core/jvm/src/LocalDate.kt index 6ea5b8002..4711064d3 100644 --- a/core/jvm/src/LocalDate.kt +++ b/core/jvm/src/LocalDate.kt @@ -5,14 +5,11 @@ @file:JvmName("LocalDateJvmKt") package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateIso8601Serializer -import kotlinx.serialization.Serializable import java.time.DateTimeException import java.time.format.DateTimeParseException import java.time.temporal.ChronoUnit import java.time.LocalDate as jtLocalDate -@Serializable(with = LocalDateIso8601Serializer::class) public actual class LocalDate internal constructor(internal val value: jtLocalDate) : Comparable { public actual companion object { public actual fun parse(isoString: String): LocalDate = try { diff --git a/core/jvm/src/LocalDateTime.kt b/core/jvm/src/LocalDateTime.kt index 59b54b9a1..228edc76a 100644 --- a/core/jvm/src/LocalDateTime.kt +++ b/core/jvm/src/LocalDateTime.kt @@ -5,8 +5,6 @@ @file:JvmName("LocalDateTimeJvmKt") package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateTimeIso8601Serializer -import kotlinx.serialization.Serializable import java.time.DateTimeException import java.time.format.DateTimeParseException import java.time.LocalDateTime as jtLocalDateTime @@ -14,7 +12,6 @@ import java.time.LocalDateTime as jtLocalDateTime public actual typealias Month = java.time.Month public actual typealias DayOfWeek = java.time.DayOfWeek -@Serializable(with = LocalDateTimeIso8601Serializer::class) public actual class LocalDateTime internal constructor(internal val value: jtLocalDateTime) : Comparable { public actual constructor(year: Int, monthNumber: Int, dayOfMonth: Int, hour: Int, minute: Int, second: Int, nanosecond: Int) : diff --git a/core/jvm/src/TimeZoneJvm.kt b/core/jvm/src/TimeZoneJvm.kt index c4c2771fd..97f2b1676 100644 --- a/core/jvm/src/TimeZoneJvm.kt +++ b/core/jvm/src/TimeZoneJvm.kt @@ -8,14 +8,10 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.TimeZoneSerializer -import kotlinx.datetime.serializers.ZoneOffsetSerializer -import kotlinx.serialization.Serializable import java.time.DateTimeException import java.time.ZoneId import java.time.ZoneOffset as jtZoneOffset -@Serializable(with = TimeZoneSerializer::class) public actual open class TimeZone internal constructor(internal val zoneId: ZoneId) { public actual val id: String get() = zoneId.id @@ -51,7 +47,6 @@ public actual open class TimeZone internal constructor(internal val zoneId: Zone } } -@Serializable(with = ZoneOffsetSerializer::class) public actual class ZoneOffset internal constructor(zoneOffset: jtZoneOffset): TimeZone(zoneOffset) { internal val zoneOffset get() = zoneId as jtZoneOffset diff --git a/core/native/src/Instant.kt b/core/native/src/Instant.kt index 0228422c5..9984b1826 100644 --- a/core/native/src/Instant.kt +++ b/core/native/src/Instant.kt @@ -8,8 +8,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.InstantIso8601Serializer -import kotlinx.serialization.Serializable import kotlin.math.* import kotlin.time.* @@ -126,7 +124,6 @@ private fun isValidInstantSecond(second: Long) = second >= MIN_SECOND && second internal expect fun currentTime(): Instant -@Serializable(with = InstantIso8601Serializer::class) @OptIn(ExperimentalTime::class) public actual class Instant internal constructor(public actual val epochSeconds: Long, public actual val nanosecondsOfSecond: Int) : Comparable { diff --git a/core/native/src/LocalDate.kt b/core/native/src/LocalDate.kt index 330dc6e17..8c6c34322 100644 --- a/core/native/src/LocalDate.kt +++ b/core/native/src/LocalDate.kt @@ -8,8 +8,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateIso8601Serializer -import kotlinx.serialization.Serializable import kotlin.math.* // This is a function and not a value due to https://github.com/Kotlin/kotlinx-datetime/issues/5 @@ -36,7 +34,6 @@ internal const val YEAR_MAX = 999_999 private fun isValidYear(year: Int): Boolean = year >= YEAR_MIN && year <= YEAR_MAX -@Serializable(with = LocalDateIso8601Serializer::class) public actual class LocalDate actual constructor(public actual val year: Int, public actual val monthNumber: Int, public actual val dayOfMonth: Int) : Comparable { init { diff --git a/core/native/src/LocalDateTime.kt b/core/native/src/LocalDateTime.kt index b04180348..db59e1568 100644 --- a/core/native/src/LocalDateTime.kt +++ b/core/native/src/LocalDateTime.kt @@ -8,9 +8,6 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.LocalDateTimeIso8601Serializer -import kotlinx.serialization.Serializable - // This is a function and not a value due to https://github.com/Kotlin/kotlinx-datetime/issues/5 // org.threeten.bp.format.DateTimeFormatter#ISO_LOCAL_DATE_TIME internal val localDateTimeParser: Parser @@ -21,7 +18,6 @@ internal val localDateTimeParser: Parser LocalDateTime(date, time) } -@Serializable(with = LocalDateTimeIso8601Serializer::class) public actual class LocalDateTime internal constructor( public actual val date: LocalDate, internal val time: LocalTime) : Comparable { public actual companion object { diff --git a/core/native/src/TimeZone.kt b/core/native/src/TimeZone.kt index 29879b0d8..6dcd553ae 100644 --- a/core/native/src/TimeZone.kt +++ b/core/native/src/TimeZone.kt @@ -8,13 +8,9 @@ package kotlinx.datetime -import kotlinx.datetime.serializers.TimeZoneSerializer -import kotlinx.datetime.serializers.ZoneOffsetSerializer import kotlin.math.abs import kotlin.native.concurrent.* -import kotlinx.serialization.Serializable -@Serializable(with = TimeZoneSerializer::class) public actual open class TimeZone internal constructor(internal val value: TimeZoneImpl) { public actual companion object { @@ -83,7 +79,6 @@ public actual open class TimeZone internal constructor(internal val value: TimeZ @ThreadLocal private var zoneOffsetCache: MutableMap = mutableMapOf() -@Serializable(with = ZoneOffsetSerializer::class) public actual class ZoneOffset internal constructor(internal val offset: ZoneOffsetImpl) : TimeZone(offset) { public actual val totalSeconds: Int get() = offset.totalSeconds diff --git a/serialization/build.gradle.kts b/serialization/build.gradle.kts index 432f00a8a..886d4a4ef 100644 --- a/serialization/build.gradle.kts +++ b/serialization/build.gradle.kts @@ -70,6 +70,7 @@ kotlin { dependencies { api(project(":kotlinx-datetime")) api("org.jetbrains.kotlin:kotlin-stdlib-common") + api("org.jetbrains.kotlinx:kotlinx-serialization-core:$serializationVersion") } } diff --git a/serialization/common/src/DateTimePeriodSerializers.kt b/serialization/common/src/DateTimePeriodSerializers.kt index 5e362850e..15e8f467e 100644 --- a/serialization/common/src/DateTimePeriodSerializers.kt +++ b/serialization/common/src/DateTimePeriodSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.DatePeriod import kotlinx.datetime.DateTimePeriod diff --git a/serialization/common/src/DateTimeUnitSerializers.kt b/serialization/common/src/DateTimeUnitSerializers.kt index 3eec77f9b..9f68ef812 100644 --- a/serialization/common/src/DateTimeUnitSerializers.kt +++ b/serialization/common/src/DateTimeUnitSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.DateTimeUnit import kotlinx.serialization.* diff --git a/serialization/common/src/DayOfWeekSerializers.kt b/serialization/common/src/DayOfWeekSerializers.kt index f03c2d427..a53c94ef8 100644 --- a/serialization/common/src/DayOfWeekSerializers.kt +++ b/serialization/common/src/DayOfWeekSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.DayOfWeek import kotlinx.serialization.* diff --git a/serialization/common/src/InstantSerializers.kt b/serialization/common/src/InstantSerializers.kt index 0ebeb8213..7cfc48423 100644 --- a/serialization/common/src/InstantSerializers.kt +++ b/serialization/common/src/InstantSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.Instant import kotlinx.serialization.* diff --git a/serialization/common/src/LocalDateSerializers.kt b/serialization/common/src/LocalDateSerializers.kt index 21fd68bce..d679fee8b 100644 --- a/serialization/common/src/LocalDateSerializers.kt +++ b/serialization/common/src/LocalDateSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.LocalDate import kotlinx.serialization.* diff --git a/serialization/common/src/LocalDateTimeSerializers.kt b/serialization/common/src/LocalDateTimeSerializers.kt index 7f7f76745..ee41b8ad4 100644 --- a/serialization/common/src/LocalDateTimeSerializers.kt +++ b/serialization/common/src/LocalDateTimeSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.LocalDateTime import kotlinx.serialization.* diff --git a/serialization/common/src/MonthSerializers.kt b/serialization/common/src/MonthSerializers.kt index d96ab158a..cbea22797 100644 --- a/serialization/common/src/MonthSerializers.kt +++ b/serialization/common/src/MonthSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.Month import kotlinx.serialization.* diff --git a/serialization/common/src/TimeZoneSerializers.kt b/serialization/common/src/TimeZoneSerializers.kt index c0a4f49b1..dff7d44ef 100644 --- a/serialization/common/src/TimeZoneSerializers.kt +++ b/serialization/common/src/TimeZoneSerializers.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. */ -package kotlinx.datetime.serializers +package kotlinx.datetime.serialization import kotlinx.datetime.TimeZone import kotlinx.datetime.ZoneOffset diff --git a/serialization/common/test/DateTimePeriodSerializationTest.kt b/serialization/common/test/DateTimePeriodSerializationTest.kt index b70407e71..640ad68b2 100644 --- a/serialization/common/test/DateTimePeriodSerializationTest.kt +++ b/serialization/common/test/DateTimePeriodSerializationTest.kt @@ -6,7 +6,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlin.test.* @@ -115,11 +115,4 @@ class DateTimePeriodSerializationTest { dateTimePeriodComponentSerialization(DateTimePeriodComponentSerializer) } - @Test - fun testDefaultSerializers() { - // Check that they behave the same as the ISO-8601 serializers - dateTimePeriodIso8601Serialization(Json.serializersModule.serializer()) - datePeriodIso8601Serialization(Json.serializersModule.serializer(), Json.serializersModule.serializer()) - } - } diff --git a/serialization/common/test/DateTimeUnitSerializationTest.kt b/serialization/common/test/DateTimeUnitSerializationTest.kt index f63fcab87..6cd654090 100644 --- a/serialization/common/test/DateTimeUnitSerializationTest.kt +++ b/serialization/common/test/DateTimeUnitSerializationTest.kt @@ -6,10 +6,9 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.KSerializer import kotlinx.serialization.json.* -import kotlinx.serialization.serializer import kotlin.random.* import kotlin.test.* @@ -110,13 +109,4 @@ class DateTimeUnitSerializationTest { serialization(DateTimeUnitSerializer) } - @Test - fun testDefaultSerializers() { - monthBasedSerialization(Json.serializersModule.serializer()) - timeBasedSerialization(Json.serializersModule.serializer()) - dayBasedSerialization(Json.serializersModule.serializer()) - dateBasedSerialization(Json.serializersModule.serializer()) - serialization(Json.serializersModule.serializer()) - } - } \ No newline at end of file diff --git a/serialization/common/test/DayOfWeekSerializationTest.kt b/serialization/common/test/DayOfWeekSerializationTest.kt index 18470976b..6ccabce62 100644 --- a/serialization/common/test/DayOfWeekSerializationTest.kt +++ b/serialization/common/test/DayOfWeekSerializationTest.kt @@ -6,7 +6,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.json.* import kotlin.test.* diff --git a/serialization/common/test/InstantSerializationTest.kt b/serialization/common/test/InstantSerializationTest.kt index ffb92cd8b..0e78427e8 100644 --- a/serialization/common/test/InstantSerializationTest.kt +++ b/serialization/common/test/InstantSerializationTest.kt @@ -5,7 +5,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlin.test.* @@ -60,10 +60,4 @@ class InstantSerializationTest { fun testComponentSerialization() { componentSerialization(InstantComponentSerializer) } - - @Test - fun testDefaultSerializers() { - // should be the same as the ISO-8601 - iso8601Serialization(Json.serializersModule.serializer()) - } } \ No newline at end of file diff --git a/serialization/common/test/IntegrationTest.kt b/serialization/common/test/IntegrationTest.kt index 0452a10fd..2c21ebc1a 100644 --- a/serialization/common/test/IntegrationTest.kt +++ b/serialization/common/test/IntegrationTest.kt @@ -6,7 +6,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.Contextual import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString @@ -64,38 +64,6 @@ class IntegrationTest { @Serializable data class Dummy2( - val instant: Instant, - val date: LocalDate, - val dateTime: LocalDateTime, - val datePeriod: DatePeriod, - val dateTimePeriod: DateTimePeriod, - // val dayOfWeek: DayOfWeek, - // val month: Month, - ) - - @Test - fun testDefaultSerialization() { - val dummyValue = Dummy2( - Instant.parse("2021-03-24T01:29:30.123456789Z"), - LocalDate.parse("2020-01-02"), - LocalDateTime.parse("2020-01-03T12:59:58.010203045"), - DatePeriod.parse("P20Y-2M-3D"), - DateTimePeriod.parse("-P50Y-1M-2DT3H4M5.0123S"), - // DayOfWeek.MONDAY, - // Month.DECEMBER, - ) - val json = "{\"instant\":\"2021-03-24T01:29:30.123456789Z\"," + - "\"date\":\"2020-01-02\"," + - "\"dateTime\":\"2020-01-03T12:59:58.010203045\"," + - "\"datePeriod\":\"P19Y10M-3D\"," + - "\"dateTimePeriod\":\"P-49Y-11M2DT-3H-4M-5.012300000S\"" + - "}" - assertEquals(dummyValue, Json.decodeFromString(json)) - assertEquals(json, Json.encodeToString(dummyValue)) - } - - @Serializable - data class Dummy3( @Serializable(with = InstantComponentSerializer::class) val instant: Instant, @Serializable(with = LocalDateComponentSerializer::class) val date: LocalDate, @Serializable(with = LocalDateTimeComponentSerializer::class) val dateTime: LocalDateTime, @@ -107,7 +75,7 @@ class IntegrationTest { @Test fun testExplicitSerializerSpecification() { - val dummyValue = Dummy3( + val dummyValue = Dummy2( Instant.parse("2021-03-24T01:29:30.123456789Z"), LocalDate.parse("2020-01-02"), LocalDateTime.parse("2020-01-03T12:59:58.010203045"), diff --git a/serialization/common/test/LocalDateSerializationTest.kt b/serialization/common/test/LocalDateSerializationTest.kt index 1dd953352..3e41e5598 100644 --- a/serialization/common/test/LocalDateSerializationTest.kt +++ b/serialization/common/test/LocalDateSerializationTest.kt @@ -6,7 +6,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlin.test.* @@ -64,10 +64,4 @@ class LocalDateSerializationTest { componentSerialization(LocalDateComponentSerializer) } - @Test - fun testDefaultSerializers() { - // should be the same as the ISO-8601 - iso8601Serialization(Json.serializersModule.serializer()) - } - } diff --git a/serialization/common/test/LocalDateTimeSerializationTest.kt b/serialization/common/test/LocalDateTimeSerializationTest.kt index f01254d8a..1bb790bf6 100644 --- a/serialization/common/test/LocalDateTimeSerializationTest.kt +++ b/serialization/common/test/LocalDateTimeSerializationTest.kt @@ -6,10 +6,9 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.KSerializer import kotlinx.serialization.json.* -import kotlinx.serialization.serializer import kotlin.test.* class LocalDateTimeSerializationTest { @@ -76,10 +75,4 @@ class LocalDateTimeSerializationTest { fun testComponentSerialization() { componentSerialization(LocalDateTimeComponentSerializer) } - - @Test - fun testDefaultSerializers() { - // should be the same as the ISO-8601 - iso8601Serialization(Json.serializersModule.serializer()) - } } diff --git a/serialization/common/test/MonthSerializationTest.kt b/serialization/common/test/MonthSerializationTest.kt index 8d8879b72..8c491900b 100644 --- a/serialization/common/test/MonthSerializationTest.kt +++ b/serialization/common/test/MonthSerializationTest.kt @@ -6,7 +6,7 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.json.* import kotlin.test.* diff --git a/serialization/common/test/TimeZoneSerializationTest.kt b/serialization/common/test/TimeZoneSerializationTest.kt index 9cb0f5058..a61ee6d96 100644 --- a/serialization/common/test/TimeZoneSerializationTest.kt +++ b/serialization/common/test/TimeZoneSerializationTest.kt @@ -6,10 +6,9 @@ package kotlinx.datetime.serialization.test import kotlinx.datetime.* -import kotlinx.datetime.serializers.* +import kotlinx.datetime.serialization.* import kotlinx.serialization.KSerializer import kotlinx.serialization.json.* -import kotlinx.serialization.serializer import kotlin.test.* class TimeZoneSerializationTest { @@ -43,10 +42,4 @@ class TimeZoneSerializationTest { fun testSerialization() { serialization(TimeZoneSerializer) } - - @Test - fun testDefaultSerializers() { - zoneOffsetSerialization(Json.serializersModule.serializer()) - serialization(Json.serializersModule.serializer()) - } } \ No newline at end of file From b6d8aa32972cd9750d2390941252780834a50264 Mon Sep 17 00:00:00 2001 From: Dmitry Khalanskiy Date: Wed, 21 Apr 2021 15:41:11 +0300 Subject: [PATCH 3/3] Enable publishing of the serialization artifact --- build.gradle.kts | 1 + serialization/build.gradle.kts | 1 + 2 files changed, 2 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 441973702..dfd6df5b5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,6 +18,7 @@ infra { } publishing { include(":kotlinx-datetime") + include(":kotlinx-datetime-serialization") libraryRepoUrl = "https://github.com/Kotlin/kotlinx-datetime" sonatype { } } diff --git a/serialization/build.gradle.kts b/serialization/build.gradle.kts index 886d4a4ef..2ad40ab29 100644 --- a/serialization/build.gradle.kts +++ b/serialization/build.gradle.kts @@ -3,6 +3,7 @@ import java.util.Locale plugins { id("kotlin-multiplatform") kotlin("plugin.serialization") + `maven-publish` } val JDK_8: String by project