@@ -55,6 +55,13 @@ object CreatorTest
55
55
}
56
56
}
57
57
58
+ case class CaseClassAlternativeConstructor (script : String , dummy : Int ) {
59
+ @ JsonCreator
60
+ def this (script : String ) = {
61
+ this (script, 0 )
62
+ }
63
+ }
64
+
58
65
case class MultipleConstructors (script : String , dummy : Int ) {
59
66
def this (script : String ) = {
60
67
this (script, 0 )
@@ -124,6 +131,19 @@ class CreatorTest extends DeserializationFixture {
124
131
roundTrip shouldEqual orig
125
132
}
126
133
134
+ it should " use secondary constructor annotated with JsonCreator (Case Class)" in { f =>
135
+ val orig = CaseClassAlternativeConstructor (" abc" , 42 )
136
+ val bean = f.writeValueAsString(orig)
137
+ bean shouldBe """ {"script":"abc","dummy":42}"""
138
+ val roundTrip = f.readValue(bean, classOf [CaseClassAlternativeConstructor ])
139
+ roundTrip shouldEqual orig
140
+
141
+ // this part of test relies on the 2nd constructor being used (with the JsonCreator annotation)
142
+ val bean2 = """ {"script":"abc"}"""
143
+ val cc2 = f.readValue(bean2, classOf [CaseClassAlternativeConstructor ])
144
+ cc2 shouldEqual CaseClassAlternativeConstructor (" abc" , 0 )
145
+ }
146
+
127
147
it should " use primary constructor if no JsonCreator annotation" in { f =>
128
148
val orig = MultipleConstructors (" abc" , 42 )
129
149
val bean = f.writeValueAsString(orig)
0 commit comments