@@ -656,22 +656,25 @@ protected void _addCreators(Map<String, POJOPropertyBuilder> props)
656656 List <PotentialCreator > constructors = _collectCreators (_classDef .getConstructors ());
657657 List <PotentialCreator > factories = _collectCreators (_classDef .getFactoryMethods ());
658658
659- // Then find what is the Default Constructor (if one exists for type):
659+ // Then find what is the Primary Constructor (if one exists for type):
660660 // for Java Records and potentially other types too ("data classes"):
661661 // Needs to be done early to get implicit names populated
662- final PotentialCreator defaultCreator ;
662+ final PotentialCreator primaryCreator ;
663663 if (_isRecordType ) {
664- defaultCreator = JDK14Util .findCanonicalRecordConstructor (_config , _classDef , constructors );
664+ primaryCreator = JDK14Util .findCanonicalRecordConstructor (_config , _classDef , constructors );
665665 } else {
666- defaultCreator = _annotationIntrospector .findDefaultCreator (_config , _classDef ,
666+ // 02-Nov-2024, tatu: Alas, naming here is confusing: method properly
667+ // should have been "findPrimaryCreator()" so as not to confused with
668+ // 0-args default Creators...
669+ primaryCreator = _annotationIntrospector .findDefaultCreator (_config , _classDef ,
667670 constructors , factories );
668671 }
669672 // Next: remove creators marked as explicitly disabled
670673 _removeDisabledCreators (constructors );
671674 _removeDisabledCreators (factories );
672675
673676 // And then remove non-annotated static methods that do not look like factories
674- _removeNonFactoryStaticMethods (factories , defaultCreator );
677+ _removeNonFactoryStaticMethods (factories , primaryCreator );
675678
676679 // and use annotations to find explicitly chosen Creators
677680 if (_useAnnotations ) { // can't have explicit ones without Annotation introspection
@@ -682,30 +685,30 @@ protected void _addCreators(Map<String, POJOPropertyBuilder> props)
682685 creators .hasPropertiesBased ());
683686 }
684687
685- // If no Explicitly annotated creators (or Default one) found, look
688+ // If no Explicitly annotated creators (or Primary one) found, look
686689 // for ones with explicitly-named ({@code @JsonProperty}) parameters
687690 if (!creators .hasPropertiesBased ()) {
688691 // only discover constructor Creators?
689- _addCreatorsWithAnnotatedNames (creators , constructors , defaultCreator );
692+ _addCreatorsWithAnnotatedNames (creators , constructors , primaryCreator );
690693 }
691694
692- // But if no annotation-based Creators found, find/use Default Creator
695+ // But if no annotation-based Creators found, find/use Primary Creator
693696 // detected earlier, if any
694- if (defaultCreator != null ) {
697+ if (primaryCreator != null ) {
695698 // ... but only process if still included as a candidate
696- if (constructors .remove (defaultCreator )
697- || factories .remove (defaultCreator )) {
699+ if (constructors .remove (primaryCreator )
700+ || factories .remove (primaryCreator )) {
698701 // and then consider delegating- vs properties-based
699- if (_isDelegatingConstructor (defaultCreator )) {
702+ if (_isDelegatingConstructor (primaryCreator )) {
700703 // 08-Oct-2024, tatu: [databind#4724] Only add if no explicit
701704 // candidates added
702705 if (!creators .hasDelegating ()) {
703706 // ... not technically explicit but simpler this way
704- creators .addExplicitDelegating (defaultCreator );
707+ creators .addExplicitDelegating (primaryCreator );
705708 }
706- } else { // default creator is properties-based
709+ } else { // primary creator is properties-based
707710 if (!creators .hasPropertiesBased ()) {
708- creators .setPropertiesBased (_config , defaultCreator , "Primary" );
711+ creators .setPropertiesBased (_config , primaryCreator , "Primary" );
709712 }
710713 }
711714 }
@@ -717,7 +720,7 @@ protected void _addCreators(Map<String, POJOPropertyBuilder> props)
717720 final ConstructorDetector ctorDetector = _config .getConstructorDetector ();
718721 if (!creators .hasPropertiesBasedOrDelegating ()
719722 && !ctorDetector .requireCtorAnnotation ()) {
720- // But only if no default constructor available OR if we are configured
723+ // But only if no Default (0-args) constructor available OR if we are configured
721724 // to prefer properties-based Creators
722725 if ((_classDef .getDefaultConstructor () == null )
723726 || ctorDetector .singleArgCreatorDefaultsToProperties ()) {
@@ -753,7 +756,7 @@ private boolean _isDelegatingConstructor(PotentialCreator ctor)
753756 case DISABLED :
754757 case PROPERTIES :
755758 return false ;
756- default : // case DEFAULT:
759+ default :
757760 }
758761
759762 // Only consider single-arg case, for now
@@ -804,7 +807,7 @@ private void _removeNonVisibleCreators(List<PotentialCreator> ctors)
804807 }
805808
806809 private void _removeNonFactoryStaticMethods (List <PotentialCreator > ctors ,
807- PotentialCreator defaultCreator )
810+ PotentialCreator primaryCreator )
808811 {
809812 final Class <?> rawType = _type .getRawClass ();
810813 Iterator <PotentialCreator > it = ctors .iterator ();
@@ -814,8 +817,8 @@ private void _removeNonFactoryStaticMethods(List<PotentialCreator> ctors,
814817 if (ctor .isAnnotated ()) {
815818 continue ;
816819 }
817- // Do not trim canonical either
818- if (defaultCreator == ctor ) {
820+ // Do not trim Primary creator either
821+ if (primaryCreator == ctor ) {
819822 continue ;
820823 }
821824 // Copied from `BasicBeanDescription.isFactoryMethod()`
@@ -932,14 +935,14 @@ private boolean _isExplicitlyAnnotatedCreatorPropsBased(PotentialCreator ctor,
932935 }
933936
934937 private void _addCreatorsWithAnnotatedNames (PotentialCreators collector ,
935- List <PotentialCreator > ctors , PotentialCreator defaultCtor )
938+ List <PotentialCreator > ctors , PotentialCreator primaryCtor )
936939 {
937940 final List <PotentialCreator > found = _findCreatorsWithAnnotatedNames (ctors );
938- // 16-Jul-2024, tatu: [databind#4620] If Default Creator found, it
941+ // 16-Jul-2024, tatu: [databind#4620] If Primary Creator found, it
939942 // will be used to resolve candidate to use, if any
940- if (defaultCtor != null ) {
941- if (found .contains (defaultCtor )) {
942- collector .setPropertiesBased (_config , defaultCtor , "implicit" );
943+ if (primaryCtor != null ) {
944+ if (found .contains (primaryCtor )) {
945+ collector .setPropertiesBased (_config , primaryCtor , "implicit" );
943946 return ;
944947 }
945948 }
0 commit comments