Skip to content

Commit 1eaaa8b

Browse files
committed
Change property renaming logic a bit to avoid too-early conflict detection
1 parent e916bcf commit 1eaaa8b

File tree

2 files changed

+43
-4
lines changed

2 files changed

+43
-4
lines changed

src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertiesCollector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,15 +1043,15 @@ protected void _renameUsing(Map<String, POJOPropertyBuilder> propMap,
10431043
}
10441044
} else {
10451045
if (prop.hasSetter()) {
1046-
rename = naming.nameForSetterMethod(_config, prop.getSetter(), fullName.getSimpleName());
1046+
rename = naming.nameForSetterMethod(_config, prop.getSetterUnchecked(), fullName.getSimpleName());
10471047
} else if (prop.hasConstructorParameter()) {
10481048
rename = naming.nameForConstructorParameter(_config, prop.getConstructorParameter(), fullName.getSimpleName());
10491049
} else if (prop.hasField()) {
1050-
rename = naming.nameForField(_config, prop.getField(), fullName.getSimpleName());
1050+
rename = naming.nameForField(_config, prop.getFieldUnchecked(), fullName.getSimpleName());
10511051
} else if (prop.hasGetter()) {
10521052
// Plus, when getter-as-setter is used, need to convert that too..
10531053
// (should we verify that's enabled? For now, assume it's ok always)
1054-
rename = naming.nameForGetterMethod(_config, prop.getGetter(), fullName.getSimpleName());
1054+
rename = naming.nameForGetterMethod(_config, prop.getGetterUnchecked(), fullName.getSimpleName());
10551055
}
10561056
}
10571057
}

src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertyBuilder.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,20 @@ public AnnotatedMethod getGetter()
452452
_getters = curr.withoutNext();
453453
return curr.value;
454454
}
455-
455+
456+
/**
457+
* Variant of {@link #getGetter} that does NOT trigger pruning of
458+
* getter candidates.
459+
*/
460+
protected AnnotatedMethod getGetterUnchecked()
461+
{
462+
Linked<AnnotatedMethod> curr = _getters;
463+
if (curr == null) {
464+
return null;
465+
}
466+
return curr.value;
467+
}
468+
456469
@Override
457470
public AnnotatedMethod getSetter()
458471
{
@@ -484,6 +497,19 @@ public AnnotatedMethod getSetter()
484497
return curr.value;
485498
}
486499

500+
/**
501+
* Variant of {@link #getSetter} that does NOT trigger pruning of
502+
* setter candidates.
503+
*/
504+
protected AnnotatedMethod getSetterUnchecked()
505+
{
506+
Linked<AnnotatedMethod> curr = _setters;
507+
if (curr == null) {
508+
return null;
509+
}
510+
return curr.value;
511+
}
512+
487513
/**
488514
* Helper method called in cases where we have encountered two setter methods
489515
* that have same precedence and cannot be resolved. This does not yet necessarily
@@ -603,6 +629,19 @@ public AnnotatedField getField()
603629
return field;
604630
}
605631

632+
/**
633+
* Variant of {@link #getField} that does NOT trigger pruning of
634+
* Field candidates.
635+
*/
636+
protected AnnotatedField getFieldUnchecked()
637+
{
638+
Linked<AnnotatedField> curr = _fields;
639+
if (curr == null) {
640+
return null;
641+
}
642+
return curr.value;
643+
}
644+
606645
@Override
607646
public AnnotatedParameter getConstructorParameter()
608647
{

0 commit comments

Comments
 (0)