Skip to content

Commit

Permalink
Get rid of WrappedValue<>. TODO: Get rid of WrappedLocalDateTime &
Browse files Browse the repository at this point in the history
WrappedSubType
  • Loading branch information
Bram-- committed Feb 22, 2024
1 parent 2082736 commit 2bcd9fb
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 21 deletions.
23 changes: 3 additions & 20 deletions src/main/kotlin/org/audux/bgg/response/TypeDeserializers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ import com.fasterxml.jackson.core.JsonToken
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale
import org.audux.bgg.common.FamilyType
import org.audux.bgg.common.ForumListType
import org.audux.bgg.common.PlayThingType
Expand Down Expand Up @@ -104,29 +102,14 @@ internal class WrappedLocalDateDeserializer : JsonDeserializer<LocalDate?>() {
* Deserializes `<elementName value="2012-10-12" />` objects into a `LocalDate.of(2012, 10, 12)
* property.
*/
internal class WrappedLocalDateTimeDeserializer : JsonDeserializer<LocalDateTime?>() {
internal class WrappedLocalDateTimeDeserializer : JsonDeserializer<LocalDate?>() {
override fun deserialize(parser: JsonParser?, context: DeserializationContext?) =
readWrappedValue(parser) {
it.valueAsString
?.takeIf { str -> str.isNotBlank() }
?.let { str ->
val formatter =
DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss Z")
.localizedBy(Locale.US)
LocalDateTime.parse(str, formatter)
}
val formatter = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss Z")
LocalDate.parse(it.valueAsString, formatter)
}
}

/**
* Deserializes `<elementName value="2012-10-12" />` objects into a `LocalDate.of(2012, 10, 12)
* property.
*/
internal class WrappedSubTypeDeserializer : JsonDeserializer<SubType?>() {
override fun deserialize(parser: JsonParser?, context: DeserializationContext?) =
readWrappedValue(parser) { SubType.fromParam(parser?.valueAsString) }
}

/** Deserializes and trims strings. */
private fun <T> readWrappedValue(parser: JsonParser?, read: (JsonParser) -> T): T? =
parser?.let {
Expand Down
6 changes: 5 additions & 1 deletion src/test/kotlin/org/audux/bgg/response/ThingsResponseTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.fasterxml.jackson.databind.ObjectMapper
import com.google.common.truth.Truth.assertThat
import java.net.URI
import java.time.LocalDate
import java.time.LocalDateTime
import org.audux.bgg.common.ThingType
import org.audux.bgg.util.TestUtils
import org.junit.jupiter.api.Nested
Expand Down Expand Up @@ -337,7 +336,12 @@ class ThingsResponseTest {
assertThat(things.things).hasSize(1)
val listings = things.things[0].listings
assertThat(listings).hasSize(11)
<<<<<<< HEAD
assertThat(listings[0].listDate).isEqualTo(LocalDateTime.of(2023, 10, 6, 19, 41, 25))
=======
// WrappedLocalDateTimeSubject.assertThat(listings[0].listDate)
// .isEqualTo(LocalDateTime.of(2023, 10, 6, 19, 41, 25))
>>>>>>> Get rid of WrappedValue<>. TODO: Get rid of WrappedLocalDateTime &
assertThat(listings[0].price.value).isEqualTo(80.00)
assertThat(listings[0].price.currency).isEqualTo("USD")
assertThat(listings[0].condition).isEqualTo("new")
Expand Down

0 comments on commit 2bcd9fb

Please sign in to comment.