@@ -214,23 +214,22 @@ class ScalaAnnotationIntrospectorInstance(scalaAnnotationIntrospectorModule: Sca
214
214
// Locate the constructor param that matches it
215
215
descriptor.properties.find(_.param.exists(_.index == creator.getCreatorIndex)) match {
216
216
case Some (pd) => {
217
- val mappedCreator = overrides.get(pd.name) match {
218
- case Some (refHolder) => WrappedCreatorProperty (creator, refHolder)
219
- case _ => creator
220
- }
221
217
if (applyDefaultValues) {
222
218
pd match {
223
219
case PropertyDescriptor (_, Some (ConstructorParameter (_, _, Some (defaultValue))), _, _, _, _, _) => {
224
- mappedCreator .withNullProvider(new NullValueProvider {
220
+ val updatedCreator = creator .withNullProvider(new NullValueProvider {
225
221
override def getNullValue (ctxt : DeserializationContext ): AnyRef = defaultValue()
226
-
227
222
override def getNullAccessPattern : AccessPattern = AccessPattern .DYNAMIC
228
223
})
224
+ updatedCreator match {
225
+ case cp : CreatorProperty => applyOverrides(cp, pd.name, overrides)
226
+ case cp => cp
227
+ }
229
228
}
230
- case _ => mappedCreator
229
+ case _ => applyOverrides(creator, pd.name, overrides)
231
230
}
232
231
} else {
233
- mappedCreator
232
+ applyOverrides(creator, pd.name, overrides)
234
233
}
235
234
}
236
235
case _ => creator
@@ -246,6 +245,14 @@ class ScalaAnnotationIntrospectorInstance(scalaAnnotationIntrospectorModule: Sca
246
245
override def getFromObjectArguments (config : DeserializationConfig ): Array [SettableBeanProperty ] = {
247
246
overriddenConstructorArguments
248
247
}
248
+
249
+ private def applyOverrides (creator : CreatorProperty , propertyName : String ,
250
+ overrides : Map [String , ClassHolder ]): CreatorProperty = {
251
+ overrides.get(propertyName) match {
252
+ case Some (refHolder) => WrappedCreatorProperty (creator, refHolder)
253
+ case _ => creator
254
+ }
255
+ }
249
256
}
250
257
}
251
258
0 commit comments