| 
 | 1 | +package io.github.projectmapk.jackson.module.kogera.zPorted.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 io.github.projectmapk.jackson.module.kogera.readValue  | 
 | 10 | +import io.github.projectmapk.jackson.module.kogera.registerKotlinModule  | 
 | 11 | +import org.junit.jupiter.api.Assertions.assertEquals  | 
 | 12 | +import org.junit.jupiter.api.Test  | 
 | 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