@@ -170,23 +170,24 @@ object ScalaAnnotationIntrospector extends NopAnnotationIntrospector with ValueI
170
170
// Locate the constructor param that matches it
171
171
descriptor.properties.find(_.param.exists(_.index == creator.getCreatorIndex)) match {
172
172
case Some (pd) => {
173
- val mappedCreator = overrides.get(pd.name) match {
174
- case Some (refHolder) => WrappedCreatorProperty (creator, refHolder)
175
- case _ => creator
176
- }
177
173
if (applyDefaultValues) {
178
174
pd match {
179
175
case PropertyDescriptor (_, Some (ConstructorParameter (_, _, Some (defaultValue))), _, _, _, _, _) => {
180
- mappedCreator .withNullProvider(new NullValueProvider {
176
+ val updatedCreator = creator .withNullProvider(new NullValueProvider {
181
177
override def getNullValue (ctxt : DeserializationContext ): AnyRef = defaultValue()
182
-
183
178
override def getNullAccessPattern : AccessPattern = AccessPattern .DYNAMIC
184
179
})
180
+ updatedCreator match {
181
+ case cp : CreatorProperty => applyOverrides(cp, pd.name, overrides)
182
+ case cp => cp
183
+ }
184
+ }
185
+ case _ => {
186
+ applyOverrides(creator, pd.name, overrides)
185
187
}
186
- case _ => mappedCreator
187
188
}
188
189
} else {
189
- mappedCreator
190
+ applyOverrides(creator, pd.name, overrides)
190
191
}
191
192
}
192
193
case _ => creator
@@ -204,6 +205,14 @@ object ScalaAnnotationIntrospector extends NopAnnotationIntrospector with ValueI
204
205
}
205
206
}
206
207
208
+ private def applyOverrides (creator : CreatorProperty , propertyName : String ,
209
+ overrides : Map [String , ClassHolder ]): CreatorProperty = {
210
+ overrides.get(propertyName) match {
211
+ case Some (refHolder) => WrappedCreatorProperty (creator, refHolder)
212
+ case _ => creator
213
+ }
214
+ }
215
+
207
216
override def findValueInstantiator (config : DeserializationConfig , beanDesc : BeanDescription ,
208
217
defaultInstantiator : ValueInstantiator ): ValueInstantiator = {
209
218
0 commit comments