Skip to content

Commit ff6feb0

Browse files
authored
Merge pull request #974 from FasterXML/2.19
2.19
2 parents d3f35ea + 31886b0 commit ff6feb0

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

src/test/kotlin/com/fasterxml/jackson/module/kotlin/ReadValueTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class ReadValueTest {
1515
val src = defaultMapper.createParser("null")
1616
assertThrows<RuntimeJsonMappingException> {
1717
defaultMapper.readValue<String>(src)
18-
}.printStackTrace()
18+
}
1919
}
2020

2121
@Test
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package com.fasterxml.jackson.module.kotlin.test.github
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator
4+
import com.fasterxml.jackson.databind.DeserializationFeature
5+
import com.fasterxml.jackson.dataformat.xml.XmlMapper
6+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty
8+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement
9+
import com.fasterxml.jackson.module.kotlin.readValue
10+
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
11+
import org.junit.jupiter.api.Test
12+
import kotlin.test.assertEquals
13+
14+
class GitHub338 {
15+
data class Properties(
16+
@JacksonXmlProperty(localName = "NEW_DATE")
17+
val newDate: String?,
18+
@JacksonXmlProperty(localName = "BC_1MONTH")
19+
val oneMonth: String?
20+
)
21+
22+
data class Content(
23+
val properties: Properties
24+
)
25+
26+
data class Entry(
27+
val id: String,
28+
val updated: String,
29+
val content: Content
30+
)
31+
32+
@JacksonXmlRootElement(namespace = "http://www.w3.org/2005/Atom", localName = "feed")
33+
data class Feed @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) constructor(
34+
@JacksonXmlElementWrapper(useWrapping = false)
35+
val entry: List<Entry>
36+
)
37+
38+
val xml = """
39+
<feed xml:base="http://data.treasury.gov/Feed.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
40+
<entry>
41+
<id>http://data.treasury.gov/Feed.svc/DailyTreasuryYieldCurveRateData(1)</id>
42+
<updated>2020-05-08T22:36:11Z</updated>
43+
<content type="application/xml">
44+
<m:properties>
45+
<d:NEW_DATE m:type="Edm.DateTime">1997-01-02T00:00:00</d:NEW_DATE>
46+
<d:BC_1MONTH m:type="Edm.Double" m:null="true" />
47+
</m:properties>
48+
</content>
49+
</entry>
50+
<entry>
51+
<id>http://data.treasury.gov/Feed.svc/DailyTreasuryYieldCurveRateData(2)</id>
52+
<updated>2020-05-08T22:36:11Z</updated>
53+
<content type="application/xml">
54+
<m:properties>
55+
<d:NEW_DATE m:type="Edm.DateTime">1996-12-31T00:00:00</d:NEW_DATE>
56+
<d:BC_1MONTH m:type="Edm.Double" m:null="true" />
57+
</m:properties>
58+
</content>
59+
</entry>
60+
</feed>
61+
""".trimIndent()
62+
63+
@Test
64+
fun test() {
65+
val mapper = XmlMapper()
66+
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
67+
.registerKotlinModule()
68+
val expected = Feed(
69+
listOf(
70+
Entry(
71+
"http://data.treasury.gov/Feed.svc/DailyTreasuryYieldCurveRateData(1)",
72+
"2020-05-08T22:36:11Z",
73+
Content(Properties("1997-01-02T00:00:00", ""))
74+
),
75+
Entry(
76+
"http://data.treasury.gov/Feed.svc/DailyTreasuryYieldCurveRateData(2)",
77+
"2020-05-08T22:36:11Z",
78+
Content(Properties("1996-12-31T00:00:00", ""))
79+
)
80+
)
81+
)
82+
val actual = mapper.readValue<Feed>(xml)
83+
84+
assertEquals(expected, actual)
85+
}
86+
}

0 commit comments

Comments
 (0)