Skip to content

Commit d108975

Browse files
committed
Undo change to eagerly remove disable constructors, factory methods
1 parent 279f69c commit d108975

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ protected void _addCreators(Map<String, POJOPropertyBuilder> props)
644644
final PotentialCreators creators = _potentialCreators;
645645

646646
// First, resolve explicit annotations for all potential Creators
647-
// (note: will skip ones annotated as DISABLED)
647+
// (but do NOT filter out DISABLED ones yet!)
648648
List<PotentialCreator> constructors = _collectCreators(_classDef.getConstructors());
649649
List<PotentialCreator> factories = _collectCreators(_classDef.getFactoryMethods());
650650

@@ -658,7 +658,10 @@ protected void _addCreators(Map<String, POJOPropertyBuilder> props)
658658
canonical = _annotationIntrospector.findPrimaryCreator(_config, _classDef,
659659
constructors, factories);
660660
}
661-
661+
// Next: remove creators marked as explicitly disabled
662+
_removeDisabledCreators(constructors);
663+
_removeDisabledCreators(factories);
664+
662665
// And then remove non-annotated static methods that do not look like factories
663666
_removeNonFactoryStaticMethods(factories, canonical);
664667

@@ -759,14 +762,23 @@ private List<PotentialCreator> _collectCreators(List<? extends AnnotatedWithPara
759762
for (AnnotatedWithParams ctor : ctors) {
760763
JsonCreator.Mode creatorMode = _useAnnotations
761764
? _annotationIntrospector.findCreatorAnnotation(_config, ctor) : null;
762-
// 06-Jul-2024, tatu: Let's immediately drop ones marked for ignoral
763-
if (creatorMode != JsonCreator.Mode.DISABLED) {
764-
result.add(new PotentialCreator(ctor, creatorMode));
765-
}
765+
// 06-Jul-2024, tatu: Can't yet drop DISABLED ones; add all (for now)
766+
result.add(new PotentialCreator(ctor, creatorMode));
766767
}
767768
return (result == null) ? Collections.emptyList() : result;
768769
}
769770

771+
private void _removeDisabledCreators(List<PotentialCreator> ctors)
772+
{
773+
Iterator<PotentialCreator> it = ctors.iterator();
774+
while (it.hasNext()) {
775+
// explicitly prevented? Remove
776+
if (it.next().creatorMode() == JsonCreator.Mode.DISABLED) {
777+
it.remove();
778+
}
779+
}
780+
}
781+
770782
private void _removeNonVisibleCreators(List<PotentialCreator> ctors)
771783
{
772784
Iterator<PotentialCreator> it = ctors.iterator();

0 commit comments

Comments
 (0)